Я хочу собрать все файлы PDF со своего компьютера и извлечь текст из каждого. Обе функции, которые у меня есть в настоящее время, делают это, однако некоторые PDF-файлы выдают мне эту ошибку:
raise PDFPasswordIncorrect
pdfminer.pdfdocument.PDFPasswordIncorrect
Я поднял ошибку в функции, которая открывает и читает файлы PDF, и это, казалось, работало с точки зрения игнорирования ошибки, но теперь она игнорирует все файлы PDF, включая хорошие, которые раньше не были проблемой.
Как я могу сделать так, чтобы он игнорировал только те файлы PDF, которые дают мне эту ошибку, а не каждый отдельный PDF?
def pdfparser(x):
try:
raise PDFPasswordIncorrect(pdfminer.pdfdocument.PDFPasswordIncorrect)
fp = open(x, 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
except (RuntimeError, TypeError, NameError,ValueError,IOError,IndexError,PermissionError):
print("Error processing {}".format(name))
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
data = retstr.getvalue()
return(data)
def pdfs(files):
for name in files:
try:
IP_list = (pdfparser(name))
keyword = re.findall(inp,IP_list)
file_dict['keyword'].append(keyword)
file_dict['name'].append(name.name[0:])
file_dict['created'].append(time.ctime(name.stat().st_ctime))
file_dict['modified'].append(time.ctime(name.stat().st_mtime))
file_dict['path'].append(name)
file_dict["content"].append(IP_list)
except (RuntimeError, TypeError, NameError,ValueError,IOError,IndexError,PermissionError):
print("Error processing {}".format(name))
#print(file_dict)
return(file_dict)
pdfs(files)