#python #pdfminer
Вопрос:
Я успешно выполнил следующий код для довольно большого количества PDF-файлов, извлеченных из URL-адресов, однако несколько PDF-файлов приводят к тому, что PDFMiner застревает в цикле for. Я нашел 6 URL — адресов с PDF-файлами, которые вызывают эту проблему . Кто-нибудь знает, почему PDFMiner зависает в этих случаях?
import requests
import io
from pdfminer3.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer3.converter import TextConverter
from pdfminer3.layout import LAParams
from pdfminer3.pdfpage import PDFPage
url = 'https://journals.asm.org/doi/pdf/10.1128/jb.00697-17'
# https://research-information.bristol.ac.uk/files/119649049/full_text_pdf_final_published_version_.pdf
# https://www.spandidos-publications.com/etm/13/3/1117/download
# https://research-information.bristol.ac.uk/files/155538863/full_text_pdf_final_published_version_.pdf
# https://www.research.ed.ac.uk/portal/files/166472001/fowler_etal_2020_philtranrsoca_a_chronology_of_global_air_quality.pdf
# https://periodicos.uff.br/confluencias/article/download/34693/2296
response_requests = requests.get(url, timeout=60)
binary_content = response_requests.content
content_type = response_requests.headers['content-type']
status_code = response_requests.status_code
actual_url = response_requests.url
library = 'requests'
error = "PDF Decode Error"
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
# Open the url provided as an argument to the function and read the content
# content = response.read()
# Cast to StringIO object
fp = io.BytesIO(binary_content)
interpreter = PDFPageInterpreter(rsrcmgr, device)
pagenos = set()
for page in PDFPage.get_pages(fp,
pagenos,
maxpages=0,
password='',
caching=True,
check_extractable=True):
interpreter.process_page(page)
fp.close()
device.close()
content = retstr.getvalue().lower()