Я экспериментирую с 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')