Извлечение текста с каждой страницы PDF с помощью pdfminer.six - PullRequest
0 голосов
/ 25 сентября 2018

Документация для pdfminer в лучшем случае плохая.Сначала я использовал pdfminer, и он работал для некоторых файлов PDF, затем я столкнулся с некоторыми ошибками и понял, что должен использовать pdfminer.six

Я хочу извлечь текст с каждой страницы PDF, чтобы я могможете следить за тем, где я нашел конкретные слова и тому подобное.

Использование документации:

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice

# Open a PDF file.
fp = open('mypdf.pdf', 'rb')
# Create a PDF parser object associated with the file object.
parser = PDFParser(fp)
# Create a PDF document object that stores the document structure.
# Supply the password for initialization.
document = PDFDocument(parser, password)
# Check if the document allows text extraction. If not, abort.
if not document.is_extractable:
    raise PDFTextExtractionNotAllowed
# Create a PDF resource manager object that stores shared resources.
rsrcmgr = PDFResourceManager()
# Create a PDF device object.
device = PDFDevice(rsrcmgr)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
for page in PDFPage.create_pages(document):
    interpreter.process_page(page)

Мы проанализировали все страницы, но нет документации о том, как получить какие элементы иличто-нибудь из PDF-страницы

Я искал в файле PDFPage.py способ извлечения текста из каждой страницы PDF, и, конечно, все не так просто.

Чтобы усложнить ситуацию, есть как минимум 3 версии pdfminer и, конечно, со временем все было обновлено, поэтому любые примеры, которые я могу найти, не совместимы.

1 Ответ

0 голосов
/ 13 июля 2019

Вот версия, которую я использую для извлечения текста из PDF-файлов.

import io
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage


def extract_text_from_pdf(pdf_path):
    """
    This function extracts text from pdf file and return text as string.
    :param pdf_path: path to pdf file.
    :return: text string containing text of pdf.
    """
    resource_manager = PDFResourceManager()
    fake_file_handle = io.StringIO()
    converter = TextConverter(resource_manager, fake_file_handle)
    page_interpreter = PDFPageInterpreter(resource_manager, converter)

    with open(pdf_path, '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()

    if text:
        return text
    return None
...