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