如何在 python 3 中使用 PDFminer.six?

Urv*_*ish 9 python-3.x pdfminer pypdf2

我想使用 pdfminer.six 这是一个工具,可以与 Python3 一起用于从 PDF 文档中提取信息。问题是根本没有好的文档,也没有关于如何使用该工具的源代码示例。

我已经尝试过 StackOverflow 中的一些代码,但没有奏效。下面是我的代码。

from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()
    return text
Run Code Online (Sandbox Code Playgroud)

我想要一些关于如何使用此工具从 PDF 获取数据的代码示例。

小智 17

安装 pdfminer.six 或 pdfminer3 ( https://github.com/gwk/pdfminer3/ ) install: pip install pdfminer3 我从 3.6 升级到 3.7 时切换到 pdfminer3 我在 ubuntu 和 macos 上使用 python 3.7.3

pdfminer3 带有两个方便的工具:pdf2txt.py 和 dumppdf.py 检查源。相当小且易于理解。

以下是一个工作示例(一旦添加了 pdf 文件的位置)

from pdfminer3.layout import LAParams, LTTextBox
from pdfminer3.pdfpage import PDFPage
from pdfminer3.pdfinterp import PDFResourceManager
from pdfminer3.pdfinterp import PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.converter import TextConverter
import io

resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle, laparams=LAParams())
page_interpreter = PDFPageInterpreter(resource_manager, converter)

with open('/path/to/file.pdf', 'rb') as fh:

    for page in PDFPage.get_pages(fh,
                                  caching=True,
                                  check_extractable=True):
        page_interpreter.process_page(page)

    text = fake_file_handle.getvalue()

# close open handles
converter.close()
fake_file_handle.close()

print(text)
Run Code Online (Sandbox Code Playgroud)

  • 我想要更多关于这个问题的建议。考虑到我还有带有表格和一些文本的 PDF 文件。比如一段或一些细节,然后是一些描述一些细节的表格。最好的例子是所得税申报表或银行对账单。现在如果我使用 PDFminer 是否有可能以有意义的方式获取数据?比如年份或 ITR 以及某人支付了多少 ITR 等? (2认同)