【问题标题】:Rule based PDF text extraction for verious bills and invoices基于规则的PDF文本提取verious账单和发票
【发布时间】:2023-03-13 06:05:01
【问题描述】:

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

文件布局可能会变得复杂,尽管其中大部分都是表格。

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

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

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

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

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

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

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

【问题讨论】:

  • 除非这些 PDF 符合 PDF/A-1a,否则您需要做很多工作 - 您基本上必须进行 OCR。 PDF 不是正确的格式;尝试以结构正确的 XML 或 EDIFACT 形式获取发票和账单。
  • 嘿,我知道这是一篇旧帖子,但试试 Tabula github.com/jazzido/tabula-extractor

标签: pdf text-extraction


【解决方案1】:

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

也就是说,我推荐您查看的第一个,LA-PDFText。您可以在 discovery mode (blockify) 中运行它,您可以从中创建规则。我没有再安装 Java,所以我无法对其进行测试,但它看起来很有希望。

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

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

我个人使用iText/iTextSharp 处理这种事情,但我也喜欢用艰难的方式做事。

【讨论】:

    【解决方案2】:

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

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

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

    免责声明:我为 ByteScout 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多