如何从pdf文件中可靠地提取作者姓名?

2024-06-09 19:15:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pdf文件中提取作者姓名。有人知道一种可靠的方法吗?在

例如,我想从这个pdf https://arxiv.org/pdf/1111.1648中提取名称Archana Shukla


Tags: 文件方法httpsorg名称pdfarxivarchana
3条回答

PDF文档包含元数据。它包括有关文档及其内容的信息,如作者的姓名、关键字、版权信息。请参阅Adobedoc。在

您可以使用PyPDF2来提取PDF元数据。请参阅有关the DocumentInformation class的文档。在

此信息可能无法填写,可能会显示为空白。因此,一种可能是解析文本的开头或结尾,然后提取您认为的作者名。当然,这并不可靠。但是,如果你有书目数据库,可以尝试匹配。在

现在,像microsoftword或Libre Office Writer这样的编辑器总是在元数据中填写作者姓名。当您导出文档时,它会以PDF格式复制。所以,这应该对你有用。试试看,告诉我们!在

首先,有一些PDF文件是图像页面。如果我不能很容易地从图片中提取。但从你提到的pdf链接来看,我认为这是可以做到的。有一个名为PyPDF2的包,据我所知,它可以从pdf中提取文本。剩下的就是扫描最后几页并分析作者姓名。在

一个关于如何使用here描述的包的示例。其中列出的部分代码如下:

import PyPDF2
pdfFileObj = open('meetingminutes.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
disp(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
pageObj.extractText()

我将预先假设你有办法extract text from a PDF document,所以问题是“我如何才能从这篇文章中找出作者”。我认为一个简单的解决办法是使用通信电子邮件。下面是一个实现示例:

import difflib

# Some sample text
pdf_text="""SENTIMENT ANALYSIS OF DOCUMENT BASED ON ANNOTATION\n
Archana Shukla\nDepartment of Computer Science and Engineering, 
Motilal Nehru National Institute of Technology, 
Allahabad\narchana@mnnit.ac.in\nABSTRACT\nI present a tool which 
tells the quality of document or its usefulness based on annotations."""

def find_author(some_text):
    words = some_text.split(" ")
    emails = []
    for word in words:
        if "@" in word:
            emails.append(word)
    emails_clean = emails[0].split("\n")
    actual_email = [a for a in emails_clean if "@" in a]
    actual_email = actual_email[0]
    maybe_name = actual_email.split("@")[0]
    all_words_lists = [a.split("\n") for a in words]
    words = [a for sublist in all_words_lists for a in sublist]
    words.remove(actual_email)
    return difflib.get_close_matches(maybe_name, words)

在本例中,find_author(pdf_text)返回['Archana']。这不是完美的,但也不是不正确的。我想你可以用一些聪明的方法来扩展它,也许是通过在结果后面得到下一个单词,或者将这个猜测与元数据结合起来,或者甚至是在文档中找到DOI,如果它存在的话,并通过一些API查找它,但是我认为这应该是一个很好的起点。在

相关问题 更多 >