基于规则的 PDF 文本提取,用于真实的账单和发票



我必须从发票和账单pdf文件中提取文本

文件布局可能会变得复杂,尽管它主要由表格填充。

我已经读过几十篇关于pdf格式的文章,我们的大脑掌握它是多么容易

,机器理解它的结构是多么困难。

还下载了一些工具,如python的pdfminer和一些java工具,有些甚至具有基于规则的布局提取,如LA-PDBtext这些都是很棒的库,留给你最后一步。

Adobe还有一个名为exportPdf的在线服务,但无法定制。

底线,我知道为了从结构化的pdf文件中提取文本并将其转换为XML,应该有一定程度的手动工作。

我还发现了From Data Extractor,这是一个非自由工具,能够设置提取规则,声称可以完成这项工作,尽管很难找到合适的手册,并且它只能在Windows上运行。

我想我什至可以尝试将这些文件转换为图像并尝试 tesseract-ocr,但决定在我花更多时间之前在这里寻求建议。

如果有这样的经验的人给我一个提示,我将不胜感激。

我已经做了很多PDF提取,我可以确认,因为您已经发现开始这可能是一个痛苦的过程。要了解的重要事情之一是,PDF中没有"表格"的概念,只有恰好周围有线条的文本。此外,无法保证 PDF 代码中文本的线性顺序实际上与打印时的视觉顺序匹配。换句话说,不能保证"hello world"是按该顺序编写的,它可以是draw 'word' at coord 20 then draw 'hello' at coord 10。大多数PDF创建者不会这样做,但仍然无法保证。PDF创建者(InDesign,Illustrator等)越有创意,文本就越难被表达出来。实际上,一旦设计师开始过多地弄乱字体,一些程序有时会一次输出一个字符的单词,每次都会稍微改变字体。

也就是说,我推荐你看过的第一个,LA-PDFText。您可以在发现模式 (blockify) 下运行它,您可以从中创建规则。我不再安装Java,所以我无法测试它,但它似乎很有希望。

您的第二个,A-PDF表单数据提取器,仅适用于实际的PDF表单。如果是这种情况,我建议只使用像iText/iTextSharp这样的开源解决方案。

最后一个 OCR 让我畏缩。我只是无法想象通过这些箍会比解析 PDF 获得更好的文本表示。但话又说回来,PDF是一种视觉格式,所以也许它会。

就我个人而言,我使用iText/iTextSharp来做这种事情,但我也喜欢以艰难的方式做事。

目前尚不清楚您是在寻找开发工具来自动从账单和发票中提取数据,还是只是为了非开发人员可以使用的一次性工具(实用程序)?

无论如何,这里有一些专门的工具,包括他们使用的引擎:

  1. Tabula(开源,专门设计用于从PDF表格中提取数据。可以导出 shell 脚本进行批处理,作为本地主机 Web 服务运行,由 JRuby Tabula 引擎提供支持)
  2. Viet OCR(开源.NET桌面实用程序,用于从PDF和图像中提取文本,基于tesseract oct引擎)
  3. Bytescout PDF Viewer(免费软件闭源.NET实用程序,检测并提取表格,包括扫描的发票,由PDF提取器SDK提供支持)

免责声明:我为ByteScout工作。

最新更新