PDF电子发票数据提取至Excel
本帖最后由 th4c3y 于 2024-10-12 12:10 编辑整合了一下自己发布的发票识别软件,重构了一下界面:
新版将不会支持win7,win7还请使用下面以前的版本。
增加(百度、腾讯)的api接口
(百度、腾讯)的api账号请自行获取,懂的都懂,不懂请百度,只是多提供一种选择。
![](https://pic.rmb.bdstatic.com/bjh/241012/554fc092e61e11d8397bc00c50977efc3201.jpeg)
百度网盘: https://pan.baidu.com/s/1TdBDLIHE_Cayukewb2X3Vg?pwd=qe9h
https://static.52pojie.cn/static/image/hrline/1.gif
PDF电子发票数据提取至Excel:
采用python正则表达式提取
支持电子发票和数电发票,不支持图片和图片形式的PDF,不支持OFD
更新3.5版本:
一直在悄悄修改,3.4终版后本不打算更新了,强迫症还是最后更新了一下
1、可移动字段顺序和隐藏字段,需重新保存为excel副本。
2、文件夹拖入
![](https://pic.rmb.bdstatic.com/bjh/240902/e14720ccad8e54bb633650525772eb655984.gif)
更新3.0版本:
1、增加发票文件整理功能(根据发票字段创建文件夹并移动或者复制文件到相应文件夹)
2、增加数据汇总功能(比较简陋,没有上数据库,就是将提取的excel表合并至一个工作表内,合并的区段是“从启动到关闭程序之间所有提取数据选择保存的文件夹”)
更新2.4版本:
修复红字发票金额为负数识别成正数的bug
应要求增加【销售方纳税人识别号】字段
预览界面双击打开文件,右键可删除源文件
删除文件或者重命名文件后excel表内是不会自动变的,需重新提取
不是所有pdf发票都能100%正确识别,请自行甄别
使用场景:
1、避免电子发票重复报销入账(筛选发票号码或者校验码重复值)
2、检查收到的发票纳税人名称和纳税人识别号是否正确
3、根据路径筛选统计报销人电子发票金额(前提:依据报销人将发票分别存入文件夹)
4、OFD文件可以用金税OFD阅读器批量转换成pdf再统一提取
百度网盘链接:https://pan.baidu.com/s/1CHosHesiVE4Lxu5iBt9bhA?pwd=l1xj
提取码:l1xj
蓝奏盘:https://wwp.lanzout.com/b00l0z820d
提取码:52pj
xml发票信息提取:
给需要的小伙伴,懒得另外开贴了。
上面蓝奏盘
cxx0515 发表于 2024-5-8 10:43
请问购买方和销售方信息是如何写的正则,我这个对于大多数没问题,就碰见个别的容易出问题
数电发票的正则式很简单,一个就可以了,但是各类税盘开出的电子发票格式多多少少都各有差异,单个的正则式很难解决,有些提取的文字单位前面就不带名称两个字。
如果是正常的电子发票可以用定位提高识别率:
bboxes = [(x1, y1, x2, y1_1), (x1, y3, x2, y3_1), (x1, y2, x3, y2_1), (x1, y4, x4, page_height)
, (x1, y2, x5, y2_1), (x6, y5, x7, y6)]
text1 = ""# 购售方
text2 = ""# 销买方
text3 = ""# 货物名称
text4 = ""# 货物名称'数电'
text5 = ""# 通行费
text6 = ""# 备注
for idx, bbox in enumerate(bboxes):
# 使用矩形区域的坐标裁剪文本
cropped_text = page.within_bbox(bbox).extract_text()
if idx == 0:
text1 += cropped_text
elif idx == 1:
text2 += cropped_text
elif idx == 2:
text3 += cropped_text
elif idx == 3:
text4 += cropped_text
elif idx == 4:
text5 += cropped_text
elif idx == 5:
text6 += cropped_text 这个好,谢谢 用用看,感谢! 测试了一下,大部分发票可以正常识别,部分发票销售方 购买方一样了 部分发票报下面的错误
处理文件 D:/Desktop/电子发票下载\dzfp_2493200000002030****_宁波市海******_20240329134625.pdf 时出错: list index out of range
另 楼主方便透露一下识别的原理吗?{:1_893:} 感谢楼主已经用上了 非常感谢的分享,下载试一试 nbwww 发表于 2024-4-6 07:40
测试了一下,大部分发票可以正常识别,部分发票销售方 购买方一样了 部分发票报下面的错误
处理文件 D:/ ...
如果购买方和销售方不是"公司"结尾的会识别不到,比如自然人和个体工商户,至于下面错误的逻辑判断是:如果pdf读取没有找到发票或者找到开票人这几个字,那么就不认为这是张发票,将不提取里面的数据。 感谢分享!下载试试。 谢谢楼主