Python: невозможно извлечь текст из PDF - TypeError - PullRequest
0 голосов
/ 24 апреля 2019

Я использую этот код, который я нашел на этом сайте: 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.

Буду признателен за ваши ответы!

...