从PDF中提取表格数据

12

有没有一种一致的方法可以从PDF文件中提取表格? 有什么工具可用?

我目前为止做了什么:

  • 我尝试使用pdftotext工具。 它有一个选项可以转换为HTML布局。

这个方法存在的问题:

  • 表格信息在HTML输出中未保留
  • 我期望看到<table>标签,但所有内容都在<p>标签下。

PDF文档中是否会有标记来指示表格结构? 像HTML中的<table><tr><td>这样的标记?

如果是“是”,对此的任何指针都将很有帮助。 如果是“否”,也需要确切的信息。


5
@GeorgStocker:关闭这个问题并以“描述问题及已尝试解决方案”作为原因有点荒谬。—— OP 明确表示他/她已经尝试使用 pdftotextpdftohtml。他将问题描述为“期望的表格标签,但所有内容都在 p 标签下”。 - Kurt Pfeifle
1
自从我留下评论以后,我稍微编辑了 OP 一下,以便更好地强调所提出的问题。 - Kurt Pfeifle
请仅返回翻译文本:重复的 https://dev59.com/XkEEtIcB2Jgan1zne4Uo - Martin Thoma
2个回答

21

然而,你可以使用pdftotext -layout input.pdf output.txt来将PDF打印成文本文件并保留原始布局。没有标签,但是使用一些巧妙的脚本(Perl / PHP / 任何语言),可以从表格中恢复数据。

如果你只处理一页,最好手动完成。但是,如果你(像我一样)需要处理数百或数千页,则这是最好的选择。我已经寻找了很长时间,没有发现比pdftotext更好的pdf转文本工具。

输出有些不一致,类似的PDF表格可能会产生不同的txt输出,但这会让你的编程稍微有些有趣。


3
pdftotext 带上 -layout 选项对我很有帮助。谢谢。 - dlink
1
我发现-table选项仍然更好用。 - Vic Seedoubleyew
1
@VicSeedoubleyew:我找不到-table开关。http://manpages.ubuntu.com/manpages/lucid/man1/pdftotext.1.html上没有提到这个。pdftotext的版本是0.24.5。 - Quamis
2
@Quamis,我正在使用从http://www.foolabs.com/xpdf/download.html下载的xpdf软件包中提取的pdftotext 3.04版本。实际上,它从使用消息中打印出“-table”。希望这可以帮助到您。 - Vic Seedoubleyew
2
@Quamis:版本0.24.5来自最初XPDF代码基础的“Poppler”分支。这个分支于2005年发生。现在,总体而言,Poppler工具比原版(也在继续开发)功能更加丰富,似乎也更易于维护。然而,“pdftotext”的"-table"参数似乎是Poppler分支仍然缺失的一个功能,原版XPDF在这方面更为出色。XPDF的最新版本是2014年5月28日发布的v3.04。Poppler的最新版本是2016年4月28日发布的v0.43.0(就在三天前)。2014年5月28日,Popper的版本是v0.26.0(自那以后已经发布了17个版本)。 - Kurt Pfeifle
显示剩余6条评论

13
如果PDF文档缺少将内容标记为表格、行、单元格等的信息(称为标记),则从PDF文档中提取表格的方法不一致。大多数情况下,PDF文档不包含这些标记。通常,这些标记用于使PDF可访问,例如可以朗读出来。这些标记不是PDF有效的必要条件。

9
+1 -- 很好的答案,基本上和我自己几个月前的答案一样。但是后来我发现了TabulaPDF及其技术。-- 请问您能否投票重新开放这个问题,这样我就可以添加我的答案了吗? - Kurt Pfeifle
当 pdftotext 和 Acrobat 都无法提取表格时,您可以尝试另一种方法:在 Word 中打开它。我使用过 Word 2013 的内置转换功能,并取得了良好的结果。单元格内的格式可能会有些混乱,但是正确整理单元格是一个不错的开始。 - Jonathan Lidbeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接