【问题标题】:Table data extraction from image or scanned documents (Not pdf)从图像或扫描文档中提取表格数据(非 pdf)
【发布时间】:2017-04-02 01:51:26
【问题描述】:
我想从图像或扫描文档中提取表格数据,并将标题字段映射到主要在保险文档中的特定值。我尝试逐行提取它们,然后使用它们在页面上的位置映射它们。我通过定义表格开始和结束枢轴来给出表格边界,但它没有给我正确的结果,因为标题有时有多行(我已经在 php 中实现了这个)。我也想知道我是否可以使用机器学习来实现同样的目标。
对于 pdf 文档,我使用了 tabula-java,这对我来说效果很好。图像是否也有类似类型的实现?
Insurance_Image
文档的类型与上面链接中的类似,但服务提供商不同,因此提取此类数据的通用方法将非常有用。
在上图中,我想要诸如 Make = YAMAHA、MODEL= FZ-S、CC= 153 等地图值
谢谢。
【问题讨论】:
标签:
php
python
image-processing
machine-learning
ocr
【解决方案1】:
我肯定会去Tesseract,一个非常好的 OCR 引擎。我一直在成功地使用它来阅读电子邮件中嵌入的各种文档(PDF、图像),我的一位同事将它用于与您的用例非常相似的事情——从发票中读取特定字段。
解析文档后,只需使用正则表达式选择感兴趣的字段。
我认为机器学习不会对您特别有用,除非您打算构建自己的 OCR 引擎。我会从现有的库开始,它们提供了非常好的性能。
【解决方案2】:
在没有太多 OCR 知识的情况下,最简单、最可靠的方法是:
- 取一个空模板作为参考,并标记您需要从中提取数据的框坐标。给它们贴上标签并保存以备将来使用。每个模板只执行一次。
- 现在在阅读相同模板时,调整其大小以匹配参考模板尺寸(如果尚未匹配)。
- 您已经拥有每个框的坐标并知道它应该包含哪些数据(因为您在第一步中标记并保存了它们)。
这意味着现在您只需分析每个框中包含的像素即可知道其中写的是什么。
这意味着给定一个标签框列表(您在第一步中提取的),您应该能够获取每个框中的数据。如果此数据是键入的而不是手写的,则提取的数据将更容易分析或使用简单的 OCR 库对其进行任何操作。
或者,如果数据的大小和字体始终与上面的示例模板相同,那么您可以构建自己的具有该字体和大小的字母的小型数据库。或者也许是完整的话?取决于每个框的可能答案。
无论如何,这不是迄今为止最好的方法,但它肯定会以最少的努力和 OCR 知识完成工作。