張 成,戴俊峰,熊聞心
1.國網(wǎng)湖北省電力有限公司 信息通信公司,武漢430077
2.武漢大學(xué) 電子信息學(xué)院,武漢430072
基于社會發(fā)展對于字符識別不斷增長的需求,從二十世紀(jì)六、七十年代開始,國內(nèi)外相繼展開了對于字符識別相關(guān)方面的研究,從早期按照像素匹配識別發(fā)展到傳統(tǒng)的機器學(xué)習(xí)特征提取匹配直到如今基于深度神經(jīng)網(wǎng)絡(luò)。字符識別的預(yù)期未來需求包括突破手寫體漢字字符識別困難,應(yīng)用于電子檔案記錄,全球搜索的書籍和歷史文檔,攝像頭拍攝的文本場景、視頻文本[1-2]等等。
計算機性能的改善和數(shù)據(jù)噴涌式的爆發(fā),使深度學(xué)習(xí)在傳統(tǒng)機器學(xué)習(xí)上不斷發(fā)展,最關(guān)鍵就在于自動提取學(xué)習(xí)特征,降低了手工特性設(shè)計可能的耗時。卷積神經(jīng)網(wǎng)絡(luò)(CNN)常用于圖像處理,有能力從大量數(shù)據(jù)中學(xué)習(xí)復(fù)雜的、高維的、非線性的映射,同時演示了深層處理技術(shù)對圖像處理的重要性[3-4]。
在很多文獻中,字符識別直接分成印刷體與手寫體。而本文根據(jù)國家電網(wǎng)項目的實際需求,將掃描文檔中手寫體日期作為研究對象,分為手寫體數(shù)字識別和漢字識別,數(shù)字部分為手寫體數(shù)字識別,而漢字部分主要針對一些特定的印刷體漢字。通過將這兩者結(jié)合,同時針對實際運用過程中可能引入的干擾做出相應(yīng)的增強預(yù)處理,并對比在不同訓(xùn)練參數(shù)組合下LeNet-5 的識別效果,優(yōu)化調(diào)整參數(shù),得到使模型實現(xiàn)最佳效果的訓(xùn)練參數(shù)。解決了實際項目中對于手寫體日期的識別需求。
根據(jù)對于掃描文檔中的手寫體日期字符特點的觀察研究,設(shè)計的算法首先要對目標(biāo)圖像進行一連串具有針對性的預(yù)處理,其中包含圖像定位、圖像去噪、灰度化和二值化;然后將經(jīng)過預(yù)處理后的圖像進行字符分割放入待識別字符集;將待識別字符集分別運用模板匹配法和LeNet-5 網(wǎng)絡(luò)進行識別,最后進行相關(guān)處理整合即可得識別結(jié)果完成整個算法實現(xiàn)。圖1 為體現(xiàn)整個算法設(shè)計思路的流程圖。
圖1 算法的整體框架
圖像預(yù)處理是在對字符圖像進行分割和識別前的一個關(guān)鍵步驟,特別是在實際項目運用中,具有針對性的圖像預(yù)處理能有效地提高待識別字符圖像的質(zhì)量,從而能極大程度上提高字符識別率。本文的圖像預(yù)處理包括[5]:特定字符圖像的定位、圖像去噪、圖像灰度化和圖像二值化。
1.2.1 特定字符圖像的定位
本文主要研究的是掃描文檔中印章下的手寫體日期,那么在信息密集的掃描文檔中確定目標(biāo)字符圖像的定位并劃分[6]是首要步驟。(1)根據(jù)印章的形狀為圓形,而一般文檔中幾乎不出現(xiàn)圓形,于是在文檔圖像中確定的圓即為印章。(2)運用對圓的檢索確定了印章在整幅圖像中的位置,根據(jù)印章的位置向四周擴大印章外接矩形框進行裁剪,這樣能夠很大程度上保證手寫體日期完整地被切分出來。(3)在切分出的圖像上再進一步對目標(biāo)圖像單獨裁剪出來,將目標(biāo)圖像與其他不相干信息區(qū)分。如圖2所示。
圖2 定位裁剪后的日期圖像
1.2.2 圖像去噪
由于原始掃描圖像本身、掃描環(huán)境、掃描設(shè)備等原因,掃描文檔圖像可能會夾帶著一定程度的噪聲,并且伴有光照和顏色干擾。為了降低干擾對識別率的影響需要進行去噪處理[7-9],對于噪聲對圖像質(zhì)量的影響,選用了高斯濾波,對于光照便選用了較為常見的伽馬校正。在實際項目進行中,對于文檔中印章下的手寫體日期識別,掃描圖像中常含有印章這樣很明顯特別的干擾,如果不去除干擾圖像印章直接灰度化和二值化將會影響后續(xù)的識別準(zhǔn)確率。本文研究觀察選擇通過印章通常為紅色而手寫體日期字符一般為黑色這一規(guī)律實現(xiàn)印章的去除。對已經(jīng)定位并剪裁好的彩色圖像分離紅色分量設(shè)置一定閾值從而進行印章的去除,如圖3所示。
圖3 去除印章后的圖像
經(jīng)過分離紅色分量,圖3 明顯干擾減少,能提高圖像分割的準(zhǔn)確率,而伽馬校正與高斯濾波的效果在這一步并不明顯,由以下二值化圖像效果進行對比。
1.2.3 圖像灰度化和二值化
根據(jù)人眼對于綠色最敏感,對于藍(lán)色最遲鈍,對于紅色敏感度居中的視覺特性來選擇權(quán)重,本文選擇加權(quán)平均法來實現(xiàn)圖像灰度化,根據(jù)公式(1)對圖像的三個分量進行加權(quán)平均能得到效果較好的灰度圖像[10]:
緊接著運用最大類間方差算法(OTSU)方法確定閾值對上述灰度圖像進行二值化[11],如圖4所示。
圖4 圖像經(jīng)過灰度化和二值化的效果圖
由二值化圖像可以看出有伽馬校正與高斯濾波可以使得字符形態(tài)更加清晰突出,像素更為連續(xù),目標(biāo)與背景差別更大,為后續(xù)的分割和識別奠定了更好的基礎(chǔ)。
圖像分割是進入字符識別前極為關(guān)鍵的一環(huán),字符切分準(zhǔn)確與否也關(guān)系著字符能否被準(zhǔn)確識別。常見的兩種切割字符圖像的方法:投影分割法和連通域分割法[12]。本文采用連通域分割法將字符分割成一個個單獨的圖像,同時要注意按照從左到右的順序(也就是按列的從小到大)排列保存,每一行代表每一個分割出的單個字符的信息,從左到右依次是位置x、y和長寬w、h,如圖5所示。
圖5 分割成單個字符并按順序排列后的圖像
字符識別是模式識別中的一個分支,利用計算機來模仿人的視覺神經(jīng),通過計算分析將圖像中的字符轉(zhuǎn)化成機器能讀取識別的信息。目前已經(jīng)提出的方法有基于模板匹配的識別、基于人工神經(jīng)網(wǎng)絡(luò)的識別、基于支持向量機的識別、基于決策樹的識別等等[13]。這些方法的基礎(chǔ)還是建立于對字符本身特征進行提取、分析和學(xué)習(xí)。目標(biāo)圖像中字符既包含手寫體數(shù)字又包含著年、月、日這樣的漢字字符,這兩種字符要分開識別才能保證識別率。
1.4.1 日期中年、月、日的識別
由于所識別的對象是日期中的漢字字符,字符為印刷體,個數(shù)不多,字符字體變化不大,所以本文采用了實現(xiàn)較為容易的模板匹配的方法[14]。模板匹配法的基本原理是根據(jù)待識別字符制作出標(biāo)準(zhǔn)的模板,對于待識別字符集便生成對應(yīng)的模板庫,識別結(jié)果是將待識別字符與模板庫中的標(biāo)準(zhǔn)模板進行比較判斷相似度從而得出的。模板匹配法具體實現(xiàn)是將分割后的二值化字符的尺寸大小與模板庫中模板大小統(tǒng)一,然后將其與所有的模板進行匹配[15],最后相似度最高的對應(yīng)模板即為識別結(jié)果。該方法存在著抗噪性能差,計算量大的特性,對待識別字符的圖像質(zhì)量有較高要求,適用于與模板大小、形態(tài)差別不大的字符的識別。
(1)首先從某個完成預(yù)處理的圖像中摳出字符圖像來制作字符的模板,如圖6所示。
圖6 制作的模板圖像
(2)然后將模板在二值化圖像中進行模板匹配,效果如圖7所示。
圖7 將模板在圖像中進行匹配的效果圖
同時記錄下三個字符在圖片中的位置(x,y,w,h)分別為:(129,38,43,44)(240,42,35,42)(355,44,30,40)
(3)根據(jù)之前分割單個字符的位置信息,可以在字符集中判斷出年、月、日,如圖8。
只要在分割字符的時候加入相應(yīng)的判斷條件,便可以將年、月、日這三個字符識別出來,并將這三個漢字字符與手寫體數(shù)字字符區(qū)分開來。
圖8 分割出的單個字符的信息
1.4.2 日期中手寫體數(shù)字的識別
(1)字符歸一化
由于字符圖像本身大小有差別對字符的識別會造成很大影響[16],為了提高字符的識別率需要對經(jīng)過分割和區(qū)分出來的待識別手寫體數(shù)字字符圖片進行大小歸一化[17]如圖9所示。
圖9 字符圖像歸一化
將字符歸一化能夠與訓(xùn)練集形態(tài)更為相似,從而更加適應(yīng)模型,提高識別效果。
(2)LeNet-5模型識別
LeNet-5 是Yann LeCun 設(shè)計出的對于手寫體數(shù)字識別效果非常好的卷積神經(jīng)網(wǎng)絡(luò),可以稱得上是早期卷積神經(jīng)網(wǎng)絡(luò)中最具代表性的模型之一[18-19],也因此本文選擇針對手寫體數(shù)字部分構(gòu)建LeNet-5 網(wǎng)絡(luò)。LeNet-5模型由2個卷積層、2個池化層(抽樣層)和3個全連接層共7層組成[20-21],圖10為LeNet-5的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
圖10 LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)示意圖
將歸一化完成的字符圖像放入已經(jīng)設(shè)置好參數(shù)訓(xùn)練完成的LeNet-5網(wǎng)絡(luò)中進行手寫體數(shù)字的識別。
本章算法測試環(huán)境為64位Windows 10操作系統(tǒng),8 GB 運行內(nèi)存的計算機,運用Python 編程語言并在Python中配置了Tensorflow、Opencv。
MNIST數(shù)據(jù)集:選擇經(jīng)典的MNIST 數(shù)據(jù)集作為手寫體數(shù)字識別模型的訓(xùn)練集,載入LeNet-5 的數(shù)據(jù)輸入層。MNIST 是一個含有60 000 個訓(xùn)練樣本和10 000 個測試樣本,總共70 000個樣本的手寫體數(shù)字庫。其中含有數(shù)字0~9的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集兩種圖片,每張圖片都已經(jīng)經(jīng)過了預(yù)處處理與大小歸一化,大小為28×28,均為黑底白字。
本文將收集的樣本分成有印章和無印章干擾的測試樣本??倶颖局袑⒎指铄e誤的字符去除后有效手寫體數(shù)字個數(shù)共有266個,本實驗的識別準(zhǔn)確率按單個數(shù)字字符來算。
隨機選取10個同學(xué)寫出共40個手寫體日期作為無印章測試樣本來進行識別測試,圖11 是部分無印章的測試樣本。
圖11 無印章干擾的測試樣本
圖12為有印章的測試樣本。
圖12 有印章干擾的測試樣本示例
由于連通域分割法無法對相互粘連的字符進行有效分割,所以在制作手寫體數(shù)字樣本時應(yīng)該注意不能過于隨意連筆。
2.2.1 不同參數(shù)下的識別率
(1)對于batch的選取
由于在模型執(zhí)行反向傳播時會運用梯度下降算法,如若載入所有樣本進行訓(xùn)練將會大大增加訓(xùn)練的時間復(fù)雜度,所以將總體樣本分成一個個batch 來進行參數(shù)尋優(yōu)。在控制其他參數(shù)不變的條件下,改變batch 的大小,所出現(xiàn)的誤識別率和運行時間如表1所示[10]。
表1 不同batch下的訓(xùn)練效果
根據(jù)圖中的比較信息可以發(fā)現(xiàn),batch增多,使誤識別率隨之增大,識別時間隨之減少,綜合誤識別率和識別時間這兩個因素考慮,本文決定將batch選取為50,希望能使LeNet-5網(wǎng)絡(luò)性能達(dá)到比較好的效果。
(2)對于learning rate的選取
learning rate便是每次切線旋轉(zhuǎn)的幅度,加大learning rate會一定程度上加快擬合的速度,但同時如果一味加大learning rate 可能會造成切線旋轉(zhuǎn)過度而無法收斂,模型誤差很大。
在batch=50,epoch=40的同一條件下進行算法測試如表2所示。
表2 learning rate對識別率的影響(batch=50,epoch=40)
在對learning rate 的對比測試過程中,learning rate為0.01 時訓(xùn)練模型無法收斂。對比測試結(jié)果顯示對于這個模型learning rate取0.001時最為合適。
(3)對于epoch的選取
在batch=50,learning rate=0.001 同一條件下分別在MNIST訓(xùn)練集和自己制作的測試集上進行算法測試如表3所示。
表3 epoch對識別率的影響(batch=50,learning rate=0.001)
對于日期識別會更看重識別的準(zhǔn)確性,所以epoch選取80。
進行一系列的相關(guān)對比實驗后,得出當(dāng)訓(xùn)練參數(shù)選擇epoch=80,batch=50,learning rate=0.001時,該算法中的LeNet-5網(wǎng)絡(luò)對于測試樣本能夠達(dá)到最佳的識別效果。
2.2.2 對于有無特定去噪處理的識別效果對比
由于一般文檔中手寫體日期與印章緊密相聯(lián),一般常用的圖像去噪的方法對此是沒有太多效果的,而本文設(shè)計的算法能夠去除這些特定字符在特定條件下的噪聲干擾,從而完成字符識別。以下是對于同一份手寫體日期對比有無去除印章的識別效果,圖13為測試樣本。
圖13 測試樣本
(1)無去除印章的手寫體日期識別
將圖像進行除去除印章外的其他預(yù)處理,如圖14所示。
圖14 帶有印章干擾的二值化圖像
從圖14中其實很明顯可以發(fā)現(xiàn)印章對于手寫體日期的干擾,然后對圖像進行字符分割,如圖15所示。
圖15 帶有印章干擾的字符分割
如圖15,由于印章的干擾根本無法進行正確的分割,進而完全無法實現(xiàn)正確的識別。
(2)有去除印章的手寫體日期識別
將圖像進行去除印章和一系列的預(yù)處理,如圖16所示。
圖16 去除印章干擾的二值化圖像
將去除印章后的圖像進行字符分割,效果如圖17所示。
圖17 去除印章干擾后的字符分割
去除印章干擾后對字符圖像分割是比較準(zhǔn)確的。最后將分割后的圖像進行識別,結(jié)果為:2018 年3 月27日,這里識別的結(jié)果比起未去除印章干擾的圖像提升效果還是很明顯的。
根據(jù)以上測試結(jié)果對比可以發(fā)現(xiàn),本文算法的預(yù)處理部分能夠針對實際項目中手寫體日期這樣的特定對象進行較好的處理,從而能夠識別印章下的手寫體日期,增強了一般算法的抗噪性能從而提高識別率,同時更加還原生活中的真實場景,增加了實際應(yīng)用的可能性。
以下為部分測試結(jié)果效果圖,識別率為91.35%,如圖18效果圖所示。
圖18 部分實驗效果圖
本文主要研究對象針對的是掃描文檔中手寫體日期的識別,特別是有印章、顏色和光照等噪聲干擾的手寫體日期,通過構(gòu)造一系列針對性的預(yù)處理,增強了一般算法的抗噪性能,另一方面通過相關(guān)對比實驗尋找合適的LeNet-5網(wǎng)絡(luò)訓(xùn)練參數(shù),從而實現(xiàn)了更有效的識別,更加還原生活中的真實場景,增加了LeNet-5 網(wǎng)絡(luò)實際應(yīng)用的可能性,更符合實際的文檔識別項目需求。
需從以下幾個方面尋求下一步更好的效果:手寫體形態(tài)的差別大、大小不一、筆畫粗細(xì)不一等不確定因素,這些因素一方面使得圖像的前期處理不能合適地貼合每一個字符。字符分割的模塊使用的是連通域分割法,于是對于字符粘連的情況不能進行有效分割,而日常生活中書寫數(shù)字時,經(jīng)常會出現(xiàn)連筆?;谏疃葘W(xué)習(xí)的網(wǎng)絡(luò)一般都為端到端,且此LeNet-5網(wǎng)絡(luò)層數(shù)不多,改進的方法有限。