我想开发一个应用程序,它应该能够识别计算机打印卡中的某些数字(位于卡的固定位置),然后将它们发送到网络服务。
我知道我应该使用OCR,但我不确定哪种产品符合我的需求。如果您可以向我推荐任何市场上的api或产品(开源不是必须的,但非常受欢迎:),这将有助于我在这个项目中。
除此之外,我还有另一个技术问题:您是否会在设备中实施OCR识别,或者您是使用网络服务进行的,并将其称为将图片传递给它?这两种模式的优缺点是什么?
答案 0 :(得分:2)
如果您需要在图像上定位特定字段的解决方案,那么它不仅仅是OCR,而是数据捕获任务。有几种方法可以解决这个问题:编写基于OCR输出的现场检测解决方案,如其他答案中所建议的那样,或者使用专门为此设计的工具包,并提供用于定义布局结构的可视化工具。
第一种方式需要更多编程,但在许可方面更便宜。你不仅可以选择纪念性的,而且还可以选择开源的OCR库,比如Tesseract,它可能并不完美,但经过一些调整和字体训练可以很好地完成许多任务。
当处理低质量图像(以及通过手机拍摄的图像将占据相当大部分的图像)时,您的现场定位解决方案将不得不关注某些部分图像未被识别或错误识别并且仍能够找到你想要的字段。您可能还需要交叉检查多个识别变体以提供合理的组合。
这不是微不足道的,需要一些时间才能使其可靠运行。但仍然可行,只要您没有非常复杂的文档,并且只有一个布局,并且它是非常可预测的。一旦您拥有代码,就可以在服务器和手机上运行。
如果您正在寻找更复杂的文档和各种布局变体,那么在纯代码中编写这种逻辑可能会变得非常困难。在这种情况下,最好寻找更高级的数据捕获技术。有很多Data Captrue产品,但我知道只有一种以API的形式提供:http://www.abbyy.com/flexicapture_engine/
它有两个组成部分。一个是用于创建和调试文档描述的可视化工具。您只需描述文档中字段位置的逻辑,技术就会关注其余部分:对不同变体进行投票,注意重新点火中的错误等。您可以定义多个备用文档结构和规则,以检查文档布局中是否有一个值与另一个值相对应。这些规则也会影响选择最佳识别变体。
第二个组件实际上是API。您只需将其插入应用程序并加载文档模板描述即可。在移动识别方案中,它只能用作服务器后端处理,因为它太强大而且太重,无法适应移动设备。然而,好的一面是你不必将它移植到每个移动操作系统,它使用全功能OCR技术而不是适合移动资源的受限制技术。该工具包确实包含一些先进的图像处理技术,使其在手机拍摄的图像上更好地工作。
免责声明:我为ABBYY工作。