?

基于顏色分割的發票識別與自校正系統研究

2021-05-19 01:35
網絡安全與數據管理 2021年5期
關鍵詞:稅號字符發票

王 濤

(同濟大學浙江學院 電子與信息工程系,浙江 嘉興314000)

0 引言

發票是企業經營或人們日常消費生活中不可或缺的一部分。面對日益增長的發票管理需求,無論是紙質發票還是電子發票,企業或個人都需要在發票信息的錄入、存儲及后續管理上花費很多時間。因此,應用現代技術對發票內容信息進行自動掃描識別并提取成為財務會計、計算機和軟件應用等多個領域共同希望解決的課題。何文琦[1]在分析了高校財務報銷難題后,提出了直接采用OCR 技術對票據圖片進行識別,提取發票中的關鍵信息,減少網上報銷過程中的手工錄入環節。王林水[2]等提出了一個自動票據識別系統,采用圖像預處理技術將圖像進行二值化,通過版面分析后進行字符識別。王貴新[3]等人建立了利用隱態馬爾可夫模型(HMMs)的銀行票據識別系統,系統首先通過光電掃描設備將用戶填寫的票據掃描成灰度圖像,然后去掉票據的底色,使之變為黑白圖像,對黑白圖像進行去噪處理后,再進行文字的分割。

縱觀上述文獻,現有的研究都是將采集的發票圖像進行二值化處理,忽略掉圖片本身的顏色信息,其次不區分二維碼、印章等圖片組成,直接采用版式分析的方法或者OCR 的方法對圖片中的文字進行識別,這必然帶來識別準確率的降低。而且上述方法都是對票面信息進行提取,并不進行驗證,這導致存在最終結果上的差錯率,在實際使用過程中還需要輔助人工驗證。鑒于此,本文提出通過顏色分割方法對發票圖片進行信息分層,得到二維碼、印章區域和文字區域,針對文字區域按照預設的格式進行文字識別,獲得發票上所記載的發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額等信息;針對二維碼圖片進行自動掃描從互聯網服務器獲取發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額等信息。然后將兩部分信息進行比對驗證發票的真偽。驗證為正確的發票分別將原始圖片和信息數據存入數據庫,對用戶的發票憑證進行統一的信息管理。驗證為錯誤的信息以二維碼獲取得信息為準存入數據庫,并在數據中進行標記以備后續查詢。

1 發票組成

如圖1 所示,一張普通的增值稅發票由以下幾個部分組成:

(1)兩枚紅色的印章。一枚為稅務局印章,位于發票中間上方邊緣位置;一枚為銷售方公司發票專用印章,位于右下角邊緣位置。

(2)橙色的格線與預填字符。發票的主體結構是橙色的表格,通過表格格線將各項信息齊整地包圍,同時又分隔成整齊且有規律的區塊,如購買方、密碼區、銷售方等。此外,橙色預填字符提示每個區塊的內容信息。

(3)黑色的填寫字符與二維碼。用戶填寫的黑色字符是每張發票的核心信息,也是發票識別方法的提取目標信息。通過掃描左上角的二維碼可以得到該發票的發票代碼、發票號碼、合計金額、開票日期和發票驗證碼。如需獲得更多的信息,仍然需要通過恰當的方法提取黑色填寫字符,包括購買方和銷售方的名稱、納稅人識別號、貨物或應稅勞務、服務名稱、金額、稅額等。

圖1 增值稅發票樣例

2 系統設計

理想的識別與自校正系統結構如圖2 所示。

圖2 發票識別與自校正系統結構

基于發票版面三種不同的色值,系統首先將一張版面規范的發票圖像進行顏色分割,針對分割出的包含有意義信息的黑色字符層進行版面分析,劃分出圖片區域和文本區域。對于文本區域采用OCR技術識別其中的字符和數字[4],經過信息分類模塊的處理就可以獲取發票圖像中的發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額區域中的數據。對于圖片區域,利用二維碼掃描技術對分割出的二維碼區域進行掃描識別,獲取發票的發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額等項目信息[5]。憑證管理模塊對識別和掃描出的相同域的數據進行數據庫存儲和比對驗證,并將發票圖片進行永久性存儲,提供圖形和程序接口供用戶查詢。

(1)顏色分割模塊

顏色分割模塊將從色彩維度對發票圖像進行圖層分離[6]。根據發票的主要顏色,該模塊將一般增值稅發票圖像分成三層:紅色印章層、橙色表格層、黑色字符層。黑色字符圖層是由多個字符區域和二維碼區域構成。

(2)版面分析模塊

常用的版面分析方法有基于連通域、 二分法、基于組合等方法?;谶B通域的版面分析是一種典型的自底向上的方法;二分法版面分析思路簡捷、易于編程,但是對于復雜的版面分析不太適應[7]。本文采用了傳統的基于連通域的分析方法對顏色分割以后的發票黑色字符圖層進行劃分,得到不同的文字區域和圖片區域[8]。

