У меня есть приложение Python, которое удаляет сотни файлов PDF с общедоступного веб-сайта и просматривает их, используя эту библиотеку Python PyPDF2
Из сотен таких файлов, которые успешно анализируются,Один файл вызывает у меня изжогу.Это 18 страниц в длину.Имя файла: «bad.pdf».Вы можете видеть это здесь .
Это мой код, который будет анализировать документ:
$ virtualenv my_env
$ source my_env/bin/activate
(my_env) $ pip install PyPDF2==1.26.0
(my_env) $ python
>>> import PyPDF2
>>> def parse_pdf_doc():
>>> pdfFileObj = open('bad.pdf', 'rb')
>>> pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
>>> for curr_page_num in range(pdfReader.numPages):
>>> print 'curr_page_num = {}'.format(curr_page_num)
>>> pageObj = pdfReader.getPage(curr_page_num)
>>> print '\tPage Retrieved successfully'
>>> page_text = pageObj.extractText()
>>> print '\tText extracted successfully'
Когда я запускаю этот код, он анализирует первые девять страницуспешно.Но потом на десятой странице просто висит.Навсегда:
>>> parse_pdf_doc()
curr_page_num = 0
Page Retrieved successfully
Text extracted successfully
curr_page_num = 1
Page Retrieved successfully
Text extracted successfully
curr_page_num = 2
Page Retrieved successfully
Text extracted successfully
curr_page_num = 3
Page Retrieved successfully
Text extracted successfully
curr_page_num = 4
Page Retrieved successfully
Text extracted successfully
curr_page_num = 5
Page Retrieved successfully
Text extracted successfully
curr_page_num = 6
Page Retrieved successfully
Text extracted successfully
curr_page_num = 7
Page Retrieved successfully
Text extracted successfully
curr_page_num = 8
Page Retrieved successfully
Text extracted successfully
curr_page_num = 9
Page Retrieved successfully
<... hung here forever ...>
В чем проблема с номером страницы 10?Давайте откроем это в средстве просмотра.Ух ты! Даже Документы Google не могут разобрать страницу № 10.Так что на этой странице определенно что-то искажено:
Но все же мне нужен PyPDF, чтобы вызвать исключение или выйти из строя каким-либо другим способом, а не тольковойти в бесконечный цикл.Это убивает мой рабочий процесс.Что я могу сделать, чтобы обойти эту поврежденную страницу в файле PDF?