楊蕊 楊潔



摘? 要: 近年來隨著圖像處理技術的日益發展,越來越多的應用依賴圖像處理技術。為了方便財務人員進行發票管理與統計,通過對圖像預處理和光學字符識別技術的研究,提出了一種采用OpenCV.js開源圖形函數庫和Tesseract.js光學字符識別的Web端發票識別與管理系統。圖像處理與Web的結合能夠在網上方便快捷地把大量紙質文件轉化為電子數據,開創了一種經濟新模式。
關鍵詞: 圖像處理; 圖文識別; OpenCV.js; Tesseract.js; 發票
中圖分類號:TP391.41? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2020)10-04-04
Abstract: In recent years, with the development of image processing technology, more and more applications rely on image processing technology. In order to facilitate the financial personnel to manage and count the invoices, by studying the image preprocessing and optical character recognition technologies, this paper proposes a web based invoice recognition and management system using OpenCV.js open source graphic function library and Tesseract.js optical character recognition engine. The combination of image processing and web can easily and quickly convert a large number of paper documents into electronic data on the Internet, which creates a new economic model.
Key words: image processing; image recognition; OpenCV.js; Tesseract.js; invoice
0 引言
隨著科技的進步與時代的發展,人類進入了高速發展的數字時代。人們不再滿足于傳統的紙質辦公,而是將需求投放在了電子文稿上。以往,人們在賬本上記賬,需要留存大量的票據,紙質文件的保存也極為不易;而現在,發票信息的電子錄入與財務收支的統計分析變得愈發重要,紙質文件轉變為電子數據的過程成為數據存儲與運用的必然。
1 現狀分析
目前有許多學者對發票識別進行了相關研究,于治樓等人采用BP算法對發票號碼進行識別[1],虞飛對電子發票號碼進行研究[2]。但目前圖像處理的大多數實踐應用主要與硬件實體相結合,將圖像處理技術移植到Web服務端的國內外相關實踐較少[3]。
所以本文研究Web端的圖像處理技術來設計一款實用、操作簡單、安全的在線發票識別與管理系統,研究方向包含圖像預處理模塊、光學字符識別核心模塊和電子數據整合模塊。并且將盡可能地提高發票識別準確率[4-7]。
2 圖片預處理模塊
在圖像處理中,圖片預處理部分的好壞決定了光學字符識別部分的精度和準確度。其目的在于去除圖像中影響文字識別的干擾雜質,從而增強發票圖像的有效信息。
本文研究的預處理模塊主要分為四部分:灰度二值化、圖片降噪、圖片校正和圖片分割。圖片預處理流程圖如圖1所示。與此同時,要在Web端實現圖片的預處理部分,需要引入OpenCV.js開源圖形函數庫進行圖像的在線處理。
2.1 OpenCV.js的引入
本發票識別與管理系統引入適用于JavaScript運用的OpenCV.js,實現將OpenCV帶入Web平臺,運用OpenCV.js主要完成發票圖片的預處理部分,包括灰度化、二值化、生成直方圖、膨脹、霍夫變換。
2.2 灰度化+閾值自適應二值化技術
在圖像預處理中,由于彩色圖像信息量較大,計算機難以區分真實的文字和圖案背景,因此需要對圖像進行灰度化和二值化以達到去掉圖片雜質的目的。由于人眼對顏色的敏感度不同,由式⑴可見對[RGB]進行加權平均能得到更合理的灰度圖像,在OpenCV.js中采用COLOR_RGBA2GRAY的方法進行灰度化可達到該公式效果。
第二步進行二值化將文字與其他背景區分開,在OpenCV.js中有許多種二值化的閾值接口,但通常選取三種方法來定義閾值進行圖片的二值化:
一是大津法(OTSU)即簡單地用一種閾值將圖片背景和前景一分為二。大津法又稱最大類間方差法,其二值化后的前景與背景的類間方差最大[8]。二值化的過程需要取一個閾值,根據圖片整體進行閾值取值的運算,記[u]為圖像的總平均灰度。
由式⑵可見公式中[w0]表示前景文字所占圖像的比例;[w1=1-w0]為背景點數占比;[u0]表示[w0]對應的平均灰度值;[u1]表示[w1]對應平均灰度值。當方差[G]最大時,前景和后景錯分的差別最小,此時的灰度是最佳閾值,方差[G]可由式⑶表示。
二是使用雙峰直方圖法進行圖片前景和背景的分割,兩峰之間的谷底所對應的灰度級即為閾值,如圖2所示,橫坐軸表示灰度值,縱坐軸表示幅值,閾值可以很明顯得在曲線谷底呈現,大于閾值則視為前景黑色,小于閾值則視為后景白色。
灰度直方圖清晰地概括了一幅圖像的灰度級內容[9],呈現雙峰狀的灰度圖說明物體與背景對比明顯,選用雙峰直方圖法因其適用于層次不同的圖片。
三是自適應閾值二值化算法,通過adaptiveMethod算法[10]將圖像的每一個小區塊按照局部特征進行閾值計算。如圖3所示可以觀察到經過閾值二值化處理的發票圖像中的數字和文字部分變得十分清晰。
完成的效果如圖3所示,自適應閾值二值化算法可以排除圖像的光影和紋路干擾,但是會產生較多的顆粒噪點,后續仍需進行多次降噪處理。由于在發票管理系統的發票錄入這一步驟中,發票圖像的準確度受到人為因素影響較大,所以采用自適應閾值二值化算法較為合適。
2.3 圖片降噪
在現實環境中,二值化圖片往往圖像中會出現隨機分布的噪點,對后續光學字符識別(Optical Character Recognition,OCR)中圖片的切割識別造成較大的干擾。為糾正顆粒噪點的干擾,通常采用以下兩種方法降噪。
一是8鄰域降噪法,以每一個像素點為單位,統計其周圍8個像素點的灰度值為0的個數,并定義一個閾值,使得統計的個數超過閾值時標記為孤立的噪點顆粒,從而改變該噪點的灰度值,起到降噪的效果。由式⑷可見,閾值[n]為5時效果較好。
二是8連通泛水填充法FloodFill,通過計算相連通的像素點面積來保留相連通的字符,從而過濾掉非字符的孤立噪點。
2.4 圖片矯正
通常所拍攝的圖像偶有圖片傾斜的情況,此時需要計算傾斜角度將圖像進行校正。
第一步進行膨脹操作將圖片黑色部分的文字進行擴大,膨脹效果如圖4(b)所示,黑色的文字前景區域相應擴大。
第二步進行Canny邊緣檢測,以減小圖像噪點并檢測出文字的邊緣。Canny邊緣檢測算法其效果如圖4(c)所示,可以看出該算法對于文字邊緣的檢測效果較好。
第三步運用霍夫變換將二值化的圖片進行行列檢測,其閾值越大,往往精確度越高,但閾值設定過高則會導致檢測效果較差,閾值過低則程序運行速度較慢。經過大量試驗后,可以確定一個適合的閾值,其霍夫變換效果如圖4(d)所示。
霍夫變換檢測出大量直線后,計算出直線與圖片邊框的角度并進行旋轉校正。處理過的發票圖片校正效果如圖4(e)所示,最終的圖片可達到如圖4(f)的效果。
2.5 圖片分割
圖文識別分割的準確度決定了圖文識別的準確度,通常采用投影分割法來進行分割。生成二值化的像素分布直方圖如圖5所示,可以看出當黑色像素點個數為0時,即為圖像文字間隔的白色區域。由此可分割成不同的文字區塊。
3 字符識別核心模塊
預處理后的圖像主要使用Tesseract引擎來進行簡單的打印字符識別,但Tesseract引擎無法識別手寫字體,所以本文引入jTessBoxEditor進行Tesseract字符庫訓練,通過擴展字符庫的方法提高識別的準確率,訓練測試結果如表1所示。同時,在Web端進行字符識別時需要引入Tesseract.js進行網頁端的圖像處理。
其訓練方法如圖6所示,對手寫的樣本文字圖片(tif或tiff格式)進行操作,生成BOX文件,然后定義字符配置文件,達到對字符矯正的目的。同時Web端進行OCR操作還需要引入Tesseract.js,可以用于在瀏覽器進行相關圖像處理操作。
4 基于圖像分析的發票識別與管理系統
4.1 辦公應用功能
第一部分是注冊登錄功能,用戶可進行登錄或注冊操作,并進行數據加密和驗證。
第二部分是發票相冊功能,用戶錄入的發票圖像都會在這一欄目排列顯示,鼠標劃過任意一張發票圖像即可放大查看詳細的圖像細節。
第三部分是圖片預處理功能,用戶可以自由地在圖片預處理頁面進行圖片的灰度化、二值化、膨脹、霍夫變換等操作。
第四部分是發票支出統計分析功能,可以將所支出的發票金額自動形成柱狀統計圖,以直觀的看出當前公司的財務支出用度情況,計算機可以自動根據數據庫中的相關金額數據進行圖表演示。
4.2 發票記錄模塊
該模塊的功能有發票的錄入,查看發票的錄入時間、發票圖像和經手人簽名信息。同時在操作區域,用戶可以做修改、刪除和識別操作,發票記錄模塊效果如圖7所示。
4.3 財務統計模塊
用戶可以在左側菜單欄“財務統計”中的“財務記錄表”查看所識別的發票具體信息,包括開戶名、金額、收款人、稅號和發票種類五類信息,同時也可做修改和刪除操作。財務統計模塊效果如圖8所示,該模塊可以讓用戶隨時查看所識別過的發票信息數據。
5 結束語
為了解決發票數據人工錄入的問題,本文提出了基于Web端的發票自動識別與管理系統,經過大量的圖像分析測試之后,該發票識別與管理系統能較好地批量錄入發票、進行發票的識別和財務數據分析,為圖像處理開創了一種新模式。
在后續的研究與改進中,將會研究機器學習和卷積神經網絡對發票信息進行特征識別,同時將加強該系統的安全性,保障使用者的財務數據不會被泄露。未來圖像處理的市場廣闊,數字化金融時代也更加離不開票據的智能化識別分析技術。
參考文獻(References):
[1] 于治樓,信曉敏,黃正茂.BP算法在發票號碼識別中的應用研究[J].信息技術與信息化,2014.3:113-115
[2] 虞飛.通用機打普通商業發票識別系統研究與實現[D].華南理工大學,2013.6:44-48
[3] 李光磊.Web OCR系統設計、實現及多平臺對比與選型[D].天津大學,2004.
[4] PAI N, KOLKURE V S. Optical Character Recognition: An Encompassing Review[J].International Journal of Research in Engineering and Technology,2015.4:407-409
[5] LI X G, CHEN J H, et al. English Sentence Recognition Based on HMM and Clustering[J].American Journalof Computational Mathematics, 2013.3:37-42
[6] SHAFFIE A M, Elkobrosy G A.A Fast Recognition System for Isolated Printed Characters Using Center of Gravity and Principal Axis[J].Applied Mathematics,2013.4:1313-1319
[7] NAZ S, HAYAT, et al. The Optical Character Recognition of Urdu-Like Cursive Scripts[J].Pattern Recognition,2014.47:1229-1249
[8] 劉亞文,余孝源,周飛舟等.基于金字塔權重的QR二維碼重構[J].控制工程,2020.27(4):641-647
[9] 梁華為.直接從雙峰直方圖確定二值化閾值[J].模式識別與人工智能,2002.15(2):253-256
[10] Ivan Ozhiganov. Deep Dive Into OCR for Receipt Recognition[EB/OL].2017-6-21.https://dzone.com/articles/using-ocr-for-receipt-recognition.