pdf2bib

pdf2bib

我的电脑上有一个文件夹,里面有很多不同作者的数学论文。有些已经发表,有些在 arXiv 上,有些永远不会发表或上传到 arXiv。

我的问题如下:是否有一个脚本或某种自动化方式来生成一个包含该文件夹中所有论文书目数据的大型 BibTeX 文件?

一些观察:

  1. 这样的脚本主要应该在 arXiv、Mathscinet、Google scholar 上查找数据。很明显,我的文件夹中并非所有条目都会提供完整的书目信息(例如不打算发表的论文),因此脚本可能会返回一些错误或部分信息。无论如何,一切都应该由人来检查。

  2. Bibdesk、Jabref、Zotero 或 Mendeley 等软件可能提供类似的服务。我尝试寻找此类功能,但没有找到任何明确信息。我实际上有 Bibdesk,我非常喜欢它,因此如果能提供涉及 Bibdesk 的解决方案,我将不胜感激。

  3. 如果脚本具有以标准方式生成引文密钥的功能,那就太好了。例如,论文“Auth1 和 Auth2 的数学中的 Blabla 和 blable”将具有引文密钥“auth1_auth2:blabla_and_blable_in_mathematics”。

  4. 部分解决方案似乎是这里建议的:http://www.math.tamu.edu/~comech/tools/bibget/。我还没有检查过这是否能正常工作;如果能,我们可以将这个脚本与一个类似的脚本结合起来,搜索 arXiv。

先感谢您

答案1

免责声明:这个解决方案并不完美,但可能是一个好的开始。PDF 的解析是我编写的,因为我有大量的 PDF 在我的 BibTeX 数据库中不可用。可能其他选择例如文件门德利据说具有良好的 PDF 解析和 BibTeX 导出功能。我是 JabRef 的作者之一,喜欢开源开发。

贾布雷夫是一个麻省理工学院许可积极开发的开源 BibTeX 和 BibLaTeX 书目管理器GitHub. 它提供从 PDF 导入书目数据的功能。

调整 JabRef 密钥生成模式以满足您的需求

JabRef 提供了 BibTeX 密钥生成,并提供了不同的模式,描述如下https://help.jabref.org/en/BibtexKeyPatterns。就您而言,最接近的匹配是[authors]:[camel]

  1. 打开偏好设置 选项 偏好设置

  2. 导航至“BibTeX 密钥生成器” BibTeX 密钥生成器首选项

  3. 将默认模式更改为[authors]:[camel]作者骆驼

  4. 点击“确定”

将 PDF 链接到您的 bib 文件

  1. 创建或打开一个 .bib 文件。

  2. 转到“质量”->“查找未链接的文件”。 开始查找链接文件的菜单项

  3. “查找未链接的文件”对话框打开。 查找未链接的文件对话框

  4. 使用“浏览”按钮选择一个目录。

  5. 点击“扫描目录”。

  6. 在“选择文件”中,显示尚未包含在数据库中的文件。 扫描结果

  7. 要为所有文件创建条目,请单击“应用”。

  8. 对于每个文件,都会显示一个导入对话框 元数据对话框

    对话框在“XMP 元数据”区域中显示 PDF 中存储的 XMP 元数据。如果此数据符合您的需求,请选择“基于 XMP 数据创建条目”。通常,XMP 元数据不够好。选择“基于内容创建条目”。

  9. 点击“确定”开始导入

  10. 打开一个对话框询问链接 链接到文件对话框 您可以选择“将文件保留在当前目录中”以将文件保留在原处。通常,这就是人们想要的。如果您选择“将文件移动到文件目录”,您还可以选择将文件重命名为生成的 BibTeX 密钥。

  11. 按“确定”将文件链接到 BibTeX 条目

  12. 每个文件都会发生这种情况。之后,会显示“查找未链接的文件”对话框。只需单击“关闭”即可关闭它。

  13. 显示最后导入的条目的条目编辑器 条目编辑器

  14. 您现在可以保存文件并且已经完成。

  15. 可选:点击“常规”查看链接的文件 常规选项卡

  16. 可选:点击“BibTeX 源”查看 BibTeX 源 BibTeX 来源

  17. 可选:您必须缩小它才能看到条目表中的条目放大 JabRef 窗口并使用鼠标在条目编辑器的上边框处 缩小条目编辑器

  18. 可选:按 Esc 显示条目预览 参赛作品预览

