【问题标题】:How to robustly extract author names from pdf papers?如何从 pdf 论文中稳健地提取作者姓名?
【发布时间】:2018-05-29 03:35:19
【问题描述】:

我想从 pdf 论文中提取作者姓名。有人知道这样做的可靠方法吗?

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

【问题讨论】:

  • 我不确定,但我猜这个被否决的原因很多是因为你没有表现出你自己的尝试,一般来说我们鼓励人们表现出一些努力在询问 Stack Overflow 之前解决问题。如果您在提出此问题之前确实做出了努力,那么在编辑问题时可能会有所帮助。
  • 是否有任何答案为您解决了问题?或者如果没有,是否还有一些技术障碍有待解决,您可以详细说明吗?

标签: python pdf nlp named-entity-recognition information-extraction


【解决方案1】:

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

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

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

如今,Microsoft Word 或 Libre Office Writer 等编辑器总是在元数据中填写作者姓名。当您导出文档时,它会复制到 PDF 中。所以,这应该适合你。试试看,告诉我们!

【讨论】:

    【解决方案2】:

    我要预先假设你有办法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 查找它,但我认为这应该是一个很好的起点。

    【讨论】:

    • 对于任何有趣的人,我与dfflib 的单词相似度解决方案来自this answer,针对此问题的上下文进行了修改。
    【解决方案3】:

    首先,有一些 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()
    

    【讨论】:

    • 嗨,欢迎来到 Stack Overflow!我认为人们可能会对此表示反对,因为它没有回答获取作者姓名的具体问题。具体来说,“如何从 PDF 中提取文本”已经在 SO 上的至少一处得到解答。您能否编辑您的问题以包含一个如何解析作者姓名的示例?
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2021-12-17
    • 1970-01-01
    • 2021-02-03
    相关资源
    最近更新 更多