专栏首页云时之间CV学习笔记(二十三):发票类OCR识别

CV学习笔记(二十三):发票类OCR识别

在基本完成了银行卡识别之后,开始新的任务:发票类OCR识别。发票类OCR识别一直以来也是OCR之中的热点,包括证件类识别等等,后续都要一步步来。

一:发票格式解析

现在随着无纸化办公的推行,电子发票的使用率越来越多,纸质发票的数量越来越少,一般来说,我们现在的发票分为三大类:

①:增值税电子普通发票 ②:增值税普通发票 ③:增值税专用发票

现在以我在京东购物的发票为例:

发票的尺寸为24*14cm,都是比较规范的标准。

二:发票识别分析

我们识别一张发票,我们一定是想从当中查询到那些信息,那些信息有用我们着重识别,那些信息没用我们可以暂且放在一边。在国家税务总局全国增值税查验平台上,我们来验证一张发票是否合法,着重要注意四项:

①发票代码,②:发票号码,③:开票日期,④开票金额

只要找到这四项,基本上一张发票的利用价值就结束了。

那问题来了,如何找到这四项,现在有两个思路:

第一种,识别发票二维码。第二种,直接全局识别发票内容(最全,也是最麻烦)

当然,为了保证代码的有效性,这两种我们肯定都得做。

第一种:识别发票二维码

识别左上角的二维码,二维码中包含发票里面大部分有用信息,并且识别的结果基本上无误差。我写了个小代码识别了一下:

01,10,011002000111,31015945,251.77,20200407,68212483303223031362,A6CA,

这里边的信息需要说一下:

发票二维码中一共有8个属性:

以我识别出来的为例:

其中第二项:不同的代码表示的发票类型不一样

10表示的是增值税电子发票, 04表示的增值税普通发票(纸票),01表示增值税专用发票

微信识别结果:

但是二维码识别的问题在于,如果上传的都是电子版截图,效果很不错,很好识别,但是如果上传的是拍照的纸质发票,这种识别方法需要做一些图像处理后再去识别,并且很多情况下识别二维码是无效的。这是需要改进的地方。使用pyzbar

识别的成功率在65%左右。

第二种:OpenCV+神经网络

第二种方法使用的方法和之前识别银行卡的架构很相似,但是处理起来会更麻烦,原因有几点:

①:银行卡只需要识别卡号,而发票信息需要定位更多地方

②:需要标注数据量很多,人力要求高

初步思路:

读入图片-> 边缘检测->二值化->轮廓检测->筛选结果融合->定位->数据集制作->模型训练->识别

先慢慢进行,一点点摸索吧~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习与神经网络:单层感知机应用(二分类)

    因为单层感知器的特性适合于做分类问题,借这个例子我们去实际体会下单层感知器的二分类问题:

    云时之间
  • 深度学习与神经网络:单层感知机应用(二分类)

    因为单层感知器的特性适合于做分类问题,借这个例子我们去实际体会下单层感知器的二分类问题: 比如这样一组数据集: X =[ -9,  1, -12, -4,  ...

    云时之间
  • 数据结构(三):栈与队列

    3.1❶若按教科书3.1.1节中图3.1(b)所示铁道进行车厢调度(注意:两侧铁道均为单向行驶道),则请回答: ? (1) 如果进站的车厢序列为123,则可能...

    云时之间
  • 中产阶级重塑服装电商市场,这是其给创业者带来的四点启示

    今年3月,京东将服饰家居事业部一拆二,成立大服饰事业部和居家生活事业部,在服装电商市场掀起波澜。在许多人印象中,服装电商已被天猫、唯品会等巨头牢牢把持,后来者已...

    罗超频道
  • Python入门四:创建第一个图形界面

    1、使用QtDesigner制作界面,打开的界面设计工具QtDesigner,如图:

    py3study
  • 沙特推反网络犯罪新法规 偷看配偶手机或犯罪

    据台媒报道,沙特阿拉伯宣布,偷看配偶手机可能触犯刑法,代价是面临巨额罚金,外加坐牢一年。沙特信息部发布一则英文声明写道:“已婚人士若要偷看配偶手机,恐怕得三思。...

    C4rpeDime
  • 图图谈设计模式_原型设计模式_java

    那为什么呢,原因很简单,效率高。最近做项目就用到该模式,实体A关联实体B,B关联实体C。而通过实现序列化和反序列化的深度复制,只需复制A,那么关联的对象都可以同...

    聚沙成塔
  • TW洞见 | 看板与利特尔法则

    利特尔法则(Little’s Law)作为一个非常朴素的原理,为看板方法奠定了一个理论基础,看似简单的公式背后却有其复杂的一面。 一、利特尔法则 利特尔法则的公...

    ThoughtWorks
  • 从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

    版权声明:本文为博主原创文章,未经博主允许不得转载。违者必究。 https://blog.c...

    用户1150922
  • CMAKE学习记录(二)

    # 找到boost特定版本,以及需要的子模块,1.46.1为最低版本,REQUIRED强调必须找到该模块,否则编译失败;

    yzh

扫码关注云+社区

领取腾讯云代金券