CV學習筆記(二十四):發票類OCR識別

作者:雲時之間
來源:知乎
鏈接:https://zhuanlan.zhihu.com/p/145312833
編輯:王萌


在基本完成了銀行卡識別之後,開始新的任務:發票類OCR識別。發票類OCR識別一直以來也是OCR之中的熱點,包括證件類識別等等,後續都要一步步來。

一:發票格式解析

現在隨着無紙化辦公的推行,電子發票的使用率越來越多,紙質發票的數量越來越少,一般來說,我們現在的發票分爲三大類:
①:增值稅電子普通發票 ②:增值稅普通發票 ③:增值稅專用發票
現在以我在京東購物的發票爲例:
CV學習筆記(二十四):發票類OCR識別
發票的尺寸爲24*14cm,都是比較規範的標準。



二:發票識別分析

我們識別一張發票,我們一定是想從當中查詢到那些信息,那些信息有用我們着重識別,那些信息沒用我們可以暫且放在一邊。在國家稅務總局全國增值稅查驗平臺上,我們來驗證一張發票是否合法,着重要注意四項:
①發票代碼,②:發票號碼,③:開票日期,④開票金額
只要找到這四項,基本上一張發票的利用價值就結束了。
那問題來了,如何找到這四項,現在有兩個思路:
第一種,識別發票二維碼。第二種,直接全局識別發票內容(最全,也是最麻煩)
當然,爲了保證代碼的有效性,這兩種我們肯定都得做。
第一種:識別發票二維碼
識別左上角的二維碼,二維碼中包含發票裏面大部分有用信息,並且識別的結果基本上無誤差。我寫了個小代碼識別了一下:
01,10,011002000111,31015945,251.77,20200407,68212483303223031362,A6CA,
這裏邊的信息需要說一下:
發票二維碼中一共有8個屬性:
以我識別出來的爲例:
CV學習筆記(二十四):發票類OCR識別
其中第二項:不同的代碼表示的發票類型不一樣
10表示的是增值稅電子發票, 04表示的增值稅普通發票(紙票),01表示增值稅專用發票
微信識別結果:
CV學習筆記(二十四):發票類OCR識別
但是二維碼識別的問題在於,如果上傳的都是電子版截圖,效果很不錯,很好識別,但是如果上傳的是拍照的紙質發票,這種識別方法需要做一些圖像處理後再去識別,並且很多情況下識別二維碼是無效的。這是需要改進的地方。使用pyzbar
識別的成功率在65%左右。

















第二種:OpenCV+神經網絡
第二種方法使用的方法和之前識別銀行卡的架構很相似,但是處理起來會更麻煩,原因有幾點:
①:銀行卡只需要識別卡號,而發票信息需要定位更多地方
②:需要標註數據量很多,人力要求高
初步思路:
讀入圖片-> 邊緣檢測->二值化->輪廓檢測->篩選結果融合->定位->數據集製作->模型訓練->識別
先慢慢進行,一點點摸索吧~





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章