pdfminer3k中PDFPage没有名为create_pages的方法

7 投票
2 回答
8963 浏览
提问于 2025-04-28 00:32

因为我想从 Python 2 升级到 3,所以我尝试在 Python 3.4 中使用 pdfmine.3kr。看起来他们对这个库做了很多修改。可是,他们的更新日志并没有详细说明这些变化,我在用 pdfminer3k 解析 PDF 文件时一直没有成功。例如:

他们把 PDFDocument 移到了 pdfparser 里(如果我拼写错了请见谅)。PDFPage 以前有一个叫 create_pages 的方法,现在没有了。我在 PDFPage 里看到的全是一些内部方法。有没有人能提供一个 pdfminer3k 的有效示例?看起来没有新的文档来说明这些变化。

暂无标签

2 个回答

3

也许你可以试试 pdfminer.six。它的描述是:

这是一个 PDFMiner 的分支,使用 six 让它可以在 Python 2 和 3 上都能用。

你可以通过 pip 安装它:

pip install pdfminer.six

在我的代码中,它的用法和 pdfminer 一样。

希望这能帮到你哦 :)

25

如果你想从pdf文件中读取文字,下面的代码可以在使用python 3.4的情况下,配合pdfminer3k来实现。

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox, LTTextLine

fp = open('file.pdf', 'rb')
parser = PDFParser(fp)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize('')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 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):
            print(lt_obj.get_text())

fp.close()

撰写回答