吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22043|回复: 483
上一主题 下一主题
收起左侧

[原创工具] PDF电子发票数据提取至Excel

    [复制链接]
跳转到指定楼层
楼主
th4c3y 发表于 2024-4-5 13:18 回帖奖励
本帖最后由 th4c3y 于 2024-10-12 12:10 编辑

整合了一下自己发布的发票识别软件,重构了一下界面:
新版将不会支持win7,win7还请使用下面以前的版本。
增加(百度、腾讯)的api接口
(百度、腾讯)的api账号请自行获取,懂的都懂,不懂请百度,只是多提供一种选择。



百度网盘: https://pan.baidu.com/s/1TdBDLIHE_Cayukewb2X3Vg?pwd=qe9h

蓝奏 密.txt (54 Bytes, 下载次数: 82)





PDF电子发票数据提取至Excel:
采用python正则表达式提取
支持电子发票和数电发票,不支持图片和图片形式的PDF,不支持OFD

更新3.5版本:
一直在悄悄修改,3.4终版后本不打算更新了,强迫症还是最后更新了一下
1、可移动字段顺序和隐藏字段,需重新保存为excel副本。
2、文件夹拖入

[hr]
更新3.0版本:
1、增加发票文件整理功能(根据发票字段创建文件夹并移动或者复制文件到相应文件夹)
2、增加数据汇总功能(比较简陋,没有上数据库,就是将提取的excel表合并至一个工作表内,合并的区段是“从启动到关闭程序之间所有提取数据选择保存的文件夹”)

[hr]

更新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发票信息提取:
给需要的小伙伴,懒得另外开贴了。
上面蓝奏盘



免费评分

