2014-11-04 299 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%客户端。

我们发现相机分辨率问题和缺乏自动对焦的问题,但是如果您正在从文件中读取代码,则不会有任何问题。

我也有信心在网络摄像头捕获的图片(帧平均,锐化过滤器等)的一些预处理,你甚至可以让网络摄像头的情况下可靠地工作。