Как использовать PDFminer.six с Python 3? - PullRequest
0 голосов
/ 07 июня 2019

Я хочу использовать pdfminer.six для Python 3 для извлечения 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

Мне нужен пример кода о том, как использовать это для получения данных из PDF-файлов.

1 Ответ

1 голос
/ 10 июня 2019

Установить pdfminer.six или pdfminer3 (https://github.com/gwk/pdfminer3/) установить: pip install pdfminer3 Я перешел на pdfminer3 при обновлении до 3.7 с 3.6 Я использую на 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

resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle)
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)
...