参与人数 81吾爱币 +86 热心值 +68 收起 理由
w2719921106 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gejinzede + 1 找好久了,总算找到了
danielau + 1 + 1 我很赞同!
laobj + 1 谢谢@Thanks!
望断红尘 + 1 + 1 我很赞同!
低温烫伤 + 1 谢谢@Thanks!
二零一八小王子 + 3 谢谢@Thanks!
我本是一介书生 + 2 + 1 我很赞同!
xmsmart + 1 + 1 谢谢@Thanks!
lll100 + 1 + 1 谢谢@Thanks!
半步散人 + 1 + 1 很实用,之前因为工作需要,用python写了部分代码,80%能正确识别出来信息 ...
帅帅糖爸 + 1 + 1 我很赞同!
cbh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
樱夜幻 + 1 我很赞同!
鬼狂 + 1 + 1 谢谢@Thanks!
guzhiduxiu + 1 + 1 我很赞同!
ej836 + 1 + 1 我很赞同!
yzy93 + 1 + 1 谢谢@Thanks!
tail88 + 1 + 1 谢谢@Thanks!
冷丶眸 + 1 + 1 谢谢@Thanks!
chj01 + 1 + 1 用心讨论,共获提升!
Dabenlaila + 1 + 1 我很赞同!
~阿杰~ + 1 + 1 鼓励转贴优秀软件安全工具和文档!
海岱解吾 + 1 + 1 我很赞同!
jjq-james + 1 + 1 谢谢@Thanks!
dlnu + 1 + 1 谢谢@Thanks!
catoo1 + 1 谢谢@Thanks!
xiaoz165748 + 1 + 1 谢谢@Thanks!
wub88 + 1 + 1 谢谢@Thanks!
Richeng + 1 + 1 谢谢@Thanks!
kong3058 + 1 + 1 谢谢@Thanks!
12308241 + 1 我很赞同!
xiamo90 + 1 热心回复!
carefreen + 1 + 1 谢谢@Thanks!
znhjay + 1 + 1 谢谢@Thanks!
longpx + 1 + 1 啥也不说了,必须上分
无限神力 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lixu1999 + 1 + 1 谢谢@Thanks!
aa220919 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zslbh + 1 谢谢@Thanks!
海上明月986 + 1 + 1 谢谢@Thanks!
黑礼服 + 1 + 1 热心回复!
追风八千里 + 1 + 1 谢谢@Thanks!
lujun722 + 1 + 1 谢谢@Thanks!
zjy131458 + 1 + 1 建议增加销售方纳税识别号栏次,缺少销售方识别号
kriss + 1 + 1 支持支持!
gaoziqid + 1 + 1 谢谢@Thanks!
cooliceman20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yyi2001 + 1 我很赞同!
davidq + 1 热心回复!
lyqjqly + 1 + 1 我很赞同!
immt + 1 + 1 建议增加一个批量改名功能比如按发票号重命名发票文件,可不改原文件而是复.
冬天冷了多穿点 + 1 + 1 我很赞同!
日月与你 + 1 + 1 热心回复!
HHHT + 1 我很赞同!
ICSMY + 1 谢谢@Thanks!
QKDS + 2 + 1 能不能再弄下其他格式,如图片
tinglan2012 + 1 谢谢@Thanks!
chrisan + 1 谢谢@Thanks!
fancw17 + 1 + 1 我很赞同!
xiaozhiboy + 1 + 1 谢谢@Thanks!
bluerain09 + 1 + 1 谢谢@Thanks!
yjwkqq + 1 + 1 谢谢@Thanks!
leiouzhilei + 1 + 1 热心回复!正是我需要的
yjp732000 + 1 + 1 我很赞同!
hfsp + 1 + 1 鼓励转贴优秀软件安全工具和文档!
sccx + 1 + 1 谢谢@Thanks!
huangqiao + 1 + 1 谢谢@Thanks!
Zatoichi + 1 + 1 谢谢@Thanks!
yangye123 + 1 + 1 我很赞同!
bcmgzht + 1 + 1 谢谢@Thanks!
sonc0345 + 1 热心回复!
xingshizhuyi + 1 + 1 我很赞同!
xueyuyuan + 1 + 1 谢谢@Thanks!
sunlit + 1 + 1 谢谢@Thanks!
aqzt + 1 谢谢@Thanks!
wtwvip + 1 + 1 我很赞同!
thinhorse + 1 + 1 谢谢@Thanks!
gogo2023 + 1 + 1 谢谢@Thanks!
schtg + 1 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| th4c3y 发表于 2024-5-8 12:16 |楼主
cxx0515 发表于 2024-5-8 10:43
请问购买方和销售方信息是如何写的正则,我这个对于大多数没问题,就碰见个别的容易出问题
[mw_shl_code=pyt ...

数电发票的正则式很简单,一个就可以了,但是各类税盘开出的电子发票格式多多少少都各有差异,单个的正则式很难解决,有些提取的文字单位前面就不带名称两个字。
如果是正常的电子发票可以用定位提高识别率:
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
头像被屏蔽
推荐
pj666a 发表于 2024-4-6 06:51
3#
iloveshe 发表于 2024-4-6 03:28
4#
heywood 发表于 2024-4-6 07:29
用用看,感谢!
5#
nbwww 发表于 2024-4-6 07:40
测试了一下,大部分发票可以正常识别,部分发票销售方 购买方一样了   部分发票报下面的错误
处理文件 D:/Desktop/电子发票下载\dzfp_2493200000002030****_宁波市海******_20240329134625.pdf 时出错: list index out of range

另 楼主方便透露一下识别的原理吗?
6#
zhaoxuanjun 发表于 2024-4-6 08:02
感谢楼主已经用上了
7#
luobosier 发表于 2024-4-6 08:50
非常感谢的分享,下载试一试
8#
 楼主| th4c3y 发表于 2024-4-6 09:07 |楼主
nbwww 发表于 2024-4-6 07:40
测试了一下,大部分发票可以正常识别,部分发票销售方 购买方一样了   部分发票报下面的错误
处理文件 D:/ ...

如果购买方和销售方不是"公司"结尾的会识别不到,比如自然人和个体工商户,至于下面错误的逻辑判断是:如果pdf读取没有找到发票或者找到开票人这几个字,那么就不认为这是张发票,将不提取里面的数据。
9#
fxd680126 发表于 2024-4-6 09:11
感谢分享!下载试试。
10#
只看楼主 发表于 2024-4-6 09:21
谢谢楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 13:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表