如何从历史PDF中提取表格?

时间:2019-02-23 01:33:47

标签: pdf ocr data-extraction pdf-extraction python-camelot

我需要从file的类似格式的表中提取数据。有一些OCR错误,但我有一种自动方法来纠正它们。

我尝试过:

  • ABBYY Finereader表检测。
  • 塔布拉表提取
  • 卡米洛特表提取
  • 自定义python code

问题:广告工具在检测桌子边缘时效果很差。这些表格遵循类似的通用格式,但是每次扫描的对齐方式略有不同,因此对寄宿生进行硬编码也不起作用。

问题:你们知道一种检测表开始位置然后应用一些模板之一的好方法吗?

对于此类工作的其他任何提示,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

更新2/26: 我可以解决我自己的问题,尽管可以使用快速或更好的解决方案进行响应。

主要问题之一是表的尺寸大致相似,但页面之间存在差异。扫描的图像在页面之间也略有偏移,从而出现两个对齐问题。我当前的工作流程可以同时解决这两个问题。

表格类型对齐

解决方案:

  1. 使用ABBYY中的图像编辑工具水平剪切每页。这样每页上都有一张表格。
  2. 请注意,有4种表格类型。偶数页和奇数页具有单独的布局。每页的第一个表格都包含一个日期字段。
  3. 给出第一个表偶数,第一个表奇数,reg表偶数,reg表奇数。使用固定的表区域和列一次处理一种类型,可以解决由于表布局不同而导致的对齐问题。

图像对齐

相同表格类型的图像仍未对齐,因此无法在(x,y)坐标中指定表格布局。每个图片中的表格位置都不同。

我需要根据桌子的位置对齐图像,但是没有检测到桌子,就没有很好的方法。

我以一种有趣的方式解决了这个问题,但是我首先尝试了以下步骤。

  1. 使用Opencv检测垂直线。结果:没有很好地检测到模糊的线条。经常会错过一些行,使其无法对齐。
  2. 使用“扫描裁缝”检测内容。结果:由于图像中的斑点,检测算法会在某些文件中过多裁剪某些表,而在其他文件中则包含空白。去除斑点没有帮助。
  3. 使用具有宽表区域的Camelot,没有列值。结果:这在其他情况下可能效果很好,但是Camelot在这里失败了。报告的数据低至美分,每三位数之间有空格。这导致00在几列中错位。

解决方案:

将图像切成表格类型对齐部分中介绍的表格后,请使用Photoshop中的“自动对齐图层”功能对齐图像。

分步解决方案:

  1. 打开Photoshop
  2. 使用以下方式将一种表类型的图像加载到单个文件中:文件脚本-将文件加载到堆栈中
  3. 使用:编辑-自动对齐图层
  4. 使用裁剪工具使每个文件的大小相同。
  5. 将每个图像导出为自己的文件:File-Export-Layers到文件
  6. 对四种表类型分别使用ABBYY OCR编辑器,并使用GUI编辑器对列和行进行硬编码。
  7. 从ABBYY导出为CSV
  8. 使用类似clean.py之类的东西来删除空格和错误字符。

完成!根据需要合并每个表的文件。完成项目后,我将发布用于执行此操作的python代码。清理后,我也将发布数据。

答案 1 :(得分:0)

答案 2 :(得分:0)

代替Camelot table_areas参数(它指定固定边界),您可以尝试使用table_regions参数指定表可能所在的区域(Camelot将仅分析指定区域以查找表)。

https://camelot-py.readthedocs.io/en/master/user/advanced.html#specify-table-regions

请及时通知我们。