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

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

至less,标题和摘要。 作者名单和他们的从属关系是好的。 提取参考将是惊人的。

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

问题在于并不是所有的PDF都对文本进行编码,而且许多文件不能保留文本的逻辑顺序,所以只要做pdf2text就可以得到第1列的第1行,第2列的第1行,第1列的第2行等等。

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

我们在2010年2月在伦敦Dev8D举办了一场比赛来解决这个问题,我们得到了一个很好的小GPL工具。 我们还没有将其整合到我们的系统中,但它在世界上。

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

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

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

要拿出参考书目,请看cb2bib :

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

您也可以在www.zotero.org上查看讨论此主题的论坛。

可能是一个简单的,但谷歌search“bibtex +论文标题”ussualy让你从ACM,Citeseer,或其他这样的参考跟踪网站的格式bibtex条目。 当然这是假定论文不是来自非计算期刊:D

– 编辑 –

我有一种感觉,你不会find一个自定义的解决scheme,你可能想写引文跟踪如citeseer,ACM和谷歌学者得到他们所做的想法。 有很多其他人,你可能会发现他们的实现不是封闭源代码,但不是以已发布的forms。 关于这个问题有很多的研究材料。

我参与的研究小组已经研究过这样的问题,我们得出结论,手写提取algorithm或者机器学习是这样做的。 手写algorithm可能是你最好的select。

由于可能的变化量,这是相当困难的问题。 我build议将PDF文本标准化为文本(您可以从几十个程序化PDF库中获取)。 然后您需要实现自定义文本报废algorithm。

我会从PDF的末尾开始,看看存在哪些引用键 – 例如[1],[author-year],(author-year),然后尝试parsing下面的句子。 你可能不得不编写代码来规范你从一个库中获得的文本(删除多余的空格等)。 我只会将引用键作为一行的第一个单词,每个文档只有10个页面 – 第一个单词必须有键分隔符 – 例如'['或'('。如果没有键可以在10页然后忽略PDF并将其标记为人为干预。

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

我认为你可能花费相当长的时间来获得一个可行的解决scheme,然后是一个不断调整和添加到报废algorithm/引擎的过程。

在这种情况下,我会推荐PDFLIB的 TET

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

这不是一个开源的解决scheme,但目前在我看来是最好的select。 它不依赖于平台,并且有一套丰富的语言绑定和商业支持。

如果有人指出我采用同等或更好的开源替代方法,我会很高兴。

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

您也可以使用commanline工具来生成一个包含所有您需要的信息的XML文件。

 tet --tetml word file.pdf 

在TET Cookbook中有关于如何用XSLT处理TETML的例子

TETML中包含了什么?

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

看看iText 。 这是一个Java库,可以让你阅读PDF文件。 您仍然会遇到find正确数据的问题,但是图书馆将提供可能用于推断目的的格式和布局信息。

另一个Java库将尝试将PDFBox 。 PDFs是真正的devise来查看和打印,所以你一定要图书馆为你做一些繁重的工作。 即便如此,您也许需要将文本片段粘在一起才能获取要提取的数据。 祝你好运!

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

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

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

希望这可以帮助。

这是我使用Linux和cb2bib 。

  1. 打开cb2bib并确保剪贴板连接是打开的,并且加载了参考数据库
  2. 在google学者上find你的论文
  3. 点击纸张下方的“导入到bibtex”
  4. select(突出显示)下一页上的所有内容(即,bibtex代码)
  5. 它现在应该出现在cb2bib格式
  6. 或者,现在按networkingsearch(地球图标)添加其他信息。
  7. 按保存在cb2bib添加到您的ref数据库的文件。

对所有的文件重复这个。 我觉得在没有可靠地从PDF中提取元数据的方法的情况下,这是我find的最简单的解决scheme。

我推荐gscholar结合pdftotext 。

虽然PDF提供了元数据,但是很less有正确的内容。 例如,通常“无”或“Adobe-Photoshop”或其他哑string就在标题字段中。 这就是为什么上述工具都不能从PDF中获得正确的信息,因为标题可能在文档中的任何地方。 另一个例子:许多会议论文可能也有会议的标题,或编辑的名字混淆自动提取工具。 当你对这篇论文的真正作者感兴趣的时候,结果是错误的。

所以我build议一个涉及google学者的半自动方法。

  1. 将PDF呈现为文本,以便提取:作者和标题。
  2. 第二个复制粘贴一些这个信息和查询谷歌学者。 为了实现这个function,我使用了酷酷的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, PO 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} } 

编辑:小心,你可能会遇到validation码。 另一个伟大的脚本是bibfetch 。

刚刚findpdftk …这是惊人的,进来Win / Lin / Mac二进制分布以及来源。

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

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

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

它可以转储标题,作者,模式date,甚至书签和页码(testingpdf有书签)…显然需要一点工作来正确grep输出,但我认为这应该符合您的需求。

如果您的pdf没有元数据(即没有“抽象”元数据),您可以使用不同的工具(如pdf2text)捕捉文本,并使用上面的一些grep技巧。 如果你的PDF文件没有被OCR,那么你的问题就会大得多,临时查询pdf文件将会非常缓慢(最好是OCR)。

无论如何,我build议你build立一个你的文件索引,而不是让每个查询扫描文件元数据/文本。

PyPDF可能有帮助。 它提供了大量的API来读取和写入PDF文件的内容(未encryption),并以Python语言编写。

尝试citeyoulike 。 这是一个网站,可以让你放在一起的文件库,分配标签给他们,search他们,并附上评论。 它也可以让你添加一个button到你的网页浏览器,它会尝试自动提取你想要的信息,包括摘要。 它虽然没有真正得到很多的PDF。 但是,如果您将它指向IEEE浏览器,citeseer或许多期刊网站上的论文,通常可以获取所有bibtex信息。

问题在于pdf通常并不具备所有的引用信息。 您通常会拥有标题和作者,但不一定是会议的名称或发布年份。 首先在siteseer,PubMed或其他地方find论文的引用并从中提取信息是有意义的。

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

CERMINE – Content ExtRactor和MINEr

在论文中描述: TKACZYK,Dominika等人 CERMINE:从科学文献中自动提取结构化元数据。 国际文件分析与authentication杂志(IJDAR) ,2015年,18.4:317-335。

主要用Java编写,可以在github上作为开源使用。