从研究论文的 PDF 中提取信息 [关闭]
Posted
技术标签:
【中文标题】从研究论文的 PDF 中提取信息 [关闭]【英文标题】:Extracting information from PDFs of research papers [closed] 【发布时间】:2010-12-21 06:28:06 【问题描述】:我需要一种从 PDF 文档中提取书目元数据的机制,以防止人们手动输入或剪切粘贴。
至少,标题和摘要。作者名单和他们的隶属关系会很好。提取参考文献将是惊人的。
理想情况下,这将是一个开源解决方案。
问题在于,并非所有 PDF 都对文本进行编码,而且许多 PDF 确实无法保留文本的逻辑顺序,因此只需执行 pdf2text 即可为您提供第 1 列的第 1 行、第 2 列的第 1 行、第 2 列的第 2 行1等
我知道有很多图书馆。它在我需要解决的文档上识别摘要、标题作者等。这不可能每次都实现,但 80% 会节省大量人力。
【问题讨论】:
这个问题是否与任何语言和/或平台有关? 通用UNIX平台,越跨平台越好。主要工具 (EPrints) 是 mysql、Perl、Apache,但如果需要,它可以脱壳。理想情况下,这应该运行得足够快,以提供近乎即时的结果。 悬赏是一个可以获取 PDF 文件并向我返回至少包含标题和摘要的数据结构的答案,并且是零成本软件。这会让许多大学图书馆员非常高兴。理想情况下还有日期、会议详细信息(如果有)和参考资料。在 utf-8 中,虽然我过于乐观。 即使你能得到所有的文本,你如何识别标题/摘要?什么情况下需要OCR? 您能否指出一个指向包含您所想的'书目元数据'的 PDF 的链接? 【参考方案1】:看看iText。它是一个 Java 库,可让您阅读 PDF。您仍将面临寻找正确数据的问题,但该库将提供格式和布局信息,这些信息可能可用于推断目的。
【讨论】:
【参考方案2】:另一个可以尝试的 Java 库是 PDFBox。 PDF 确实是为查看和打印而设计的,因此您肯定希望图书馆为您完成一些繁重的工作。即便如此,您可能还需要将文本片段重新粘合在一起,以获取您想要提取的数据。祝你好运!
【讨论】:
【参考方案3】:PyPDF 可能会有所帮助。它提供了广泛的 API 用于读取和写入 PDF 文件(未加密)的内容,并使用简单的 Python 语言编写。
【讨论】:
【参考方案4】:在这种情况下,我会推荐 TET from PDFLIB
如果您需要快速了解它的功能,请查看TET Cookbook
这不是一个开源解决方案,但在我看来它是目前最好的选择。它不依赖于平台,具有丰富的语言绑定和商业支持。
如果有人向我指出同等或更好的开源替代方案,我会很高兴。
要提取文本,您可以使用 TET_xxx()
函数;要查询元数据,您可以使用 pcos_xxx()
函数。
您还可以使用命令行工具生成一个 XML 文件,其中包含您需要的所有信息。
tet --tetml word file.pdf
TET Cookbook 中有关于如何使用XSLT 处理 TETML 的示例
TETML 中包含哪些内容?
TETML 输出以 UTF-8 编码(在带有 USS 或 MVS:EBCDIC-UTF-8,参见 www.unicode.org/reports/tr16),并包括以下信息: 一般文档信息和元数据 每页的文本内容(单词或段落) 字形信息(字体名称、大小、坐标) 结构信息,例如表 有关页面上放置图像的信息 资源信息,即字体、色彩空间和图像 如果在 PDF 处理期间发生异常,则会出现错误消息
【讨论】:
【参考方案5】:可能有点简单,但谷歌搜索“bibtex + 论文标题”通常会从 ACM、Citeseer 或其他此类参考跟踪站点为您提供格式化的 bibtex 条目。当然,这是假设论文不是来自非计算机期刊:D
-- 编辑--
我感觉您不会为此找到自定义解决方案,您可能想写信给 citeseer、ACM 和谷歌学者等引文跟踪器,以了解他们所做的工作。还有很多其他的,您可能会发现它们的实现不是封闭源代码,而是以已发布的形式。有大量关于该主题的研究材料。
我所在的研究团队研究了此类问题,我们得出的结论是手写提取算法或机器学习是解决问题的方法。手写算法可能是您最好的选择。
由于可能的变化量,这是一个相当困难的问题。我建议将 PDF 规范化为文本(您可以从数十个程序化 PDF 库中的任何一个中获得)。然后,您需要实现自定义文本抓取算法。
我会从 PDF 的末尾开始向后看,看看存在哪些类型的引用键——例如,[1]、[author-year]、(author-year),然后尝试解析下面的句子。您可能必须编写代码来规范化从库中获得的文本(删除额外的空格等)。我只会将引用键作为一行的第一个单词,并且每个文档仅查找 10 页——第一个单词必须有键分隔符——例如,'[' 或 '('。如果在10 页然后忽略 PDF 并将其标记为人工干预。
您可能需要一个库,您可以进一步以编程方式查阅该库以格式化引文中的元数据——例如,斜体具有特殊含义。
我认为您最终可能会花费相当长的时间来获得一个可行的解决方案,然后是一个不断调整和添加到报废算法/引擎的过程。
【讨论】:
好主意,但我正在开发一个将研究 PDF 放到网上的系统,所以它是提供 bibtex 的东西! 我已经做到了。我希望可能有一些打包的解决方案。这是一个研究级别的问题:(【参考方案6】:每个帖子只允许一个链接,所以是这样的: pdfinfo Linux manual page
这可能会得到标题和作者。查看手册页的底部,有一个指向 www.foolabs.com/xpdf 的链接,可以在其中找到该程序的开源以及各种平台的二进制文件。
要提取参考书目,请查看cb2bib:
cb2Bib 是一个免费、开源和多平台的应用程序,用于从电子邮件警报、期刊网页和 PDF 文件中快速提取未格式化或未标准化的书目参考。
您可能还想查看讨论该主题的 www.zotero.org 上的论坛。
【讨论】:
我认为您遇到的基本问题是,除非您与电子出版商或非常有条理的公司打交道,否则您会得到很少有用的信息pdf 元数据。所以听起来你真正想要的是一种产品,它可以从非结构化文本中识别和输出以下内容:1) 作者 2) 摘要 3) 参考书目信息。可以轻松地从 PDF(通常还有许多其他文件格式)中提取此文本,并且有许多开源解决方案。似乎 c2bib 可能是一个很好的起点,因为它应该有助于参考书目领域。 +1 用于 c2bib,它是一个很棒的工具(即使不是完全自动化的)。【参考方案7】:刚刚找到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)。
无论如何,我建议您为文档建立索引,而不是让每个查询都扫描文件元数据/文本。
【讨论】:
只提取创建软件嵌入的元数据。我需要书目元数据。这不能让我得到摘要。我知道我有一个大问题,这就是我问这个问题的原因。看起来没有可用的解决方案:(谷歌学者显然有办法,但我没有他们的资源。 我很确定没有针对您的问题的预打包解决方案。但是,使用 pdftk、pdf2txt 和一些 perl/shell 脚本等工具应该可以为您提供 80-90% 的覆盖率(假设您不必先对它们进行 OCR)。我认为在没有样本数据的情况下发布这个赏金有点不公平,因为如果不检查数据语料库就无法解决这个问题。即使是商业或预打包的解决方案也可能需要了解您的内容的一些细节,或者您需要反复配置/测试,直到获得良好的覆盖范围。【参考方案8】:看看这篇研究论文 - Accurate Information Extraction from Research Papers using Conditional Random Fields
您可能希望使用像 Stanford NER 这样的开源包来开始使用 CRF。
或者,您可以尝试将它们(研究论文)导入Mendeley。显然,它应该为您提取必要的信息。
希望这会有所帮助。
【讨论】:
【参考方案9】:我们于 2010 年 2 月在伦敦的 Dev8D 举办了一场比赛来解决这个问题,结果我们得到了一个不错的 GPL 小工具。我们尚未将它集成到我们的系统中,但它已经存在于世界上。
https://code.google.com/p/pdfssa4met/
【讨论】:
我无法推荐它:首先,您需要一个不起眼的二进制文件 pdftoxml.linux.exe.1.2.4,pdftoxml 项目似乎没有合适的构建系统来自行生成二进制文件。此外,您需要在opencalais.com 注册以获得特殊的 API 密钥。对不起,这一切都不方便,我最好尝试使用 pdftotext 或谷歌学者。【参考方案10】:这是我使用 linux 和 cb2bib 所做的。
-
打开 cb2bib 并确保剪贴板连接已打开,并且您的参考数据库已加载
在谷歌学者上找到你的论文
点击论文下方的“import to bibtex”
选择(突出显示)下一页上的所有内容(即 bibtex 代码)
它现在应该以 cb2bib 格式显示
现在可以选择按网络搜索(地球图标)添加其他信息。
在 cb2bib 中按保存以将论文添加到您的参考数据库。
对所有论文重复此操作。我认为在没有可靠地从 PDF 中提取元数据的方法的情况下,这是我找到的最简单的解决方案。
【讨论】:
cb2bib +1,它是一个很棒的工具(即使不是完全自动化的)。【参考方案11】:我推荐gscholar 与pdftotext 结合使用。
虽然 PDF 提供元数据,但它很少填充正确的内容。例如,通常“None”或“Adobe-Photoshop”或其他哑字符串代替标题字段。这就是为什么上述工具都不能从 PDF 中获取正确信息的原因,因为标题可能位于文档中的任何位置。另一个例子:许多会议论文集的论文可能还带有会议的标题,或者编者的名字,这会混淆自动提取工具。如果您对论文的真实作者感兴趣,那么结果就会大错特错。
所以我建议使用谷歌学者的半自动方法。
-
将 PDF 呈现为文本,以便您可以提取:作者和标题。
第二次复制粘贴一些此信息并查询谷歌学者。为了实现自动化,我使用了很酷的 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"
@articlena2002voronoi,
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。
【讨论】:
【参考方案12】:CERMINE - Content ExtRactor and MINEr
论文中描述:TKACZYK, Dominika, et al. CERMINE: automatic extraction of structured metadata from scientific literature. International Journal on Document Analysis and Recognition (IJDAR), 2015, 18.4: 317-335.
主要用 Java 编写,可在 github 开源。
【讨论】:
为什么会被否决? @koppor :-) 谁知道... 我使用了 cermine,效果很好,因为它也可以查看您的 pdf 内容!没有多少应用程序这样做。当然,您的 pdf 文件需要事先进行 ocr-ed 才能正常工作。以上是关于从研究论文的 PDF 中提取信息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
ISOLABS最新《图神经网络实用指南》2020论文,28页pdf