从研究论文的PDF中提取信息

时间:2009-11-28 19:03:43

标签: pdf metadata extraction

我需要一种从PDF文档中提取书目元数据的机制,以保存手动输入或剪切粘贴的人。

至少,标题和摘要。作者名单及其隶属关系会很好。提取参考文献会很棒。

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

问题在于并非所有PDF都对文本进行编码,而且许多PDF文件都无法保留文本的逻辑顺序,因此只需执行pdf2text即可获得第1列第1行,第2列第1行,第2行第2行1等。

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

13 个答案:

答案 0 :(得分:10)

我每个帖子只允许一个链接,所以就是这样: pdfinfo Linux manual page

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

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

  

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

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:5)

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

- 编辑 -

我有一种感觉,你不会找到一个自定义的解决方案,你可能想写citeseer,ACM和谷歌学者的引用跟踪器,以获得他们所做的事情的想法。还有很多其他的,您可能会发现它们的实现不是封闭源,而是发布的形式。关于这个问题的研究材料很多。

我所参与的研究小组已经研究过这些问题,我们得出的结论是手写提取算法或机器学习是实现这一目标的方法。手写算法可能是你最好的选择。

由于可能的变化量,这是一个非常难的问题。我建议将PDF格式化为文本(可以从任意数十个程序化PDF库中获得)。然后,您需要实现自定义文本报废算法。

我会从PDF结尾开始向后看,看看存在什么类型的引文键 - 例如[1],[作者年],(作者年),然后尝试解析下面的句子。您可能必须编写代码来规范化从库中获取的文本(删除额外的空格等)。我只会寻找引文键作为一行的第一个单词,并且每个文档只有10页 - 第一个单词必须有键分隔符 - 例如,'['或'('。如果没有键可以找到10页然后忽略PDF并标记它以供人为干预。

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

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

答案 3 :(得分:3)

在这种情况下,我会从TET

推荐PDFLIB

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

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

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

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

您还可以使用commanline工具生成包含所需信息的XML文件。

tet --tetml word file.pdf

有关如何在XSLT

中使用TET Cookbook处理TETML的示例

TETML中包含哪些内容?

  

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

要尝试的另一个Java库是PDFBox。 PDF文件非常适合查看和打印,因此您绝对希望图书馆能够为您完成一些繁重的工作。即便如此,您可能需要将文本片段粘合在一起以获取要提取的数据。祝你好运!

答案 6 :(得分:1)

刚刚找到pdftk ...这太神奇了,还有Win / Lin / Mac的二​​进制发行版和源代码。

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

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

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

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

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

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

答案 7 :(得分:1)

看一下这篇研究论文 - Accurate Information Extraction from Research Papers using Conditional Random Fields

您可能希望使用像Stanford NER这样的开源软件包来开始使用CRF。

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

希望这有帮助。

答案 8 :(得分:1)

以下是我使用linux和cb2bib进行的操作。

  1. 打开cb2bib并确保剪贴板连接已打开,并且您的参考数据库已加载
  2. 在google scholar上找到你的论文
  3. 点击论文下方的“导入到bibtex”
  4. 选择(突出显示)下一页上的所有内容(即,bibtex代码)
  5. 现在应该显示格式为cb2bib
  6. 现在可以选择按网络搜索(地球图标)添加其他信息。
  7. 按cb2bib中的save将纸张添加到ref数据库。
  8. 对所有论文重复此操作。我认为,如果没有可靠地从PDF中提取元数据的方法,这是我找到的最简单的解决方案。

答案 9 :(得分:1)

我建议将gscholarpdftotext结合使用。

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

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

  1. 将PDF渲染为文本,因此您可以提取:author和title。
  2. 第二次复制粘贴一些此信息并查询谷歌学者。为了实现自动化,我使用了酷的python脚本gscholar.py。
  3. 所以在现实生活中这就是我的所作所为:

    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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

试试citeyoulike。这是一个网站,可以让你整理一个论文库,为他们分配标签,搜索他们,并附上评论。它还允许您向Web浏览器添加一个按钮,该按钮将尝试自动提取您想要的信息,包括摘要。尽管如此,它并没有从pdf中获得太多。但是,如果您将其指向IEEE探险家,citeseer或许多期刊网站上的论文,它通常能够获得所有的bibtex信息。

问题是pdfs通常没有开头的所有引用信息。您通常会拥有标题和作者,但不一定是会议名称或出版年份。首先在siteseer,PubMed或其他地方找到论文的引用是有意义的,并从那里提取信息。

总的来说,我发现citeyoulike对于组织论文非常有用。它对于与其他人合作也很有用。您可以创建群组,分享论文,设置论坛等。

答案 12 :(得分:0)