28

我有一堆 PDF - 可能有数百或数千。它们的格式并不完全相同,但它们中的任何一个都可能有一个或多个包含有趣信息的表,我想将这些信息收集到一个单独的数据库中。

当然,我知道我必须写一些东西才能做到这一点。Perl 对我来说是一个选择——或者也许是 Java。我真的不在乎什么语言,只要它是免费的(或者便宜的免费试用期,以确保它适合我的目的)。

我正在查看 CAM::Parse (使用草莓 Perl),但我不确定如何使用它来定位和提取文件中的表。我想我确实偏爱 Perl,但我真的想要一些可以可靠工作并且相当容易进行字符串操作的东西。

什么是这样的好方法?我站在第一方,所以如果 java(或 python 等)有更好的钩子,现在是了解它的好时机。一般指点好;入门代码将是强烈首选。

4

1 回答 1

47
  1. PDF 格式从一开始(20 多年前)就从未打算成为可提取的、有意义的结构化数据的宿主

  2. 其目的是为文档中的文本、图像和图表提供可靠的视觉表示——一种数字纸(也可以通过打印可靠地转移到真实的纸上)。只是在其开发的后期才添加了更多功能,这应该有助于再次提取数据(谷歌用于Tagged PDF)。

  3. 有关从 PDF 中抓取数据时出现的一些问题示例,请参阅本文:

  4. 与我的观点“1”相矛盾。上面,现在我要说的是:对于从 PDF 中提取表格数据(除非它们是扫描页面)每周都变得越来越好的惊人工具系列,请参阅以下链接:

所以:去寻找Tabula。如果有任何工具可以做你想做的事,那么此时 Tabula 可能是最适合这项工作的工具之一!


更新

我最近创建了一个ASCIinema 截屏视频,演示了如何使用 Tabula 命令行界面从 PDF 中提取一个大表格作为 CSV:

asciiccast

(单击上面的图像查看它正在运行。如果它运行得太快而您无法阅读所有文本,请使用“暂停”按钮(||-symbol)。)

它在这里托管:

于 2014-09-29T23:45:18.530 回答