如何用Python提取PDF文本并关联保险合同特定字段值
提取保险合同PDF中指定字段与对应数值的问题
已使用的PDF文本提取代码
我用以下基于pdfminer的Python代码提取保险合同PDF中的文本(字符串形式):
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_by_page(pdf_path): with open(pdf_path, 'rb') as fh: for page in PDFPage.get_pages(fh, caching=True, check_extractable=False): resource_manager = PDFResourceManager() fake_file_handle = io.StringIO() 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): text = "" for page in extract_text_by_page(pdf_path): #print(page) text= page+" "+text return text # Driver code if __name__ == '__main__': text=extract_text('document.pdf') print(text)
需求说明
需要提取固定红色标识的字段(如Oneri di registrazione atti giudiziari)及其对应的蓝色数值,示例输出如下:
- 执行代码:
输出字符串:print(oneri_di_registrazione_atti_giudiziari)"Valore in lite minimo 300 Limite di indennizzo 500" - 执行代码:
输出字符串:print(tutela_dati_personali)"Massimale per evento 25000"
红色字段不会随文件变化,但蓝色数值可能改变,希望将数值与对应红色字段关联。
提取到的原始文本
Valoreinliteminimoeuro300,00OneridiregistrazionediattigiudiziariLimitediindennizzoeuro500,00PerlagaranziaATTIVITA'AZIENDALECOMPLETAMassimalepereventoeuro50.000,00SpeseperunsecondolegaledomiciliatarioLimitediindennizzoeuro2.000,00ControversiecontrattualiconifornitoriValoreinlitemassimoEuro50.000,00ControversiecontrattualiconifornitoriScoperto20%PerlagaranziaSALUTEESICUREZZASULLAVOROMassimalepereventoeuro25.000,00PerlagaranziaTUTELADEIDATIPERSONALIMassimalepereventoeuro25.000,00
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

