pdf417 Javascript阅读/解码

时间:2014-11-04 20:22:07

标签: javascript jquery html5 decoder pdf417

我的任务是为基于网络的应用添加pdf417(驾驶执照)解码/阅读。

输入:驾驶执照的图像。 (400-600 dpi)

处理:检测/解析pdf417数据。

输出:解析pdf417数据。

限制:它是一个基于网络的应用程序,通过IE,Chrome,Safari运行。我无法在本地计算机上安装任何东西。

所以我现在已经调查了几天,我还没有想出一个很好的方法来完成这项工作。理想情况下,整个解码将使用Javascript / Jquery在客户端计算机上进行。但是我发现没有可以执行此操作的脚本/库。我发现的唯一其他选项可能是java servlet或php扩展;这两个都不理想,因为上传时间会让我超过我的时间分配。

有没有人知道任何可以处理此问题的javascript或JQuery库?

或许是一种更好的方法来整合我没有看到的这个功能?

3 个答案:

答案 0 :(得分:6)

我的贡献是双重的。首先(好消息!)我100%肯定希望你想要使用JavaScript是可以实现的CAVEAT:Chrome / Firefox可能都可以,但它只适用于更现代版本的Safari(6+)和IE(IE10 + )。来源http://caniuse.com/filereader

其次,我希望我的贡献可以帮助你解决问题,尽管我承认我还没有提出PDF417图像阅读算法,这将是这个难题的最后一部分。

好我们走了: a)让JavaScript(在客户机上运行)向用户提供GUI,允许他们从本地文件系统中选择一个文件(驾驶执照的照片),然后...... b)将它带入JavaScript应用程序(所有这些都不涉及服务器或Java);和...... c)...用JavaScript解析它并解释PDF417条形码的暗/亮模式,以推断其中编码的“明文”人类可读数据。虽然Java有一个很好的图像数据处理软件包可以很好地分类到这个东西,但我认为Java不会像Java小程序一样,它似乎永远不会被允许在Chrome中运行。

a)

所需的理解和代码

HTML表单允许程序员使用文件上载字段多年。你需要:

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

b)

所需的理解和代码

此外,在JavaScript方面,您需要(最重要的是)使用HTML5 FileReader Api(请参阅http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api)... vis-a-vis:

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

readAsDataURL()将为您提供base64-encode二进制数据,当您插入使用{{实例化的图像实例的src属性时,该数据将对您有用。 1}}。即将var ing = new Image();设置为src完成后,您至少可以在网页中显示驾驶执照。后来我提到了这个新实例化的图像并通过Canvas的2D上下文显示,只是将appendChild()'将新图像添加到DOM中,但我们将在一分钟内完成。我到目前为止所讨论的所有内容都可以在blog.teamtreehouse.com的代码笔演示(http://codepen.io/matt-west/pen/CfilG)中看到。另外,对于data:image/gif;base64,*data*更适合初学者的友好交谈,您可能希望观看此视频(http://www.sitepoint.com/reading-images-data-using-canvas-javascript/),但请耐心等待您想要的图片上传和显示内容仅提及5分30秒。< / p>

c)

所需的理解和代码

这是我解开的地方,因为我没有找到你到底发生了什么,但我确实找到了UPC格式的条形码:http://badassjs.com/post/654334959/barcode-scanning-in-javascript(demo = http://tobeytailor.s3.amazonaws.com/get_barcode_from_image/index.html)。我不确定,但我认为要实现这一点,Tobey必须蚕食来自FileReader()的数据(一旦new Image()通过src API填充了数据)并使用它Canvas 2d上下文。它证明了它可以完成但是在编写算法时知道如何解释你必须理解的数据PDF417:我发现这些链接是有用的起始位置

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

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

祝你好运!

答案 1 :(得分:3)

我们做了一个完全按照你想做的事做的原型,作为我们创建的一部分 - https://github.com/PeculiarVentures/js-zxing-pdf417处理PDF417解析。

此解决方案是100%客户端。

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

我对网络摄像头拍摄的图像(帧平均,锐化滤镜等)进行一些预处理也很有信心,甚至可以使网络摄像机外壳可靠地工作。

答案 2 :(得分:3)

Emscripten https://github.com/kripken/emscripten提供了一个准备好的根目录,可以将C ++编译为JavaScript。在https://www.newtonapples.net/PDF417_demo/USBcam_demo.html有一个演示交叉编译的PDF417阅读器,它将在浏览器(Chrome或Firefox)中以javascript的形式阅读PDF417条形码,附带一个像样的USB网络摄像头。然而,该代码是商业性的非开源。