详述发票二维码与python解析技术

一、二维码诞生

        二维码诞生于1994年,发明者是日本Denso Wave株式会社的原昌宏,最初叫QR码,可容纳7000个数字,可处理汉字,读取速度比其他编码快10倍以上。目的是为了解决汽车零件的追踪问题。随着移动互联网的发展,二维码的应用变得更加广泛,包括在发票上的应用。

二、发票中二维码

       具体到发票二维码的历史和发展,它最初是为了应对传统纸质发票存在的诸如易丢失、伪造等问题而设计的。通过将发票的关键信息(如发票代码、号码、开票日期、金额等)编码进二维码中,用户可以通过扫描二维码快速获取这些信息,从而实现发票的真伪验证、报销流程的自动化等功能。

2.1 二维码密文

        2011年国家税务总局颁布《关于增值税防伪税控系统汉字防伪项目试运行有关问题的通知》(国税发[2011]44号),上海、陕西和深圳三地试运行新的“二维码增值税专用发票”。在不改变现有防伪税控系统密码体系前提下,采用数字密码和二维码技术,利用存储更多信息量的二维码替代原来的84位和108位字符密文,在加密发票七要素信息的基础上实现了对购买方企业名称、销售方企业名称、货物名称、单位和数量等信息的加密、报税采集和解密认证功能。

2.2 第一张带二维码发票

国家税务总局2013 年2月25日公布的《网络发票管理办法》(国家税务总局令第30号)出台。2013年4月1日起施行。

2013年6月27日,中国内地首张电子发票2013年由京东商城开出。

2014年04月01日,全国首张电子发票重庆落地。重庆市地方税务局通用电子发票,发票代码是250001470001,发票号码是00000001,付款方是乐透电子商务有限公司,收款人是李莹,金额是贰万零伍佰圆整。发票的下方则是可供验证查询的二维码。

2014年06月25日,成都首张电子发票。

2014年6月27日,在成功开具中国电商领域首张电子发票一周年之际,京东再次引领行业之先,与北京市国税局电子发票服务平台、中国人民财产保险股份有限公司(简称“人保财险”)正式对接,成功开具中国首张对公可报销电子发票,并以电子化方式入账。

2015年1月14日,湖北省电子发票系统正式启动运行,武汉京东公司开出了订单号为7927210615、发票号为15005280的全省首份电子发票

2015年08月01日, 全国首张升级版电子发票在北京开出。

2018年8月10日,全国首张区块链电子发票在深圳实现落地,其底层技术由腾讯提供。

2019年4月22日,首张物业服务区块链电子发票二维码

数电票二维码

2021年12月1日,广东省、上海市和内蒙古自治区试点推行全面数字化电子发票(简称数电发票)

2.3 火车票二维码

2024年数电票

 2.4 飞机票二维码

飞机票多年是条码,二维码使用比较晚。

三、发票二维码种类

3.1、位置

1、在顶部左侧和顶部右侧   

2、在右下部。

3.2、内容种类

1、发票防伪二维码

见2.1 章节中,发票中密码区。

2、查验网址二维码(深圳区块链电子发票)

一般是一个网络链接。链接后面的参数带了对应的哈希值、发票号码和金额。

“ https://bcfp.shenzhen.chinatax.gov.cn/verify/scan?hash=d19bdf09f6d3f8afd0e740b7b22abfdbd2234nnfwe3e9834c7d4d4&bill_num=44687986&total_amount=430000 ”

3、发票分发交付二维码

以北京为例。 二维码中字符内容:

“https://dppt.beijing.chinatax.gov.cn:8443/v/2_25112000000029144028_2025021616301600B992CF4”

3.3 样式

主要两种:中间带空心和没有空心的。

   

四、二维码解析

4.1、解析库

1、python: QReader, cv2.wechat_qrcode_WeChatQRCode(腾讯贡献)

2、JavaScript:jsQR

3、Java:zxing

4、C/C++:ZBar

5、自行写代码解析。适合有特殊需要或者研究爱好者,自行查找资料。

4.2 样式种类

1、7段式

‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076’

2、8段式

二维码中的信息示例:

‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076,727C’

该字符串以逗号分隔每一个属性值,从左到右依次是:

01:第1个属性值,固定01

01:第2个属性值,表示发票种类代码,不同类型发票值如下。

  • 01增值税专用发票
  • 04增值税普通发票
  • 10增值税普通发票(电子)
  • 08增值税专用发票(电子)

3702221130:第3个属性值,表示发票代码

04800054:第4个属性值,表示发票号码

888.8:第5个属性值,表示开票金额

20230517:第6个属性值,表示开票日期,该值为2023年5月17日。

68893455791285901076:第7个属性值,表示校验码,没有则为空。铁路电子发票第7段为空。

727C:第8个属性值,表示加密字符。一般采用CRC算法中的CRC16_X25

3、9段式

‘01,01,3702221130,04800054,888.8,20230517,68893455791285901076,727C,’

例如:区块链电子发票。9段式比8段式最后多了一个逗号。第9个属性值,表示随机数。很多时候为空。

4、不分段

'380436471472611965765015225038393363531606789836706805872680231044800430121199807180419053897628805389762880538976288053897628805389762880800000'

例如:早期火车票中的。

4.3  使用成熟的发票二维码自动解析工具

可以自动解析出二维码内所有信息,并导出到excel。

以上资料来自网络公开搜集。如有不准欢迎留言指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值