(3)字符識別模塊

對文字區域進行OCR 識別,通過文本增強、字符分割、字符細化和字符歸一化[9],識別出發票中的文本和數字信息。對于中英文字符的識別很多文獻都提出較好的方法并且也已經有成熟的軟件產品和工具包可供使用[10]。

(4)二維碼掃描模塊

系統對分割出來的二維碼圖片區域調用標準的二維碼掃描程序接口,就可以從互聯網獲取發票的發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額項目信息,并將其存入到數據庫中與文字識別的結果進行比對驗證。

(5)信息項分類模塊

信息項分類模塊是指在字符識別以后對所得到的文字信息進行按項目分類,分別歸入所屬的信息域中。一般發票都包含了發票代碼、發票號碼、開票日期、購方稅號、銷方稅號、金額和稅額等關鍵項,按照這些關鍵字把識別出來的文本信息進行歸類形成信息項。同時對錯誤字符進行糾正最后存入數據庫。識別工具包并不能準確識別所有的印刷字,而且加上版面噪音的干擾,實際識別后得到的信息域往往不完整。本文綜合利用動態規劃字典匹配等技術,利用規則數據庫中的信息結合識別后的結果最大程度使所需域中的信息完整[11]。

(6)憑證管理模塊

將從兩個模塊得到的票據信息項分別存入數據庫中,并進行比對驗證,對于有差異信息項的記錄進行標記。同時,將發票原圖像進行永久性存儲,并將路徑保存在數據庫中。用戶可以通過該模塊查看識別出的發票信息和發票圖片,也可以通過程序接口調用獲取特定發票的處理結果。

3 關鍵模塊的實現

3.1 顏色分割

顏色分割就是將圖片按顏色分割出只有該顏色或類似顏色的圖片[12]。

該發票識別系統采用的是以RGB 顏色空間為主、HSV 和HSL 為輔的分層策略。更具體地說,RGB可以將所有的顏色分成三個成分,任一顏色都可以根據這三個成分的值調配出來,每個成分值為0~255,其中(0,0,0)為黑,(255,255,255)為白。HSV 和HSL是色調、飽和度和亮度的描述,對比度在識別圖像時可以發揮重要的作用。

系統通過OpenCV 計算機視覺庫進行顏色分割[13],可以將OpenCV 提供的顏色空間轉換保存到變量中:

Flags=[i for i in dir(cv2) if i.startswith(‘COLOR_’)]

顏色空間轉換就是從一個通道到另一個通道,例 如:Flags [40] 的 值 為“COLOR_BGR2RGB”,其 中“COLOR_”后面的字符代表原始顏色空間,“2”后面的字符表示目標顏色空間。其作用是從BGR 到RGB通道的交換。

通過matplotlib.pyplot 來查看圖像:

HSV 可以獲得顏色的分布,也可以在3D 中顯示出來,還可以根據每個像素的組件將每個像素放置在對應的位置,以及將對應的顏色放置在對應的位置上。

從圖3 可以看到發票圖片在該圖的顏色分布情況。不過由于圖片變量nemo 數據的一部分延伸到整個顏色空間,根據RGB 值的范圍在RGB 空間分割nemo 并不容易。

如果把HSV 代表的色調、飽和度的值表示到一個圓柱色空間,那么顏色可以建模為圍繞中心垂直軸旋轉的角度尺寸代表值 通 道[14]。第 三 個 軸“飽和度”定義色調的深淺,從垂直軸上的最不飽和到離中心最遠的最飽和,如圖3 所示。系統通過cvt-Color 函數將圖像轉換到HSV 空間,此時發票橙色和黑色的飽和度和亮度值與其他顏色很不相同,但其大部分都處于色調軸上的小范圍內,是分段的關鍵點。當獲得合適的顏色范圍,便可以使用這些值去判斷閾值。系統通過inRange()返回圖像范圍大小的二進制掩碼,其中值1 表示范圍內的值,0 表示范圍外的值。

mask=cv2.inRange(圖像,較低范圍,較高范圍)

最后,系統通過在原始圖像的頂部加上遮罩,即完成了某顏色圖層的初步分割:

如果此時分割邊界上仍有一些雜散像素,系統可以進一步使用高斯模糊對這些像素進行平滑去噪處理。

Blur=cv.GaussianBlur(result,(7,7),0)

基于顏色分割的發票各個圖層效果如圖4~圖7所示。

圖3 顏色分布結構圖

圖4 原始發票圖像

3.2 信息項分類