更多信息

适用的 PDF

基于内容的导入器是为 IEEE 编写的,伦斯勒公司格式的论文。其他格式尚不支持。如果在第一页找到 DOI,则使用 DOI 生成 BibTeX 信息。

下一步开发是提取 PDF 的标题,使用“查找 DOI”,然后从 DOI 获取 BibTeX 数据来自 JabRef 的功能来获取 BibTeX 数据。

我们也思考使用另一个库完全替换代码。这需要付出很多努力,而且没有时间表。

更好的文件名

JabRef 还提供更改文件名的功能。您可以在“首选项”->“导入”中调整模式 偏好设置 -> 导入

选择“选择模式”,然后选择“bibtexkey - 标题” 在此处输入图片描述 其结果为设置“\bibtexkey\begin{title} - \format[RemoveBrackets]{\title}\end{title}”。

这使得文件名以 bibtey 键开头,后跟完整标题。在具体情况下,\bibtexkeyonly 可能是更好的选择,因为描述的 bibtey 键已经包含标题。

测试过 JabRef 版本

必须使用最新版本的 JabRef。JabRef 3.6 无法使用此功能:https://github.com/JabRef/jabref/issues/2214

图书馆学博士

JabRef 曾经支持图书馆学博士,返回完整的 BibTeX 条目或 PDF。由于所用图书馆的版权情况不明,该服务已被删除。此外,Mr.DLib 改变了其重点,并将提供文献推荐。参见https://github.com/JabRef/jabref/pull/2189

相关问题:

答案2

在 Unix 系统(例如 Ubuntu)上安装萨佩斯

sudo apt-get install xapers

Xapers 将从 PDF 中提取元信息,例如 doi。然后可以使用它来查询http://dx.doi.org/

这个 bash 脚本提供了一个良好的开端:

#!/bin/bash

for f in *.pdf; do
  id=`xapers scandoc $f | head -n1`
  echo $f $id
  url="http://dx.doi.org/"$id
  echo "`curl -LH 'Accept: application/x-bibtex' $url`"$'\n' >> bibfile.txt
done

答案3

为了完整起见,我将提供一个针对 Emacs 的答案。

如果您是 Emacs 用户或愿意为此特定目的安装 Emacs,请查看此软件包:

https://github.com/jkitchin/org-ref

它包含一个名为 的函数org-ref-pdf-dir-to-bibtex。它尝试从 *.pdf 文件目录中聚合所有 bibtex 信息。根据我的经验,它不适用于非常异构的目录,即来自不同来源的论文。如果您的文件主要来自 arXiv,那么这可能非常有效,因为该包专门支持 arXiv。

如果仍然遇到冲突,您还可以使用org-ref-pdf-to-bibtex 一些交互来处理单个文件。例如,如果解析器在文件中找到两个可能的 DOI 候选者,这可能很重要。在这种情况下,从弹出的对话框中选择正确的候选者通常非常简单。

答案4

pdf2bib

它是一个 Python 库,其功能正如其名称所示。

https://pypi.org/project/pdf2bib/

用法:

$ pdf2bib file.pdf
⟨⟹ prints the bib content⟩

根据我的经验,它运行完美;除非它没有 DOI,否则程序将尝试在 Google 上搜索 PDF 文本并获取第一个包含 DOI 的搜索结果(这当然不是所需的论文)


在另一个网站上也可以找到同样的问题: 引用 - 是否有一个开源工具可以从纸质 PDF 生成 bibtex 条目? - Academia Stack Exchange。那里有更多的解决方案。

相关内容