40

我需要一种从 PDF 文档中提取书目元数据的机制,以节省人们手动输入或剪切和粘贴它的时间。

至少,标题和摘要。作者名单和他们的隶属关系会很好。提取参考文献将是惊人的。

理想情况下,这将是一个开源解决方案。

问题是并非所有的 PDF 都对文本进行编码,而且许多 PDF 确实无法保留文本的逻辑顺序,因此只需执行 pdf2text 即可为您提供第 1 列的第 1 行、第 2 列的第 1 行、第 1 列的第 2 行等。

我知道有很多图书馆。它在我需要解决的文档上识别摘要、标题作者等。这永远不可能每次都实现,但 80% 将节省大量人力。

4

12 回答 12

12

每次发布我只允许一个链接,所以就是这样: pdfinfo Linux 手册页

这可能会得到标题和作者。查看手册页的底部,有一个指向 www.foolabs.com/xpdf 的链接,可以在其中找到该程序的开源以及各种平台的二进制文件。

要提取参考书目,请查看cb2bib

cb2Bib 是一个免费、开源和多平台的应用程序,用于从电子邮件警报、期刊网页和 PDF 文件中快速提取未格式化或未标准化的书目参考。

您可能还想查看讨论该主题的 www.zotero.org 上的论坛。

于 2009-12-05T04:08:20.610 回答
8

2010 年 2 月,我们在伦敦的 Dev8D 举办了一场比赛来解决这个问题,结果我们得到了一个不错的 GPL 小工具。我们还没有将它集成到我们的系统中,但它就在世界上。

https://code.google.com/p/pdfssa4met/

于 2010-08-19T15:31:44.653 回答
5

可能有点简单,但谷歌搜索“bibtex + 论文标题”通常会从 ACM、Citeseer 或其他此类参考跟踪站点为您提供格式化的 bibtex 条目。当然,这是假设论文不是来自非计算机期刊:D

- 编辑 -

我有一种感觉,您不会为此找到自定义解决方案,您可能想写信给 citeseer、ACM 和谷歌学者等引文跟踪器,以获取他们所做工作的想法。还有很多其他的,您可能会发现它们的实现不是封闭源代码,而是以已发布的形式。有大量关于该主题的研究材料。

我所在的研究团队已经研究了这些问题,我们得出的结论是手写提取算法或机器学习是解决问题的方法。手写算法可能是你最好的选择。

由于可能的变化量,这是一个相当困难的问题。我建议将 PDF 规范化为文本(您可以从几十个程序化 PDF 库中的任何一个中获得)。然后,您需要实现自定义文本抓取算法。

我会从 PDF 的末尾开始向后看,看看存在什么样的引用键——例如,[1]、[author-year]、(author-year),然后尝试解析下面的句子。您可能必须编写代码来规范化从库中获得的文本(删除额外的空格等)。我只会将引用键作为一行的第一个单词,并且每个文档仅查找 10 页——第一个单词必须有键分隔符——例如,'[' 或 '('。如果在10 页然后忽略 PDF 并将其标记为人工干预。

您可能需要一个库,您可以进一步以编程方式咨询以格式化引用中的元数据——例如,斜体具有特殊含义。

我认为您最终可能会花费相当长的时间来获得一个可行的解决方案,然后是一个不断调整和添加到报废算法/引擎的过程。

于 2009-11-28T19:39:35.457 回答
4

在这种情况下,我会推荐PDFLIBTET

如果您需要快速了解它的功能,请查看TET Cookbook

这不是一个开源解决方案,但在我看来它是目前最好的选择。它不依赖于平台,具有丰富的语言绑定和商业支持。

如果有人向我指出等效或更好的开源替代方案,我会很高兴。

要提取文本,您将使用TET_xxx()函数并查询元数据,您可以使用pcos_xxx()函数。

您还可以使用命令行工具生成一个 XML 文件,其中包含您需要的所有信息。

tet --tetml word file.pdf

TET Cookbook中有关于如何使用XSLT处理 TETML 的示例

TETFL 中包含哪些内容?

TETML 输出以 UTF-8 编码(在带有 USS 或 MVS 的 zSeries 上:EBCDIC-UTF-8,请参阅 www.unicode.org/reports/tr16),并包括以下信息:一般文档信息和每页的元数据文本内容(字或段落) 字形信息(字体名称、大小、坐标) 结构信息,例如关于放置在页面上的图像的表格信息 资源信息,即字体、颜色空间和图像 如果在 PDF 处理过程中发生异常,则会出现错误消息

于 2009-11-28T19:36:26.183 回答
2

另一个要尝试的 Java 库是PDFBox。PDF 确实是为查看和打印而设计的,因此您肯定希望图书馆为您完成一些繁重的工作。即便如此,您可能还需要将文本片段重新粘合在一起,以获取您想要提取的数据。祝你好运!

