10

有很多工具可以从 PDF 文件中提取文本[1-4]。然而,大多数科学论文的问题是很难直接访问 PDF,主要是因为需要付费。除了 bibtex 信息 [5-6] 之外,还有一些工具可以轻松访问论文的信息,例如元数据或 bibtex 。我想要的是向前迈出一步,超越 bibtex/元数据:

假设无法直接访问出版物的 PDF 文件,有没有办法在给定论文的 DOI 或标题的情况下至少获得科学论文的摘要?通过我的搜索,我发现已经有一些尝试 [7] 用于某些类似的目的。有谁知道可以帮助我获取/提取科学论文摘要或全文的网站/工具?如果没有这样的工具,你能给我一些关于解决这个问题后我应该如何去做的建议吗?

谢谢

[1] http://stackoverflow.com/questions/1813427/extracting-information-from-pdfs-of-research-papers
[2] https://stackoverflow.com/questions/6731735/extracting-the-actual-in-text-title-from-a-pdf
[3] http://stackoverflow.com/questions/6731735/extracting-the-actual-in-text-title-from-a-pdf?lq=1
[4] http://stackoverflow.com/questions/14291856/extracting-article-contents-from-pdf-magazines?rq=1
[5] https://stackoverflow.com/questions/10507049/get-metadata-from-doi
[6] https://github.com/venthur/gscholar
[7] https://stackoverflow.com/questions/15768499/extract-text-from-google-scholar
4

4 回答 4

6

您可以查看交叉引用文本和数据挖掘 (tdm) 服务 ( http://tdmsupport.crossref.org/ )。该组织免费提供 RESTful API。有超过 4000 家发布商为此 tdm 服务做出了贡献。您可以从以下链接中找到一些示例:

https://github.com/CrossRef/rest-api-doc/blob/master/rest_api_tour.md

但是举一个非常简单的例子:

如果你去链接

http://api.crossref.org/works/10.1080/10260220290013453

你会看到除了一些基本的元数据之外,还有另外两个元数据,即许可和链接,前者给出了本出版物提供的许可类型,后者给出了全文的 url。对于我们的示例,您将在许可元数据中看到许可是 Creativecommons (CC),这意味着它可以免费用于 tdm 目的。通过在 crossref 中搜索具有 CC 许可证的出版物,您可以访问成千上万的出版物及其全文。根据我的最新研究,我可以说印度教出版社是最友好的出版商。甚至他们提供超过 100K 的出版物 witt CC 许可证。最后一件事是全文可能以 xml 或 pdf 格式提供。因为这些 xml 格式是高度结构化的,因此很容易提取数据。

总而言之,您可以通过 crossref tdm 服务自动访问许多全文,只需使用他们的 API 并简单地编写一个 GET 请求。如果您还有其他问题,请不要犹豫。

干杯。

于 2015-08-11T12:13:15.950 回答
2

Crossref 可能值得检查。它们允许成员在元数据中包含摘要,但它是可选的,因此它不是全面的覆盖范围。当我询问时,他们的服务台表示,截至 2016 年 6 月,他们有大约 450,000 个 DOI 的摘要可用。

如果他们的元数据中存在摘要,您可以使用他们的 UNIXML 格式获取它。这是一个具体的例子:

curl -LH "Accept:application/vnd.crossref.unixref+xml" http://dx.crossref.org/10.1155/2016/3845247
于 2016-07-23T20:35:37.057 回答
1

使用 curl(在我的 linux 中工作):

curl http://api.crossref.org/works/10.1080/10260220290013453 2>&1  | # doi after works    
grep -o -P '(?<=abstract":").*?(?=","DOI)' | # get text between abstract":" and ","DOI
sed -E 's/<jats:p>|<\\\/jats:p>/\n/g'      | # substitute paragraph tags 
sed 's/<[^>]*>/ /g'                          # remove other tags

# add "echo" to show unicode characters

echo -e $(curl http://api.crossref.org/works/10.1155/2016/3845247 2>&1  | # doi after works    
grep -o -P '(?<=abstract":").*?(?=","DOI)' | # get text between abstract":" and ","DOI
sed -E 's/<jats:p>|<\\\/jats:p>/\n/g'      | # substitute paragraph tags 
sed 's/<[^>]*>/ /g')                         # remove other tags

使用 R:

library(rcrossref)
cr_abstract(doi = '10.1109/TASC.2010.2088091')
于 2021-01-09T23:32:51.127 回答
1

如果文章在 PubMed(包含大约 2500 万份文档)上,您可以使用 Python 包Entrez来检索摘要。

于 2016-06-24T01:00:59.613 回答