如何使用 pdfminer3k 读取 pdf 文件?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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()”

以上是关于如何使用 pdfminer3k 读取 pdf 文件?的主要内容,如果未能解决你的问题,请参考以下文章

pdf文件的读取和识别

Python读取PDF内容

Python3.x:PDFMiner3k在线本地解析pdf

支持python3.5的pdf文件处理库都有哪些

python3处理pdf

[转]Python 解析 PDF 文本和表格的四大方法介绍