【问题标题】:Extract text per page with Python pdfMiner?使用 Python pdfMiner 提取每页文本?
【发布时间】:2012-09-18 06:46:15
【问题描述】:

我已经尝试使用 pyPdf 和 pdfMiner 从 pdf 文件中提取文本。我有一些不友好的 pdf,只有 pdfMiner 能够成功提取。我正在使用代码here 来提取整个文件的文本。但是,我真的很想按页面提取文本,例如 pyPdf 中的getPage(i).extractText() 功能。有谁知道如何使用 pdfMiner 提取每页的文本?

【问题讨论】:

    标签: python pdf


    【解决方案1】:
    for pageNumber, page in enumerate(PDFDocument.get_pages()):
        if pageNumber == 42:
            #do something with the page
    

    有一篇不错的文章here

    【讨论】:

    • 有人能详细说明一下吗?由于根本没有文档,所以我很难理解 pdfminer。
    • 此代码适用于pdfminer 的哪个版本?
    • 这似乎与当前的 pdfminer 不同(写作时间为 20140328)。
    【解决方案2】:

    这是您将所有页面写入单独文件的方式:

    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.pdfpage import PDFPage
    from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
    from pdfminer.layout import LAParams
    from pdfminer.pdfdocument import PDFDocument
    from pdfminer.pdfparser import PDFParser
    import io
    import os
    
    fp = open('Files/Company_list/0010/pdf_files/testfile3.pdf', 'rb')
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    print(type(retstr))
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    
    page_no = 0
    for pageNumber, page in enumerate(PDFPage.get_pages(fp)):
        if pageNumber == page_no:
            interpreter.process_page(page)
    
            data = retstr.getvalue()
    
            with open(os.path.join('Files/Company_list/0010/text_parsed/2017AR', f'pdf page {page_no}.txt'), 'wb') as file:
                file.write(data.encode('utf-8'))
            data = ''
            retstr.truncate(0)
            retstr.seek(0)
    
        page_no += 1
    

    如果您需要特定的页码,只需将 page_no 替换为您想要的页码。

    【讨论】:

    • uni-code 字符应该是 io.BytesIO() 而不是 io.StringIO()。其他一切都很好。 :)
    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多