Необходимо извлечь текст из PDF-файла с помощью python

#python #automation

#python #автоматизация

Вопрос:

Я пытаюсь извлечь текст из файла PDF, но выдает ошибку

 PdfReadError: Could not read malformed PDF file
  

Может кто-нибудь подсказать мне, как поступить с этим?
Вот код

 import os
import PyPDF2

dir_name='path to folder'
files=os.listdir(dir_name)
os.chdir(dir_name)
for j in files:
     print(j)
     print("In file")
     pdfFileObj = open(j, 'rb')
     pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
     print(pdfReader.numPages)
     pdfFile=pdfReader.getPage(0)
       
     #page_lines=pdfFile.extractText()
     print(pdfFile.extractText())
       
     pdfFileObj.close()
  

Ответ №1:

Это может быть причиной того, что файлы в каталоге, который вы сделали chdir. Убедитесь, что в нем нет других файлов, кроме файлов pdf. Также попробуйте извлекать файлы на основе его расширения, особенно .pdf. Вот аналогичный код. Попробуйте выполнить его только для файлов, которые, как вы обнаружили, имеют неправильную форму.

 import PyPDF2
pdfFileObj = open('example.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
print(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
print(pageObj.extractText())
pdfFileObj.close()
  

Обновить

Замечено, что этот модуль PyPDF2 не функционирует должным образом. Модуль хорош только для его метода (.NumPages). Другие методы могут работать или не работать должным образом, иногда ничего не возвращая.

Попробуйте PDFMiner для надежного извлечения. У него есть много возможностей для изучения. pdfminer

Комментарии:

1. Привет, попробовал это, но он возвращает пустую строку. Я имею в виду, что он ничего не возвращает.

2. Можете ли вы попробовать сделать то же самое, загрузив файл, указанный по этой ссылке. < github.com/nikhilkumarsingh/geeksforgeeks/blob/master /… >

3. Привет, это работает для pdf, который я скачал по ссылке. PDF, который я пытаюсь открыть, загружается с сайта и ничего не возвращает.

4. Загружаемый мной PDF-файл имеет цифровую подпись. Является ли формат нечитаемым, из-за чего текст не извлекается?

5. Может быть правдой. Этот код на самом деле работает почти для всех PDF-файлов, которые я тестировал. Попробуйте извлечь другие страницы. print(pdfReader.numPages) pageObj = pdfReader.getPage(1) print(pageObj.extractText())