Я использую этот код, который я нашел на этом сайте: https://www.blog.pythonlibrary.org/2018/05/03/exporting-data-from-pdfs-with-python/
Код:
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()
# close open handles
converter.close()
fake_file_handle.close()
if text:
return text
if __name__ == '__main__':
print(extract_text_from_pdf('test.pdf'))
Код работает нормально длянесколько файлов PDF, которые я пробовал.Но когда я пытаюсь извлечь текст из соответствующего PDF (test.pdf), он не работает.Я получаю это сообщение об ошибке :
РЕДАКТИРОВАТЬ Здесь вы можете скачать PDF-файл, если вы хотите его протестировать: https://pdfs.semanticscholar.org/9843/df40afbf8d8e4e8a9eb821d2a0a157139e62.pdf
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-cbf464387547> in <module>
28
29 if __name__ == '__main__':
---> 30 print(extract_text_from_pdf('test.pdf'))
<ipython-input-7-cbf464387547> in extract_text_from_pdf(pdf_path)
16 caching=True,
17 check_extractable=True):
---> 18 page_interpreter.process_page(page)
19
20 text = fake_file_handle.getvalue()
~/anaconda3/lib/python3.7/site-packages/pdfminer/pdfinterp.py in process_page(self, page)
840 def process_page(self, page):
841 log.info('Processing page: %r', page)
--> 842 (x0, y0, x1, y1) = page.mediabox
843 if page.rotate == 90:
844 ctm = (0, -1, 1, 0, -y0, x1)
TypeError: cannot unpack non-iterable NoneType object
Google не так многоидеи для этой проблемы, так как PDFMiner не имеет хорошей документации.Может кто-нибудь объяснить мне, что не так?Я предполагаю, что файл неисправен, потому что код работает с другими файлами PDF.
Буду признателен за ваши ответы!