PDF

您所在的位置:网站首页 批量提取pdf数据到excel PDF

PDF

2024-07-09 21:02| 来源: 网络整理| 查看: 265

PDF_Invoice2Excel

Python提取PDF发票内容保存到Excel

摘要:这篇文章介绍如何把发票内容提取出来保存到Excel中。文章分为两个部分,第一部分程序用法,第二部分介绍代码。

程序更新了,需要使用的朋友请到这里下载ExtractInvoice.exe。注意:因为是Python打包,故程序启动较慢,大概需要一分钟,请耐心等待!

密码是授权码的MD5加密,把授权码复制粘贴到该网址http://tool.chinaz.com/tools/hash.aspx ,选择MD5加密,然后获得的结果即为密码!

测试用发票可在此下载 1.样本一;样本二;样本三

程序功能及使用:

程序会把发票中的内容提取出来然后写入Excel中,一个示例的发票内容如下:

而多份PDF的提取结果示意如下:

这里提取的关键词可自定义,只需要把需要的关键字写在Excel中即可。

程序的运行使用很简单,只要在可视化界面中输入相应的文件路径然后运行即可,程序界面示意如下:

程序开发思路:开发主要涉及三个点:其一就是PDF解析,其二是提取规则,其三就是Excel保存。

PDF解析:PDF解析使用pdfminer3K模块,Python3环境下使用如下方式安装:

pip3 install PdfMiner3K

接下来使用该模块进行PDF解析,主要函数如下:

# 解析文件 def parse_pdf(path, output_path): with open(path, 'rb') as fp: parser = PDFParser(fp) doc = PDFDocument() parser.set_document(doc) doc.set_parser(parser) doc.initialize('') rsrcmgr = PDFResourceManager() laparams = LAParams() laparams.char_margin = 1.0 laparams.word_margin = 1.0 device = PDFPageAggregator(rsrcmgr, laparams=laparams) interpreter = PDFPageInterpreter(rsrcmgr, device) extracted_text = '' for page in doc.get_pages(): interpreter.process_page(page) layout = device.get_result() for lt_obj in layout: if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine): extracted_text += lt_obj.get_text() with open(output_path, "w", encoding="utf-8") as f: f.write(extracted_text)

解析后PDF文字内容会被转换为TXT,当然,PDF必须遵守标准的Adobe规范才行,另外,不同的参数设置会导致不同的解析结果(主要是文字的相对位置),因而实际使用中必须对此参数进行调整。

提取规则:提取规则根据文字的相对位置和文字规律来确定,比如关键词后面接着内容,比如银行账号一定是数字,比如开户行关键字的内容一定会有银行,支行等词汇,这里提取规则稍微复杂一些,根据实际情况进行设定,我设定的规则如下:

# 格式化发票内容 # 内容分区 def split_block(text): text_line = text.split("\n") # 第一步:分区:[公共头,购买方,销售方,公共域] header = [] buyer = [] saler = [] body = [] index = 0 while index


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3