首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pdf417脚本读取/解码

pdf417脚本读取/解码
EN

Stack Overflow用户
提问于 2014-11-05 04:22:07
回答 3查看 10.3K关注 0票数 6

我的任务是为一个基于web的应用程序添加pdf417 (驾照)解码/读取功能。

输入:驾照图片。(400-600 dpi)

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

输出:解析pdf417数据。

局限性:这是一个基于web的应用程序,通过IE,Chrome,Safari运行。我不能在本地机器上安装任何东西。

所以我已经调查了几天了,我还没有想出一个好的方法来实现这一点。理想情况下,整个解码将使用Javascript/Jquery在客户端机器上进行。但是,我还没有找到可以做到这一点的脚本/库。我找到的唯一其他选项可能是java servlet或php扩展;这两个都不是理想的选择,因为上传时间会让我超时。

有没有人知道有什么javascript或JQuery库可以处理这个问题?

或者是一种更好的方式来整合这个我看不到的功能?

EN

回答 3

Stack Overflow用户

发布于 2014-11-05 09:34:40

我的贡献是双重的。首先(好消息!)我100%确定你想要用JavaScript做的事情是可以实现的警告: Chrome / Firefox可能是可以的,但它只能在更现代的Safari (6+)和IE (IE10+)版本中工作。源http://caniuse.com/filereader

其次,我希望我的贡献能帮助您解决这个问题,尽管我承认我还没有想出PDF417图像读取算法,这将是这个难题的最后一块。

OK,我们开始: a)让JavaScript (在客户机上运行)向用户呈现一个图形用户界面,允许他们从本地文件系统(驾照的图片)中选择一个文件,然后...b)将其引入JavaScript应用程序(全部不涉及服务器或Java);以及……c) ...have JavaScript对其进行解析,并解释PDF417条形码的暗/亮图案,以推断编码在其中的“明文”人类可读数据。我提到Java不是一个选项,因为Java applet似乎永远不会被允许在Chrome中运行,尽管Java有一个很好的图像数据处理包,它很好地解决了这个问题。

a)所需的理解和代码

多年来,HTML表单允许程序员使用文件上传域。您需要:

代码语言:javascript
复制
<input type="file" id="myFileInput">

b)所需的理解和代码

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

代码语言:javascript
复制
var reader = new FileReader();
// ... and ...
reader.readAsDataURL(file);

在这里,readAsDataURL()将为您提供base64编码的二进制数据,当它插入到使用var ing = new Image();实例化的图像实例的src属性中时,它将为您工作。例如,将src设置为data:image/gif;base64,*data*完成后,您至少可以在您的网页中显示驾照。稍后,我会提到使用这个新实例化的图像并通过Canvas的2D上下文进行显示,作为将新图像导入DOM的appendChild()的替代方法,但我们马上就会讲到这一点。到目前为止,我所讨论的都是在blog.team through.com的代码笔演示(http://codepen.io/matt-west/pen/CfilG)上的一个动作中看到的。另外,如果您想要对FileReader()有更多的初学者友好的讨论,您可能想要观看此视频(http://www.sitepoint.com/reading-images-data-using-canvas-javascript/),但是要耐心等待,因为您想要的关于图像上传和显示的内容只在5分30秒内被提及。

c)所需的理解和代码

这就是我失败的地方,因为我没有设法找到你想要的东西,但我确实找到了UPC格式的条形码:http://badassjs.com/post/654334959/barcode-scanning-in-javascript (demo = 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

祝好运!

票数 7
EN

Stack Overflow用户

发布于 2016-12-09 16:13:28

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

这个解决方案是100%的客户端。

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

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

票数 5
EN

Stack Overflow用户

发布于 2017-08-15 00:12:22

Emscripten https://github.com/kripken/emscripten提供了一个现成的根目录来将C++编译成JavaScript。在https://www.newtonapples.net/PDF417_demo/USBcam_demo.html上有一个演示交叉编译的PDF417阅读器,它可以在连接了像样的U盘摄像头的浏览器(Chrome或Firefox)中读取javascript中的PDF417条形码。然而,代码是商业的,而不是开源的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26744312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档