2014-11-04 295 views
4

我的任務是爲基於Web的應用程序添加pdf417(駕駛執照)解碼/閱讀任務。pdf417 Javascript的讀取/解碼

輸入:駕照的圖像。 (400-600 dpi)

處理:檢測/解析pdf417數據。

輸出:解析pdf417數據。

限制:它是一個基於Web的應用程序,通過IE,Chrome,Safari運行。我不能在本地機器上安裝任何東西。

所以我一直在調查了幾天,我還沒有想出一個好方法來完成這項工作。理想情況下,整個解碼將在使用Javascript/Jquery的客戶端機器上進行。不過,我發現沒有可以做到這一點的腳本/庫。我發現的唯一其他選項可能是java servlet或php擴展;這兩者都不理想,因爲上傳時間會讓我在分配時間的時候受到影響。

有誰知道任何可以處理這個問題的JavaScript或JQuery庫嗎?

或者更好的方法來結合我沒有看到的功能?

回答

5

我的貢獻是雙重的。首先(好消息!)我100%肯定希望你想使用JavaScript是可以實現的CAVEAT:Chrome/Firefox可能會一切正常,但它只適用於更新版本的Safari(6+)和IE(IE10 + )。來源http://caniuse.com/filereader

其次,我希望我的貢獻能夠讓你在解決問題的過程中取得很大的進展,儘管我承認我還沒有拿出PDF417圖像閱讀算法來解決這個難題。

OK這裏,我們去: 一)有JavaScript的(在客戶機上運行)提供GUI給用戶,讓他們選擇從本地文件系統中的文件(其駕駛執照的照片)然後...... b)將其帶入JavaScript應用程序(全部不涉及服務器或Java);和... c)...讓JavaScript解析它並解釋PDF417條形碼的暗/亮模式,以推斷其中編碼的「明文」人類可讀數據。我提到Java不是一種選擇,因爲Java applet似乎永遠不會被允許在Chrome中運行,儘管Java有一個很好的圖像數據處理軟件包,可以很好地對此進行排序。

理解和代碼所需的)

HTML表單已經允許程序員使用一個文件上傳領域多年。你需要:

<input type="file" id="myFileInput"> 

理解和代碼B所需要)

此外,對事物的JavaScript端,你需要(最重要的)使用HTML5的FileReader的API(見http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api )...面對面的人:

var reader = new FileReader(); 
// ... and ... 
reader.readAsDataURL(file); 

readAsDataURL()將會給你的base64編碼的二進制數據是要爲你工作,當談到開槽與實例圖像的實例的src財產var ing = new Image();。即將src設置爲data:image/gif;base64,*data*完成此操作後,您至少可以在您的網頁上顯示駕駛執照。後來我提到了這個新實例化的圖像,並通過Canvas的2D上下文顯示,作爲將新圖像添加到DOM中的appendChild()的替代方法,但我們稍後會介紹這一點。到目前爲止,我所討論的所有內容都可以在blog.teamtreehouse.com的代碼筆演示(http://codepen.io/matt-west/pen/CfilG)上看到。也爲​​更初學者友好的交談,通過你可能想要觀看這部影片(http://www.sitepoint.com/reading-images-data-using-canvas-javascript/),但要有耐心,只要你想對圖片上傳的東西,並只顯示被提到5mins30secs。

理解和所需的代碼對於C)

此,我遭遇了挫折,因爲我沒能準確地找到你所追求的,但我沒有找到這對UPC條碼格式:http://badassjs.com/post/654334959/barcode-scanning-in-javascript(演示= http://tobeytailor.s3.amazonaws.com/get_barcode_from_image/index.html)。我不確定,但我認爲要實現這個目標,Tobey必須從new Image()(一旦其src已經通過fileReader() API填充數據)中的數據調用並在Canvas 2d上下文中使用它。它證明,是可以做到的,但在寫入算法知道如何解釋這些數據,你不得不瞭解PDF417:我發現這些鏈接是有用的出發地

http://en.wikipedia.org/wiki/PDF417

http://omniplanar.com/PDF417-2D-Barcode.php

好運氣!

2

我們做了一個原型做你想做的事情,作爲我們創建的一部分 - https://github.com/PeculiarVentures/js-zxing-pdf417,它處理PDF417解析。

此解決方案是100%客戶端。

我們發現相機分辨率問題和缺乏自動對焦的問題,但是如果您正在從文件中讀取代碼,則不會有任何問題。

我也有信心在網絡攝像頭捕獲的圖片(幀平均,銳化過濾器等)的一些預處理,你甚至可以讓網絡攝像頭的情況下可靠地工作。