Python не будет отображать текст при использовании функции print () - PullRequest
0 голосов
/ 22 апреля 2020

Я экспериментирую с pdfminer. Я нашел фрагмент кода, который я хотел попробовать перед дальнейшим рассмотрением. Цель этого кода - извлечь текст из .pdf и сохранить его в объекте str. Он работает хорошо, он извлекает текст из документа PDF, проблема возникает, когда я пытаюсь напечатать str. Он ничего не печатает.

Str содержит текст, например, я могу напечатать его части с помощью print(text[0:10]). Он также напечатает все это с помощью print(text[0:len(s)-1]) Я также могу записать его в файл без проблем.

Только функция print() не работает сама по себе. Это стандартная строка с кодировкой utf-8.

Я получаю тот же результат, когда записываю содержимое .pdf в объект байтов, а затем преобразую его в строку. Хотя python может печатать байты объекта без проблем.

Это не проблема IDE, я получаю одинаковый результат как в Spyder, так и в VS Code.

Любое предложение приветствуется.

Вот код Я использую (если я пытаюсь напечатать переменную s, ничего не происходит):

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):
    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()

    converter.close()
    fake_file_handle.close()

    if text:
        return text

if __name__ == '__main__':
    s = extract_text_from_pdf('mypdf.pdf')

1 Ответ

0 голосов
/ 22 апреля 2020

Ответ: этот код работает правильно.

Не уверен, как вам помочь. Какое сообщение об ошибке вы получаете? Какой размер файла вашего .pdf? Процесс завершается sh с кодом выхода 0? Разве процесс никогда не заканчивается sh, и вам нужно завершить его?

Я поместил ваш код в PyCharm и запустил его на «сложном» PDF и «простом» PDF. (Единственный шаг, который я должен был сделать перед запуском, - убедиться, что pdfminer был установлен, что, я полагаю, и вы сделали.)

  • «Сложный» pdf занял очень много времени (24 страницы с графикой и др. c.). Windows Диспетчер задач заверил меня, что он работает.
  • «Простой» pdf занял секунды.

Некоторые операторы печати подтверждают, что каждая страница «получена»:

        for page in PDFPage.get_pages(fh, caching=True, check_extractable=True):
            print(type(page))
            print(page)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...