批量识别PDF/OFD/PNG/JPG电子发票到EXCEL

您所在的位置:网站首页 如何快速把数据录入表格 批量识别PDF/OFD/PNG/JPG电子发票到EXCEL

批量识别PDF/OFD/PNG/JPG电子发票到EXCEL

2023-07-16 11:50| 来源: 网络整理| 查看: 265

最近有做财务的朋友提到,能否帮助他们做个工具,将每个月几百张的发票自动整理到EXCEL(既有PDF电子版、也有OFD的,甚至纸质的都还有,过程实在艰巨)。下来找了一圈有免费的、也有商用的,结果要么功能单一、要么缺少关键字段。对比实际效果以及后续的扩展性,决定还是先做个商用版的脚本试试,满足需求比什么都重要。关键是用Python来做,所有格式几步搞定,维护相对容易。

以下为旧版用法,新版已和税务总局同步,并于2023.7.1发布。全面支持最新全电发票,使用更简单,详情移步全电发票识别icon-default.png?t=N5K3https://blog.csdn.net/weixin_44595172/article/details/131498920

首先

准备好开发环境,商用的就比较简单了,直接下载安装就行(略);

下载地址:https://dgo.ink/crm/dl/?shareId=367561

参考手册:https://d.dgo.ink/doc/GoBot_Pro_1.0.pdf (版本>=3.12,支持多页,2023.4)

开始设计

安装完成后,直接复制下面代码进去运行就可以,注意不要带入其他字符。剩下的可参考手册自行搞定。

import os,shutil rootPath="d:/发票目录/"#这里修改为发票所在目录 scannedPath=rootPath+'scanned/' if not os.path.exists(scannedPath): os.makedirs(scannedPath) table = [['文件','发票号码','发票代码','购买方名称','合计金额','价税合计','销售方名称','纳税人识别号']] for file in os.listdir(rootPath): if file[-3:].lower() in ['pdf','ofd']:#仅限四种格式文件,PDF支持多页 print('正在识别文件:%s...'%(file)) d = invoiceStr(rootPath+file)#识别发票 if isinstance(d,list): for p in d: #print(p)#查看字段详情 pageid = str(d.index(p)+1)#获取页码 #添加指定字段到数据表,要什么加什么,注意和表头对应 table.append([file+pageid,p['InvoiceNum'],p['InvoiceCode'],p['PurchaserName'],p['TotalAmount'],p['AmountInFiguers'],p['SellerName'],p['SellerRegisterNum']]) else: #print(d) table.append([file,d['InvoiceNum'],d['InvoiceCode'],d['PurchaserName'],d['TotalAmount'],d['AmountInFiguers'],d['SellerName'],d['SellerRegisterNum']]) shutil.move(rootPath+file,scannedPath+file)#移除已识别的文件,若有剩余,可结合控制台信息进行人工排查 dumpData(table,name='发票明细.xlsx',title='发票详情',path=rootPath)#保存整理后的Excel文件到发票目录 坐等结果

 设计完成后,把各种格式的发票放在指定目录,然后运行上面的代码就可以了(完整的),字段是我调试用的,各位根据自己需求添加即可。

更新(2023.7.3)

根据实际需求增加了原始文件在识别后按规则自动重命名,同时Excel内也将使用新名称,方便日后归档处理,具体见代码第16行。示例命名规则为“原始文件名+页码”,仅供参考。

添加自定义字段,移除第18行的"#",查看有哪些字段可用,然后参考第19行写法,往里加就行了

代码已更新,解决之前有朋友说识别出来只有表头的问题,还有软件也需升级到3.12才行哦



【本文地址】


今日新闻


推荐新闻


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