【问题标题】:How to read pdf file using pdfminer3k?如何使用 pdfminer3k 读取 pdf 文件?
【发布时间】:2017-10-16 21:46:03
【问题描述】:

我正在使用 python 3.5,我想从 pdf 文件中逐行读取文本。试图使用pdfminer3k,但在任何地方都没有得到正确的语法。 如何正确使用?

【问题讨论】:

    标签: python-3.x python-3.5 pdf-scraping


    【解决方案1】:

    我已经更正了 Lisa 的代码。现在可以了!

        fp = open(path, 'rb')
        from pdfminer.pdfparser import PDFParser, PDFDocument
        from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
        from pdfminer.converter import PDFPageAggregator
        from pdfminer.layout import LAParams, LTTextBox, LTTextLine
    
        parser = PDFParser(fp)
        doc = PDFDocument()
        parser.set_document(doc)
        doc.set_parser(parser)
        doc.initialize('')
        rsrcmgr = PDFResourceManager()
        laparams = LAParams()
        laparams.char_margin = 1.0
        laparams.word_margin = 1.0
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        extracted_text = ''
    
        for page in doc.get_pages():
            interpreter.process_page(page)
            layout = device.get_result()
            for lt_obj in layout:
                if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
                    extracted_text += lt_obj.get_text()
    

    【讨论】:

    • 你能补充一些关于你的代码和 Lise 的区别的描述吗?
    • extracted_text += string 改为extracted_text += lt_obj.get_text()
    • This answer 对上面的代码进行了一些更正。我还删除了 doc.set_parserdoc.initialize 行以使其正常工作。
    【解决方案2】:

    我使用的是 python 3.4,但我猜它与 python 3.5 的工作方式相同。 这是我使用的:

    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LAParams, LTTextBox, LTTextLine
    
    parser = PDFParser(file_content)
    doc = PDFDocument()
    parser.set_document(doc)
    doc.set_parser(parser)
    doc.initialize('')
    rsrcmgr = PDFResourceManager()
    laparams = LAParams()
    #I changed the following 2 parameters to get rid of white spaces inside words:
    laparams.char_margin = 1.0
    laparams.word_margin = 1.0
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    extracted_text = ''
    
    # Process each page contained in the document.
    for page in doc.get_pages():
        interpreter.process_page(page)
        layout = device.get_result()
        for lt_obj in layout:
            if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
                extracted_text += string
    
    with open('convertedFile.txt',"wb") as txt_file:
        txt_file.write(extracted_text.encode("utf-8"))
    

    【讨论】:

    • 将“字符串”替换为“lt_obj.get_text()”
    猜你喜欢
    • 2017-04-05
    • 2016-07-17
    • 1970-01-01
    • 2011-06-14
    • 2011-07-24
    • 2015-09-27
    • 2011-04-30
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多