由于字符識別程序自身存在差錯率,因此對文本信息進行字符識別往往得不到完整的文字信息。所以在得到發票信息項之前,需要對這些不能識別的字符進行補充和完善。由于分類項目的名稱和含義是已知的,因此可以根據已知信息建立字典,將這些域內的信息與規則數據庫中的信息進行匹配,就可以將缺少的信息補充完整。

圖5 橙色表格圖層

圖6 黑色字符圖層

圖7 紅色印章圖層

在圖8 中信息項分類器的構造規則主要基于以下幾點:

(1)姓名、城市、省、州等都是某些固定的字符;

(2)用戶和賬號等信息一般切分為兩個區域;

(3)根據表達習慣,地址信息的書寫往往有固定的次序關系;

(4)信息項的名字往往位于行的開始位置。

根據如上四點建立信息項分類器,并利用信息項名字字典和值域規則對識別后的文本信息進行分類,同時,充分考慮文字長度,與數據庫的信息進行匹配后得到最為理想的分類結果。

構造字符容錯器是利用了信息項之間的固有關系,比如城市和省名的相互關聯、姓名自身字符的關聯關系等,同時識別出的單詞應該有意義,否則可以利用拼寫檢查對其進行糾正。規則數據庫中存有這些關聯關系,以及常用姓名表字典等信息。但是在進行匹配糾正時需要注意對于不能唯一匹配的信息項需要綜合考慮各種信息來確定結果,經過字符容錯器糾正的信息需要被反饋給信息項分類器重復進行分類、糾錯、再分類的操作直到輸出結果不再變化為止。經過這樣的錯誤糾正和信息分類后得到的文字將以信息項和值域的形式交給其他模塊再進行處理。

3.3 實現效果

圖9、圖10 為該系統在移動端的實現效果圖,通過移動端手機掃描或者上傳發票圖片,系統在服務端自動對發票圖像進行識別和自校正,將正確的發票信息項存入到數據庫中并反饋給客戶端界面。

用戶通過該系統可以方便地管理自己的發票憑證,整個過程中不需要用戶輸入數據和編輯數據,避免了因為信息輸入錯誤或者發票字符識別錯誤導致的憑證信息錯誤。

圖8 信息項分類模塊處理過程

圖9 發票圖片選擇界面

圖10 發票識別結果界面

3.4 實驗驗證

系統設計了兩種方法:一種是采用傳統的發票識別,通過對掃描的發票圖像進行圖像預處理、二值化后通過字符識別完成發票版面的數據信息的提取[15];第二種是按照本文的方法根據發票圖像的特點,基于顏色分割技術,提取發票圖像中有意義的區域,而忽略掉與發票信息項無關的區域。通過對50 張發票圖片進行實驗對比發現,傳統方法可以正確識別其中的42 張,識別率為84%,而采用本文的方法可以正確識別其中的48 張,識別率為96%??梢钥闯霰疚牡姆椒ㄓ捎诖蟠鬁p少了發票圖片無關區域的干擾,從而在整體上提高了發票圖片的識別率。

4 結論

隨著計算機科學技術的發展,機器逐漸代替人類來做重復性工作。在費用報銷業務過程中,對于個人和企業都需要花費大量人力和精力來處理原始發票信息。發票的自動識別系統脫離人工完成。本文根據發票圖像的特點,提出了基于顏色分割技術,提取發票圖像中有意義的區域,而忽略掉與發票信息項無關的區域,這大大減少了干擾區域,提高了發票識別的準確率;同時將發票圖像中的二維碼區域分割出來進行單獨識別,將兩部分識別出來的信息進行比對驗證,提高了發票信息項識別的準確性和可靠性。對于企業來說,可以利用該系統完全取代發票信息采集的人力,不再需要人工驗證,就可以利用這些數據進行后續的信息處理。對于個人來說,在費用報銷過程中,也可以方便地將發票憑證留存到信息系統中以便查詢和管理。

今后將進一步地研究顏色分割技術,因為這可以大大減少不必要干擾信息的存在。在本系統,印章與字符信息分離的過程中,在字符信息的圖層中,還留有印章淡淡的痕跡,這意味著采用RGB 顏色通道的分割方法對邊緣線段部分并沒有很好地取舍,后續可考慮基于HSV 空間分割的方法來提高分割的準確度。由于印章和部分文字會發生覆蓋,覆蓋掉的部分信息很難被準確識別,后續需要研究去除印章的技術,以及對缺失的信息進行修補后再進行識別的方法。

猜你喜歡
稅號字符發票
字符代表幾
一種USB接口字符液晶控制器設計
圖片輕松變身ASCⅡ藝術畫
關于發票顯示額外費用的分歧
HBM電子稱與西門子S7-200系列PLC自由口通訊
《中國錳業》編輯部訂單回執
《中國錳業》編輯部訂單回執
采購發票系統:全流程電子化實現
全國增值稅發票查驗平臺啟用
澳大利亞稅號制度體系監控納稅的啟示
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合