于 2009-11-28T19:20:14.233 回答
2

刚刚找到pdftk ...太棒了,它包含 Win/Lin/Mac 的二进制发行版以及源代码。

事实上,我解决了我的另一个问题(查看我的个人资料,我问然后回答了另一个 pdf 问题 .. 由于 1 个链接限制,无法链接)。

它可以进行 pdf 元数据提取,例如,这将返回包含标题的行:

 pdftk test.pdf dump_data output test.txt | grep -A 1 "InfoKey: Title" | grep "InfoValue"

它可以转储标题、作者、修改日期,甚至书签和页码(测试 pdf 有书签)......显然需要做一些工作才能正确 grep 输出,但我认为这应该符合您的需求。

如果您的 pdf 没有元数据(即没有“抽象”元数据),您可以使用 pdf2text 等不同的工具对文本进行分类,并使用上面的一些 grep 技巧。如果您的 pdf 不是 OCR,那么您遇到的问题要大得多,并且对 pdf 的临时查询会非常缓慢(最好是 OCR)。

无论如何,我建议您建立文档索引,而不是让每个查询都扫描文件元数据/文本。

于 2009-12-08T02:10:25.573 回答
1

看看iText。它是一个 Java 库,可让您阅读 PDF。您仍将面临寻找正确数据的问题,但该库将提供可用于推断目的的格式和布局信息。

于 2009-11-28T19:14:54.007 回答
1

PyPDF可能会有所帮助。它提供了广泛的 API 用于读取和写入 PDF 文件(未加密)的内容,并用简单的 Python 语言编写。

于 2009-11-28T19:26:19.913 回答
1

看看这篇研究论文 -使用条件随机场从研究论文中准确提取信息

您可能想使用像斯坦福 NER这样的开源包来开始使用 CRF。

或者,您可以尝试将它们(研究论文)导入Mendeley。显然,它应该为您提取必要的信息。

希望这可以帮助。

于 2010-04-21T10:10:11.047 回答
1

这是我使用 linux 和cb2bib 所做的

  1. 打开 cb2bib 并确保剪贴板连接已打开,并且您的参考数据库已加载
  2. 在谷歌学者上找到你的论文
  3. 点击论文下方的“import to bibtex”
  4. 选择(突出显示)下一页上的所有内容(即 bibtex 代码)
  5. 它现在应该以 cb2bib 格式显示
  6. 现在可以选择按网络搜索(地球图标)添加其他信息。
  7. 按 cb2bib 中的保存将论文添加到您的参考数据库。

对所有论文重复此操作。我认为在没有可靠地从 PDF 中提取元数据的方法的情况下,这是我找到的最简单的解决方案。

于 2013-05-21T17:17:46.143 回答
1

我推荐gscholarpdftotext结合使用。

尽管 PDF 提供元数据,但它很少填充正确的内容。例如,通常“None”或“Adobe-Photoshop”或其他哑字符串代替标题字段。这就是为什么上述工具都不能从 PDF 中获取正确信息的原因,因为标题可能位于文档中的任何位置。另一个例子:许多会议论文集的论文可能还带有会议的标题,或者编者的名字,这会混淆自动提取工具。当你对论文的真正作者感兴趣时,结果就会大错特错。

所以我建议使用谷歌学者的半自动方法。

  1. 将 PDF 呈现为文本,以便您可以提取:作者和标题。
  2. 第二次复制粘贴一些此信息并查询谷歌学者。为了自动化这个,我使用了很酷的 python 脚本 gscholar.py。

所以在现实生活中,这就是我所做的:

me@box> pdftotext 10.1.1.90.711.pdf - | head
Computational Geometry 23 (2002) 183–194
www.elsevier.com/locate/comgeo

Voronoi diagrams on the sphere ✩
Hyeon-Suk Na a , Chung-Nim Lee a , Otfried Cheong b,∗
a Department of Mathematics, Pohang University of Science and Technology, South Korea
b Institute of Information and Computing Sciences, Utrecht University, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands

Received 28 June 2001; received in revised form 6 September 2001; accepted 12 February 2002
Communicated by J.-R. Sack
me@box> gscholar.py "Voronoi diagrams on the sphere Hyeon-Suk" 
@article{na2002voronoi,
  title={Voronoi diagrams on the sphere},
  author={Na, Hyeon-Suk and Lee, Chung-Nim and Cheong, Otfried},
  journal={Computational Geometry},
  volume={23},
  number={2},
  pages={183--194},
  year={2002},
  publisher={Elsevier}
}

编辑:小心,你可能会遇到验证码。另一个很棒的脚本是bibfetch

于 2013-10-28T08:02:50.957 回答