1

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

我努力了:

  • ABBYY Finereader 表格检测。
  • 表格提取
  • Camelot 表提取
  • 自定义python代码

问题:广告工具在检测桌子边缘方面非常糟糕。这些表格遵循类似的一般格式,但每次扫描的对齐方式略有不同,因此硬编码寄宿生也不起作用。

问题:你们知道检测表格从哪里开始然后应用几个模板之一的好方法吗?

非常感谢此类工作的任何其他提示。

4

3 回答 3

4

更新 2/26: 我解决了我自己的问题,但可以随时用快速或更好的解决方案做出回应。

主要问题之一是表格的尺寸大致相似,但它们因页面而异。扫描的图像在页面之间也略有偏移,导致两个对齐问题。我目前的工作流程解决了这两个问题,如下所示。

表格类型对齐

解决方案:

  1. 使用 ABBYY 中的图像编辑工具水平剪切每一页。这会在每一页上提供一个表格。
  2. 请注意,有 4 种表类型。偶数页和奇数页有不同的布局。每页上的第一个表格都包含一个日期字段。
  3. 这给出了 first-table-even、first-table-odd、reg-table-even、reg-table-odd。使用固定的表格区域和列一次处理一种类型可修复由于表格布局的差异而导致的错位。

图像对齐

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

我需要根据桌子位置对齐图像,但在没有检测到桌子的情况下,没有好的方法可以做到这一点。

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

  1. 使用 Opencv 检测垂直线。结果:没有很好地检测到微弱的线条。经常会错过线条,使其无法对齐。
  2. 使用 Scan Tailor 检测内容。结果:检测算法会在某些文件中过多地裁剪某些表格,而在其他文件中由于图像中的斑点而包含空白。去斑没有帮助。
  3. 将 Camelot 用于宽表区域,无列值。结果:这在其他情况下可能会很好用,但 Camelot 倒在了这里。数据报告到美分,每三位数之间有空格。这导致 00 在几列中错位。

解决方案:

在将图像切割成表格类型对齐部分中说明的表格后,使用 Photoshop 中的自动对齐图层功能来对齐图像。

分步解决方案:

  1. 打开 Photoshop
  2. 使用以下方法将一种表类型的图像加载到单个文件中:File-Scripts-Load Files into Stack
  3. 使用:编辑-自动对齐图层
  4. 使用裁剪工具使每个文件大小相同。
  5. 将每个图像导出为自己的文件:File-Export-Layers to files
  6. 对 4 种表类型中的每一种都使用 ABBYY OCR 编辑器,使用 GUI 编辑器对列和行进行硬编码。
  7. 从 ABBYY 导出为 CSV
  8. 使用clean.py 之类的东西来删除空格和坏字符。

完毕!随意组合每个表的文件。当我完成项目时,我将发布我的 python 代码来执行此操作。清理后,我也会发布数据。

于 2019-02-26T22:49:32.800 回答
1

这里有一个免费的在线工具https://www.pdftron.com/pdf-tools/pdf-table-extraction/

相关博客https://www.pdftron.com/blog/parsing-extraction/table-extraction-and-pdf-to-xml-with-pdfgenie/参考 PDFGenie 命令行工具

于 2019-02-25T06:14:07.123 回答
0

您可以尝试使用 table_regions 参数来指定表格可能所在的区域,而不是 Camelot table_areas 参数(它指定固定边界)(Camelot 只会分析指定区域以查找表格)。

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

请随时更新。

于 2019-02-26T15:50:54.803 回答