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

最近有做财务的朋友提到,能否帮助他们做个工具,将每个月几百张的发票自动整理到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才行哦

  • 20
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 59
    评论
### 回答1: PDF(Portable Document Format,便携式文档格式)和OFD(Open Financial Document,开放金融文件格式)都是电子发票的常用格式之一。电子发票作为一种重要的财务凭证,具有便捷性和环保性等优点。因此,对于电子发票格式的解析是非常重要的。 PDF格式的电子发票可以通过Adobe Acrobat等软件进行打开和编辑,它有良好的兼容性和可靠性。同时,PDF格式还可以通过数字签名等方式进行安全加密和验证。 OFD格式的电子发票是一种由中国金融信息标准化技术委员会制定的标准格式,它具有大容量、高效率、安全可靠的优点。与PDF相比,OFD可以实现更多的业务流程和管理需求,得到了越来越广泛的应用。 在解析电子发票的过程中,需要注意格式的兼容性和安全性。同时,需要对发票的内容进行验证和解析,以确保其真实性和合法性。随着电子商务和数字化技术的不断发展,电子发票的标准化和规范化将成为未来的趋势,电子发票的解析和管理也将变得更加智能和高效。 ### 回答2: PDF电子发票OFD电子发票均属于电子发票的一种格式,它们都具有可存储、可传递等特点,已经得到广泛应用。因其具有数字化、自动化、便捷性及环保节能等优势,已成为现代电子商务的重要组成部分。 在解析PDFOFD电子发票时,首先需要理解其文档结构和数据格式。PDF在文件头部和尾部均应当有%%EOF标识,以此表示其为PDF文件,其结构包括文档信息、对象结构、交叉引用表、加密和压缩信息等。OFD则采用XML文档格式,由多个层级的节点组成。OFD采用标准的XML语法,其中包含了发票的开具机构、收款方、明细、税费等信息,信息结构清晰且易于解析。 解析PDFOFD电子发票时需要使用相应的解析工具,常见的有PDFBox、iText、OFD Reader等工具。这些工具可以帮助我们解析电子发票中的文本、图片、表格等元素,从而将其转化为可读性强、易于处理的数据格式。 综上所述,PDFOFD电子发票解析是一项重要的技术,对于电子商务及电子发票的推广普及有着至关重要的作用。随着技术的进步和应用的推广,我们相信PDFOFD电子发票的解析也会得到更好的发展和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值