張淇元
(上海市建平中學(xué),上海 200135)
OCR全稱是Optical Character Recognition,即光學(xué)字符識別。[1]指的是各種電子設(shè)備,比如攝像頭,數(shù)碼相機,掃描儀等識別紙質(zhì)載體上的打印或者印刷的字符。它是通過光的明暗度確定字符的形狀,然后利用圖像字符識別的方法將紙上的各種字符形狀轉(zhuǎn)換為計算機文字的過程。
O C R技術(shù)包括采集部分,識別部分和驗證測試三個大模塊。
采集部分的采集工作主要由各種電子設(shè)備承擔(dān)。當(dāng)然,精度越高的數(shù)碼相機或是掃描儀能夠大幅地提高圖片的質(zhì)量,對于識別部分來說是非常有利的。如果采集到的圖片不是很理想,即使使用多么先進的識別算法也無濟于事,所以采集部分的地位相當(dāng)重要。
識別部分是整個技術(shù)中最重要的部分,也是本文研究的關(guān)鍵部分。想要達到高識別率,識別的算法要選取得當(dāng)。要根據(jù)識別業(yè)務(wù)場景選擇最適合的識別算法,而不是一味地追求最新最先進的算法,往往較適合較穩(wěn)定的算法才是最佳算法。
驗證測試部分的重要性和識別部分相當(dāng)。原因是對于企業(yè)來說,錯誤的識別可能會帶來災(zāi)難性的問題。比如機器識別錯誤而人工又無法手動干預(yù),造成無法處理的問題。甚至對于銀行,金融等行業(yè)來說,對于識別精度的需求特別高,細(xì)微的識別差錯可能會造成巨大的損失。所以驗證識別部分是不可忽視的。驗證測試部分的主要工作是搜集大量樣本,對其進行識別測試,找出識別存在的問題,反饋給算法設(shè)計者。并且在測試的過程中不斷地擴充和完善識別的模板庫,幫助識別工作。
一個好的OCR系統(tǒng)產(chǎn)品應(yīng)該具有以下特性:用戶界面友好,識別速度較快,識別正確率高,穩(wěn)定性強,易用性強等。
對于許多大中型企業(yè)來說,每個月都會有大量的進貨與銷售行為,隨之產(chǎn)生的就是大量的進項增值稅發(fā)票和銷項增值稅發(fā)票。增值稅發(fā)票對于企業(yè)來說是非常重要的,這關(guān)乎于企業(yè)向國家繳納的稅金,所以企業(yè)對于發(fā)票十分看重。但是由于發(fā)票多為紙質(zhì),并且類型繁多,難以批量整理,大部分企業(yè)只能招聘一些財務(wù)人員專門整理發(fā)票,記錄發(fā)票信息。但是,結(jié)果往往是企業(yè)花費了大量的人力財力,依然還有小部分發(fā)票出現(xiàn)紕漏。
如果能將人工智能技術(shù)應(yīng)用在發(fā)票識別上,會減少人力物力財力的消耗,并且能夠大幅度的提升正確率及工作效率。而O C R技術(shù)便是最適合于識別發(fā)票信息的識別技術(shù)。
增值稅發(fā)票是我國稅務(wù)領(lǐng)域中非常重要的買賣依據(jù),主要分為以下三類:增值稅專用發(fā)票,增值稅普通發(fā)票和增值稅普通電子發(fā)票[2]。下圖1為增值稅專用發(fā)票票樣圖片。
其中,左上角的發(fā)票代碼,右上角的發(fā)票號碼,開票日期,開票金額以及校驗碼五要素是發(fā)票最關(guān)鍵的要素。國家發(fā)票驗偽平臺對一張發(fā)票進行驗證也是需要以上幾個元素。根據(jù)規(guī)則,獲取了發(fā)票代碼就可以得到發(fā)票類型,根據(jù)發(fā)票號碼,開票日期,開票金額,校驗碼(增值稅普通發(fā)票)就可以獲取到整張發(fā)票的信息。
圖1
圖2
所以想要獲取到一張發(fā)票的完整信息,只要識別出以上五要素就可以了。但是給識別工作帶來極大困難的一點是全國的發(fā)票樣式不統(tǒng)一,每個省都有自己特有的發(fā)票樣式。甚至同一個省的不同時間的發(fā)票樣式都不同。比如左上角的發(fā)票代碼在上海市發(fā)票上距離發(fā)票中線很近,但是在浙江省的發(fā)票上卻距離左邊緣很近。這對識別工作是個挑戰(zhàn)。但也正是如此,識別發(fā)票的需求才會如此之高。
圖2是O C R識別發(fā)票的流程圖。
采集部分較為簡單,主要是通過電子設(shè)備,比如數(shù)碼相機,掃描儀或者攝像頭等采集到發(fā)票圖片。重點是兩種識別方式,一種是同步識別,另一種是異步識別。
同步識別是在采集的過程同時對圖片進行識別,識別后進行數(shù)據(jù)保存。但是這樣帶來的問題是,如果識別的發(fā)票數(shù)量較多,排隊識別的發(fā)票圖片容易阻塞,這樣對識別速度回造成很大的影響。同步識別對識別算法的識別速度要求很高,如果識別算法能夠和電子設(shè)備采集圖片的時間相差無幾,同步識別方式是可取的。
與同步識別相對應(yīng)的識別方法就是異步識別方式。所謂的異步識別方式就是電子設(shè)備采集上圖片后,先緩存在本地,識別過程直接從本地緩存中調(diào)取圖片并且進行識別。也就是說采集和識別還是同時工作,但是互不影響。異步識別方式的好處是能夠避免排隊阻塞現(xiàn)象,但是由于要緩存在本地,所以要花費一些時間和容量在儲存圖片的過程中。該方式比較適應(yīng)于識別速度不是很快并且本地存儲容量足夠大的場景中。
識別過程毋庸置疑是整個系統(tǒng)中的核心部分。其主要分為以下幾個步驟[3]。
(1)圖片預(yù)處理。為了是采集到的圖片能夠更好地被識別,在識別前要進行圖像的預(yù)處理。預(yù)處理包括:
圖片灰度化(二值化):目的是將圖片中的多于色彩去除掉,這樣能夠減少顏色對識別的干擾。
去噪:將采集過程中圖像的噪聲通過中值濾波(均值濾波)等方法過濾掉,可以將圖片清晰化,更加接近原型。
邊緣加強:通過邊緣加強,可以使圖片中字符的邊緣更加明顯,為分割和識別做好鋪墊。
還有很多其他圖像預(yù)處理方法,在此不一一列舉。要說明的是,圖像與處理方法很多,但并不是使用所有的預(yù)處理方法就更好,而是要選擇最合適的預(yù)處理方法搭配使用,目的為了便于圖片分割和識別。
(2)圖片分割。對于識別發(fā)票來說,我們需要找到五要素的大體位置進行分割,再進行逐一識別。我們可以歸納總結(jié)全國各類發(fā)票中每一個元素大體位置。為了保證能夠識別所有類型的發(fā)票,我們需要將分割的范圍擴大化。也就是說,能做到每一個元素的分割范圍都能包含該元素可能出現(xiàn)在發(fā)票的位置。
(3)字符識別。將圖片分割成小的元素圖片后,就可以進行字符識別了。在識別前,還要對字符進行分割。簡單的方法是利用垂直和水平兩個方向的掃描線去掃描圖像中的像素點,通過獲取與掃描線重合點數(shù)的個數(shù)變化,判定字符存在的位置。
將字符逐個分隔開后,便可以與模板庫中的模板進行匹配,得到識別結(jié)果。
(4)識別預(yù)判。在識別過程中可以根據(jù)識別到的元素判斷其他元素,比如識別出發(fā)票代碼后就可以依照國家發(fā)票代碼規(guī)則判斷出發(fā)票的類型。這部分工作既可以減少識別的壓力,同時還可以提高識別的準(zhǔn)確性。
(5)矯正識別。在識別過程中,如果遇到以下問題,比如根據(jù)識別到的發(fā)票代碼無法得到發(fā)票的類型,那么說明發(fā)票代碼識別錯誤,于是可以再次識別,以提高精準(zhǔn)度。
(6)識別訓(xùn)練。在識別過程中,我們可以訓(xùn)練識別算法。比如讓算法識別各種各樣的“大”字,訓(xùn)練的次數(shù)越多,識別率會隨之提高。
識別結(jié)束后,需要對識別結(jié)果進行驗證和測試,當(dāng)識別結(jié)果錯誤時,應(yīng)該反饋給算法設(shè)計者,算法設(shè)計者會依照該反饋進行算法優(yōu)化。并且在測試的過程中,可以將測試的用例保存進模板庫,再次進行訓(xùn)練,以提高下次識別的正確率。經(jīng)過多次訓(xùn)練,使機器識別結(jié)果正確率不斷提高,減小誤差已滿足其在各個領(lǐng)域的識別精度需求。
本文簡單的介紹了O C R的識別原理和流程以及識別增值稅發(fā)票的應(yīng)用實例??梢缘玫揭韵陆Y(jié)論:O C R是可以通過訓(xùn)練達到準(zhǔn)確率的提升,這與人工智能機器學(xué)習(xí)的理念相一致。還有O C R的圖片處理和識別過程要根據(jù)發(fā)票的特性進行定制,說明人工智能需要更多的考慮應(yīng)用場景和應(yīng)用領(lǐng)域,不能脫離現(xiàn)實進行算法研究。O C R已經(jīng)逐漸應(yīng)用到各行各業(yè),隨著人工智能的發(fā)展,O C R將會有更高的應(yīng)用價值。
[1] 馬壯,趙國權(quán),任占鵬.基于OCR識別技術(shù)的自動閱卷系統(tǒng)的研究[J].河北工業(yè)科技,2005,22(6):354-357.
[2] 高曉玲.淺談企業(yè)增值稅發(fā)票的管理[J].全國商情·理論研究,2011(5):48-49.
[3] 汪益民,梅林,張義超,等.基于OCR技術(shù)的書寫文字識別系統(tǒng)設(shè)計[J].甘肅科技,2007,23(8):17-19.