7

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

文件布局可能会变得复杂,尽管它大部分都充满了表格。

我已经阅读了几十篇关于 pdf 格式的文章,我们的大脑掌握它是多么容易,而机器理解它的结构是多么困难。

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

Adobe 也有一个名为 exportPdf 的在线服务,但它不能自定义

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

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

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

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

4

2 回答 2

7

我已经完成了很多 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来处理这类事情,但我也喜欢以艰难的方式做事。

于 2012-04-17T13:35:03.890 回答
3

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

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

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

免责声明:我为 ByteScout 工作。

于 2015-03-02T11:50:37.083 回答