12

我有(相同的)数据保存为 GIF 图像文件和 PDF 文件,我想将其解析为 HTML 或 XML。数据实际上是我大学食堂的菜单。这意味着每周都会解析一个新版本的文件!通常,这些文件包含一些页眉和页脚文本,以及一个充满其他数据的表格。我已经阅读了一些关于 stackoverflow 的帖子,并且我也开始尝试将表格数据解析为 HTML/XML:

PDF格式

  • PDFBox || iText (Java)
  • 谷歌文档导入
  • PDF2HTML || PDF2表格

动图

  • 正方体-OCR

我从使用 PDFBox 解析 PDF 文件中得到了最好的结果,但仍然(随着菜单每周更改),它还不够可靠。我收到的 HTML 有时包含更多,有时更少的“段落”(<p>),因此我无法足够精确地解析数据。

这就是为什么我想知道是否有其他方法可以做到这一点?

4

8 回答 8

10

Tabula是 JRuby Web 界面上一个很好的开始,用于从任意 PDF 中提取 CSV/TSV 表。

于 2014-01-29T14:50:05.550 回答
9

我已经实现了自己的算法(它的名字是traprange)来解析 pdf 文件中的表格数据。

以下是一些示例 pdf 文件和结果:

  1. 输入文件:sample-1.pdf,结果:sample-1.html
  2. 输入文件:sample-4.pdf,结果:sample-4.html

在traprange访问我的项目页面

或我在traprange的文章

于 2015-04-12T10:41:56.843 回答
5

您可以使用 Camelot 从 PDF 中提取表格并将其导出为 HTML 文件。还支持 CSV、Excel 和 JSON。您可以在以下位置查看文档:http ://camelot-py.readthedocs.io 。与其他开源表格提取工具和库相比,它提供了更准确的结果。这是一个比较

您可以使用以下代码片段继续您的任务:

>>> import camelot
>>> tables = camelot.read_pdf('file.pdf')
>>> type(tables[0].df)
<class 'pandas.core.frame.DataFrame'>
>>> tables[0].to_html('file.html')

免责声明:我是图书馆的作者。

于 2018-11-21T11:39:24.833 回答
3

如果您希望每周从表格中提取一次数据并且您使用的是 Windows,请查看此免费软件 pdf 实用程序,其中包括自动表格检测和表格到 CSV、XML 转换:PDF 查看器实用程序

该实用程序对于非开发人员的商业和非商业用途都是免费的(对于希望通过 API 自动化的开发人员,有单独的版本)。

免责声明:我为 ByteScout 工作

于 2015-02-24T12:06:42.843 回答
2

我已经尝试了许多 OCR 和文本转换器软件,尽管我相信曾经应该编写程序将 PDF 自我转换为文本,因为执行任务的人可以更好地理解图像。

我还尝试过使用谷歌和许多其他公司的在线(大约 900 个网站)和离线(大约 1000 个软件)产品。如果您想从任何方法中提取文本,例如 OCR 或 PDF 中的文本,那么我发现的最准确的程序是PDFTOHTMLPDFTOHTML的准确率约为 98%,Google Online 的准确率约为 94%。这是一个非常好的软件,它还为您提供正确的文本格式,即文本的粗体、斜体等。

于 2012-05-01T18:51:21.720 回答
2

for major templates Tabula is the best option for open source while Abbyy PDF editor is a great solution for enterprise-level pdf data extraction and modification. Abbyy works on OCR.

Tabula have two option for auto table detection and another is manually by providing coordinates.

于 2019-03-27T12:41:05.040 回答
0

桌子每次都在同一个地方吗?如果您可以找到每个框的尺寸,您可以使用工具将 PDF 拆分为多个文档,每个文档包含一个框,之后您可以使用任何您想要将每个较小的 PDF 转换为 HTML 的工具(例如其他答案中提到的工具)。随机谷歌搜索拉出了PyPdf,看起来它可能有一些有用的功能。

如果您无法对框的大小进行硬编码(或想将问题应用于不同格式的多个菜单),对我来说显而易见的方法(我说很明显,不容易)将是边缘检测以找到表格的边框将是,然后应用我之前谈到的拆分。

于 2012-05-03T09:41:58.120 回答
0

我最近遇到了类似的问题。

我发现的另一种解决方案是在 Adob​​e 中打开 PDF 文档并将其导出为 xml。至少在我的 PDF 中,它保留了表格信息,然后我能够以编程方式使用 XML 生成表格文件,如 excel 等。

我遇到的另一个问题是 Adob​​e 一次只允许您导出一个文件,而我有很多文件。幸运的是,Adobe 也有合并功能。我最终将所有文件合并在一起,然后将它们导出为一个大的 XML 文件,并使用该文件生成我需要的文件。

于 2015-05-13T15:41:11.347 回答