Итак, моя проблема в том, что я анализирую эти PDF-файлы для извлечения информации с помощью PDFminer, и это работает для большинства форм.Однако есть и другие PDF-файлы, которые не откроются, если вы не используете Adobe Acrobat.Если не использовать это, он выдает сообщение:
Документ, который вы пытаетесь загрузить, требует Adobe Reader 8 или выше.Возможно, вы не установили Adobe Reader или ваша среда просмотра может быть неправильно настроена для использования Adobe Reader.
Информацию об установке Adobe Reader и настройке среды просмотра см. В http://www.adobe.com/go/pdf_forms_configure.
Это нормально, когда вы просто пытаетесь взглянуть на документ, очевидно, вы просто скачиваете Adobe Acrobat и открываете его вместе с этим.Но при использовании PDFMiner я не могу понять, как анализировать текст, потому что он не использует AA для открытия файлов.
Образец PDF: http://www.forms.ssb.gov.on.ca/mbs/ssb/forms/ssbforms.nsf/GetFileAttach/012-8551E~1/$File/8551E.pdf
Образец кода:
def extract_text_by_page(pdf_path):
with open(pdf_path, 'rb') as fh:
for page in PDFPage.get_pages(fh,
caching=True,
check_extractable=True):
resource_manager = PDFResourceManager()
fake_file_handle = BytesIO()
converter = TextConverter(resource_manager, fake_file_handle)
page_interpreter = PDFPageInterpreter(resource_manager, converter)
page_interpreter.process_page(page)
text = fake_file_handle.getvalue()
yield text
# close open handles
converter.close()
fake_file_handle.close()
def extract_text(pdf_path):
with open("PDFText.txt", "wb") as text_file:
for page in extract_text_by_page(pdf_path):
print(page)
print()
text_file.write(page)
text_file.write(bytes("\n\n", 'utf-8'))
file=open("PDFText.txt")
f = file.read()
wordbank={"required", "shall", "must", "Name"}
wordcount={}
for word in wordbank:
phonelist = re.findall("\\b(" + word + ")\\b(?i)", f )
wordcount[word] = len(phonelist)
file.close();
return wordcount
def main():
args = parse_cli()
document = "Documents/" + args.file
#Get Word count
print(extract_text(document))
if __name__ == '__main__':
main()