何鎏一 楊國為,2
1(青島大學(xué)電子信息學(xué)院 山東 青島 266071)
2(南京審計大學(xué)信息工程學(xué)院 江蘇 南京 211815)
光學(xué)字符識別(OCR)指通過設(shè)備自動提取圖片中存在的印刷體文字。文字識別涉及很多領(lǐng)域,包括人工智能、圖像處理、計算機(jī)等。文字識別技術(shù)的實現(xiàn),對于信息處理、辦公自動化等各個領(lǐng)域都有著巨大的作用。
隨著深度學(xué)習(xí)的發(fā)展,利用神經(jīng)網(wǎng)絡(luò)技術(shù)對文本識別已經(jīng)成為研究熱點。Goodfellow等[1]基于深度卷積神經(jīng)網(wǎng)絡(luò),實現(xiàn)了在少量字符或字符之間較為獨立場景下的文字識別,比如識別門牌和車牌號碼,但是該模型識別前需事先選定可預(yù)測序列的最大長度。Shi等[2]提出用深度卷積神經(jīng)網(wǎng)絡(luò)提取特征,使用雙向長短時記憶神經(jīng)網(wǎng)絡(luò)進(jìn)行序列預(yù)測,通過CTC轉(zhuǎn)錄整合輸出字符。Lee等[3]使用卷積神經(jīng)網(wǎng)絡(luò)提取文字特征,使用注意力模型(Attention model)對特征進(jìn)行序列建模和解碼。對于不規(guī)則的文字識別,Shi等[4-5]通過構(gòu)建STN(Spatial Transformer Network)以及SRN(Sequence Recognition Network)兩個網(wǎng)絡(luò)結(jié)構(gòu),將透射變換或者彎曲的文本圖片對齊到一個正規(guī)的、更易讀的圖片并輸出文本序列。Li等[6]提出一個統(tǒng)一網(wǎng)絡(luò),同時解決文字的檢測和識別問題。
上述識別方法常應(yīng)用于文字質(zhì)量較高、字體較大的自然場景中,不適用于低質(zhì)量字符識別。低質(zhì)量字符識別的應(yīng)用場景包括車牌識別、人民幣冠字號碼識別、增值稅發(fā)票識別等。低質(zhì)量字符自身具有字號小、字符模糊、緊湊等特點,而造成字符質(zhì)量低的外部原因還包括采集設(shè)備分辨率低下、外部光照不均勻等。因為高清掃描文本的字符識別技術(shù)已經(jīng)十分成熟,故研究者們將低質(zhì)量字符識別問題的重點放在了圖像增強(qiáng)上。Zhou等[7]利用顏色編碼信息對圖像信息進(jìn)行補(bǔ)償,但對字號較小的識別準(zhǔn)確率較低。Ohkura等[8]引入圖像超分辨率重建方法,對文字圖像插值重建,放大較小的字符的同時大部分信息得到保留,有效地提高了小字符識別準(zhǔn)確率,但其對字符的紋理、邊緣細(xì)節(jié)未增強(qiáng)。Ishida等[9]提出生成學(xué)習(xí)的方法,預(yù)先估計點擴(kuò)散函數(shù)高效地生成低質(zhì)量的文字圖像進(jìn)行訓(xùn)練,但樣本擴(kuò)充的方式太少識別效果具有偶然性。另一方面,造成字符識別錯誤的原因還包括對字符的分割不準(zhǔn)確,以上方法必須將文字分割為單一字符,而低質(zhì)量文字之間的字跡緊湊、筆畫粘連問題必然會對文字分割有所影響。
本文以光照不均勻場景下的增值稅發(fā)票字符識別為對象,提出一種局部非線性濾波的圖像增強(qiáng)算法對圖像進(jìn)行處理,引入新的色調(diào)映射函數(shù)生成增強(qiáng)圖像。對比原始圖像,增強(qiáng)后的圖像暗區(qū)域文字細(xì)節(jié)得到提高,且光照不均勻現(xiàn)象被削弱。搭建改進(jìn)的卷積循環(huán)神經(jīng)網(wǎng)絡(luò),構(gòu)建可免去字符分割的多字符識別模型。在訓(xùn)練階段使用生成學(xué)習(xí)的方法創(chuàng)建包含常用漢字、英文、數(shù)字的數(shù)據(jù)集,并對樣本進(jìn)行形變、旋轉(zhuǎn)、平移和添加噪聲等操作進(jìn)行樣本擴(kuò)充,提高模型的魯棒性。對比實驗表明,本文系統(tǒng)在光照不均勻場景下的低質(zhì)量字符識別性能優(yōu)于常用的OCR軟件。
本文系統(tǒng)流程如圖1所示,其中圖像增強(qiáng)包括局部自適應(yīng)濾波色調(diào)映射、圖像背景和文本定位。處理基于Windows系統(tǒng)MATLAB 2016a實現(xiàn),卷積循環(huán)神經(jīng)網(wǎng)絡(luò)基于Linux系統(tǒng)使用Python語言搭建。
圖1 基于深度學(xué)習(xí)的光照不均勻文本圖像識別算法功能流程圖
本節(jié)以圖2的增值稅發(fā)票為例,介紹基于光照不均勻條件下的低質(zhì)量文字圖像增強(qiáng)算法。
色調(diào)映射的基本思想為:首先推算出場景的平均亮度,然后根據(jù)平均亮度選取一個合適的亮度域,最后將整個場景映射到亮度域中。傳統(tǒng)的色調(diào)映射方法考慮圖像的全局平均亮度[10]:
(1)
式中:L(x,y)為像素點(x,y)的亮度值;N是圖像的總像素數(shù);δ是一個小的常數(shù)用來防止像素點純黑的情況。通過式(2)映射新的圖像的可顯示亮度,其中C值用來控制輸出圖像的整體亮度和對比度:
(2)
本文同時考慮全局平均亮度和局部平均亮度[11-12]提出新的映射函數(shù),得到圖像每個位置的可顯示亮度,α為平衡Lbf和Lavg的系數(shù)。
(3)
式中:Lbf(x,y)是通過以相關(guān)像素P為中心的非線性濾波滑窗block中相鄰像素亮度的加權(quán)和計算得來。其中滑窗中每個對數(shù)值使用空間域中的高斯函數(shù)計算得到,每個像素的權(quán)重由空間距離和強(qiáng)度差決定:
(4)
式中:Wq為滑窗block中每個像素的權(quán)重。
(5)
式中:S和I分別表示空間域和強(qiáng)度域的高斯函數(shù)。
(6)
TW為用于歸一化的權(quán)重加和:
(7)
使用式(3)時,亮像素會映射變暗,而暗像素會變得更亮,從而降低整個圖像的對比度。由于不同的輸入圖像有不同的強(qiáng)度值范圍,本文在強(qiáng)度域中使用自適應(yīng)的σ,其中2σ2=0.1Lmax,Lmax為圖像的最大亮度值。這樣設(shè)定使得在空間域或強(qiáng)度域中,靠近相關(guān)像素的像素比原理相關(guān)像素的像素具有更大的權(quán)重。一幅圖像的亮度通過L(x,y)=0.212 6×R+0.715 2×G+0.072 2×B求得,給出算法計算新的可顯示亮度Ldm之后,輸出圖像的RGB通道如下:
(8)
式中:γ是屏幕顏色顯示的參數(shù),通常設(shè)置為0.4~0.6。
如圖3所示,經(jīng)過自適應(yīng)非線性局部濾波算法映射后的圖像明暗區(qū)域之間的對比度減少,文字細(xì)節(jié)得到了加強(qiáng)。
圖3 色調(diào)映射后圖像
設(shè)圖像的灰度圖為I(x,y),光照不均勻圖像的局部區(qū)域內(nèi)的背景像素亮度值和文字區(qū)域的亮度值相差很大,因此局部區(qū)域的背景可用該區(qū)域內(nèi)較亮的像素點來表示。具體算法為:
① 將21×21的滑動窗口依次遍歷I(x,y)中每一個像素點;
② 在窗口內(nèi)找出亮度最高的6個像素點;
③ 取其6個像素點的平均值作為滑動窗口的輸出Ib(x,y)。
提取背景如圖4所示。
圖4 原圖像灰度背景
對于光照不均勻圖像,背景圖像的局部平均亮度變化范圍較大,故需要對背景圖亮度進(jìn)行規(guī)范化,目的是將光照不均勻的文本圖像變成均勻光照的圖像。將圖像規(guī)范化的映射函數(shù)為:
(9)
去掉光照不均勻的背景,可以簡單理解為原圖減去背景圖,然而對于光照不均勻圖像Iu(x,y),圖像背景的局部平均亮度變化范圍較大,背景顏色越深的區(qū)域,其背景與文本之間的對比度會越小。故需要根據(jù)背景顏色的深淺進(jìn)行對比度補(bǔ)償。具體算法偽代碼為:
if {Ie(x,y)>Ib(x,y)}
Ie(x,y)=255-k(x,y)(Ib(x,y)-Ie(x,y))
if {Ie(x,y)<0.75×255}
Ie(x,y)=0.75×255
elseIe(x,y)=255
其中,k(x,y)為連續(xù)分段函數(shù):
(10)
式中:α、β為設(shè)定的超參數(shù),過大或者過小的α、β會使文本筆畫變粗或者產(chǎn)生斷裂和缺失。在本實驗中設(shè)置α=2.5、β=1.0,相應(yīng)的4段函數(shù)分別將對比度補(bǔ)償為原來的2.5倍、2.5~1倍、1倍和1~2倍。即背景亮度越低,需要放大的倍數(shù)就越大。將規(guī)范化后的圖像作背景分割并補(bǔ)償對比度后的灰度圖像如圖5所示。
圖5 背景分割后圖像
在文字識別之前需要提取圖片中的文字區(qū)域,由于本文的神經(jīng)網(wǎng)絡(luò)模型可以直接識別不定長的文本圖像,無須對文本圖像進(jìn)行分割處理,故采用連通域標(biāo)記的方法對文本進(jìn)行定位。
圖像增強(qiáng)后的圖片仍然存在部分噪聲影響,全局二值化會將光照不均勻的影響放大,生成偽影造成筆畫斷裂、缺失,如圖6所示。本文采用Sauvola[13]算法對灰度圖像Ie(x,y)二值化,通過取反操作將文字像素轉(zhuǎn)化為1,背景像素轉(zhuǎn)化為0。圖6、圖7分別為圖5全局二值化和Sauvola二值化的輸出對比圖。
圖6 全局二值圖
圖7 Sauvola二值圖
二值圖像通過圖形形態(tài)學(xué)運算可清除表格線和細(xì)小噪聲,以及將相近字符構(gòu)成連通域,標(biāo)記能夠包圍連通域的最大矩形,即可實現(xiàn)文字的定位。圖8、圖9為經(jīng)過一系列形態(tài)學(xué)處理之后所得到的文字連通域圖以及通過篩選所定位到的文字區(qū)域。
圖8 連通域圖
圖9 文字區(qū)域
本文基于文獻(xiàn)[3]提出的自然場景文字識別的網(wǎng)絡(luò)模型進(jìn)行改進(jìn),使其可應(yīng)用于常用中文、英文、數(shù)字和標(biāo)點等字符識別,其網(wǎng)絡(luò)結(jié)構(gòu)如圖10所示,主要由卷積層、循環(huán)層和轉(zhuǎn)錄層組成。網(wǎng)絡(luò)的最底部為普通的卷積網(wǎng)絡(luò),其作用是從輸入的文字圖像中提取特征序列。在卷積網(wǎng)絡(luò)之后,由雙向長短時記憶單元構(gòu)建一個循環(huán)網(wǎng)絡(luò)層,作用是對卷積層獲取的特征序列進(jìn)行預(yù)測。最后的轉(zhuǎn)錄層將循環(huán)層預(yù)測標(biāo)簽通過重新整合轉(zhuǎn)化為最終的識別結(jié)果。
圖10 網(wǎng)絡(luò)結(jié)構(gòu)
模型的卷積層采取經(jīng)典的vgg16網(wǎng)絡(luò)結(jié)構(gòu)[14],設(shè)置7層卷積和池化結(jié)構(gòu)提取特征,與標(biāo)準(zhǔn)卷積神經(jīng)網(wǎng)絡(luò)的不同在于最后去除了全連接層,從而大大地減少了訓(xùn)練參數(shù)。由于卷積網(wǎng)絡(luò)的卷積和池化結(jié)構(gòu)具有局部性的特點,所以卷積層最后的輸出特征序列在空間上與原輸入圖像一一對應(yīng)。圖11為部分特征序列及其關(guān)聯(lián)原圖像區(qū)域的對應(yīng)關(guān)系,特征序列可以被認(rèn)為是對該區(qū)域的圖像描述。用這種方式表述文字圖像,使模型可以處理不定長的文字圖片,并保留文字圖像的局部特征信息。
圖11 特征序列與原圖像對應(yīng)關(guān)系
循環(huán)層網(wǎng)絡(luò)的作用是對卷積層提取的特征序列進(jìn)行預(yù)測。特征序列x=(x1,x2,…,xt)以多對多的方式輸入到深度雙向長短時記憶網(wǎng)絡(luò)中,模型對輸入序列的每一個xt預(yù)測出一個標(biāo)簽概率分布yt。循環(huán)網(wǎng)絡(luò)對于特征序列預(yù)測有以下優(yōu)點:(1) 循環(huán)神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的捕獲輸入序列上下文信息的能力,在文字識別的應(yīng)用中,使用圖片相鄰感受野之間提取的關(guān)聯(lián)信息會比獨立處理每個符號更有作用。例如某些較寬字符需要結(jié)合左右像素的上下文信息進(jìn)行識別,而存在粘連的字符也可以根據(jù)上下文信息推算出更合理的預(yù)測。(2) 在進(jìn)行梯度下降算法優(yōu)化網(wǎng)絡(luò)參數(shù)時,循環(huán)網(wǎng)絡(luò)可以將梯度誤差方向傳播到卷積層,從而實現(xiàn)卷積層循環(huán)層參數(shù)的同時更新。(3) 循環(huán)網(wǎng)絡(luò)可以處理任意長度的序列。
由標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)單元構(gòu)成的模型會存在梯度消失的缺點[15],這限制了模型存儲上下文信息的范圍,使其難以訓(xùn)練,故采用長短時記憶(long short-term memory, LSTM)[16]單元代替?zhèn)鹘y(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)單元。LSTM單元由一個存儲單元和三個門(輸入門、輸出門、遺忘門)組成。圖12為LSTM單元的內(nèi)部結(jié)構(gòu)。
圖12 LSTM單元結(jié)構(gòu)
輸出、中間變量和輸入之間的數(shù)學(xué)關(guān)系為:
it=σ(Wxixt+Whiht-1+bi)
(11)
ft=σ(Wxjxt+Whfht-1+bf)
(12)
(13)
ot=σ(Wxoxt+Whoht-1+bo)
(14)
(15)
ht=ottanh(ct)
(16)
門將輸出系數(shù)控制在0~1之間,可理解為信息通過的概率,類似開關(guān)作用。由式(15)可看出,遺忘門ft控制記憶細(xì)胞ct的更新,其更新規(guī)則為更穩(wěn)定的加法操作,故LSTM單元的記憶更新比傳統(tǒng)RNN單元在迭代過程中更加穩(wěn)定,在進(jìn)行反向傳播算法時,梯度就不會消失。從圖形提取的特征序列中,兩個方向的相鄰特征向量是相互聯(lián)系的,本文將兩個相反方向的LSTM單元組合在一起構(gòu)成雙向長短時記憶單元[17](Bi-directional Long Short-Term Memory,BiLSTM)。如圖13所示,黑色和白色矩形塊分別代表兩個相反方向的LSTM單元,將它們的輸出拼接之后輸入到下一層的BiLSTM中實現(xiàn)正向傳播。
圖13 雙向長短時記憶循環(huán)網(wǎng)絡(luò)
循環(huán)層最后輸出的序列yt為經(jīng)過Softmax操作后得到的C維向量,C表示需要識別的總的字符數(shù)。由于循環(huán)層進(jìn)行時序分類時,不可避免地會出現(xiàn)很多冗余信息,比如一個字符會被連續(xù)識別兩次,這就需要一套去冗余的機(jī)制,但是簡單地看到兩個連續(xù)字符就去冗余的方法也有問題,本文采用CTC[18]解碼方法可以解決上述問題。CTC是一種Loss損失函數(shù)的計算方法,用CTC代替Softmax,訓(xùn)練樣本無須對齊,其引入blank空白符,解決某些位置沒有字符的問題。假設(shè)以“-”符號代表blank,標(biāo)簽為“aaa-aaab”的序列經(jīng)過CTC解碼,將被映射為“aab”。
在訓(xùn)練模型之前,需要將圖像縮放到32×W的大小,經(jīng)過卷積層特征提取后feature map變?yōu)?×(W/4)×512。接著針對LSTM,設(shè)置T=(W/4),D=512,即可將特征輸入到LSTM。
具體網(wǎng)絡(luò)細(xì)節(jié)如表1所示,卷積層采用vgg16網(wǎng)絡(luò)[14]提取圖像特征,方便對高較小而寬較長的文字圖像進(jìn)行特征提取。最后2個最大池化層采用1×2的矩形池化窗,這有別于經(jīng)典的2×2的正方形池化窗口,此時產(chǎn)生的矩形感受野也有助于較窄形狀的字符識別。最后在第5層和第6層卷積層加入批歸一化層[19]加快網(wǎng)絡(luò)的訓(xùn)練速度。
表1 網(wǎng)絡(luò)細(xì)節(jié)參數(shù)
本文圖像增強(qiáng)算法及文字定位實驗基于MATLAB 2016a實現(xiàn),硬件環(huán)境為Intel?CoreTMi5-8250U CPU @ 1.60 GHz 1.80 GHz。
由于目前互聯(lián)網(wǎng)沒有固定的可用于中文識別的數(shù)據(jù)集,故本文使用生成學(xué)習(xí)[9]的方法通過程序自動生成360萬幅不定長的文字灰度圖像,生成的圖像統(tǒng)一為280×32像素大小,圖像選取了小三、四號、小四、五號、小五五種不同大小的字號,以及包括宋體、黑體、楷體等多種常見的漢字字體,為提升模型的魯棒性,對生成的圖像進(jìn)行旋轉(zhuǎn)、平移、增加高斯隨機(jī)噪聲。以10∶1的比例劃分訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,數(shù)據(jù)標(biāo)簽包含常用的6 732種中文漢字、標(biāo)點符號、26個英文字母、10個阿拉伯?dāng)?shù)字和一個“-”字符。部分?jǐn)?shù)據(jù)集的圖像如圖14所示。
圖14 部分?jǐn)?shù)據(jù)集圖像
文字識別部分在Ubuntu linux操作系統(tǒng)上搭建神經(jīng)網(wǎng)絡(luò)模型,轉(zhuǎn)錄層使用warp-CTC智能庫輔助訓(xùn)練和預(yù)測,具體的實驗環(huán)境如表2所示。
表2 實驗環(huán)境
為尋找模型的最優(yōu)訓(xùn)練參數(shù)以及討論批標(biāo)準(zhǔn)化層對模型收斂以及識別率的影響,分別使用SGD、monmentum、Adam和RMSprop方法做分組對照實驗,訓(xùn)練的batch大小固定為128,結(jié)果如表3所示。
表3 不同優(yōu)化方法的訓(xùn)練效果
對比發(fā)現(xiàn)引入批歸一化層可以減少近一半的模型訓(xùn)練時間,其原因為批歸一化層在網(wǎng)絡(luò)訓(xùn)練階段能夠讓模型優(yōu)化空間變的平滑,而使用RMSprop方法優(yōu)化損失函數(shù)在更新中存在的擺動幅度過大的問題,并且進(jìn)一步加快函數(shù)的收斂速度,最終模型達(dá)到最高的識別準(zhǔn)確率98.71%。
將本文的文字識別模型與部分深度學(xué)習(xí)的漢字識別方法對比,各模型識別率如表4所示。其中文獻(xiàn)[20]通過提取文字圖像的不同特征如局部二值模式(LBP)、多尺度Gabor特征、梯度方向直方圖(HOG)、一般梯度特征和多尺度梯度特征,均采用卷積神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ)結(jié)構(gòu)。使用多尺度梯度特征時識別率可達(dá)到98.36%,但其需要采取繁瑣的特征提取和降維預(yù)處理。文獻(xiàn)[21]直接輸入單個字符進(jìn)行訓(xùn)練和預(yù)測,減少了特征提取的過程后,識別率仍然能達(dá)到98.33%。本文免去文字分割環(huán)節(jié),直接對字符串圖片進(jìn)行預(yù)測,文字識別準(zhǔn)確率達(dá)到98.71%,同時模型可以很好地解決文字緊湊和粘連問題。
表4 識別率對比
最后采集30幅存在光照不均勻噪聲的增值稅發(fā)票圖像,使用本文系統(tǒng)和開源的ocr文本識別軟件進(jìn)行系統(tǒng)對比實驗,其對比結(jié)果如表5所示。對比結(jié)果表明本文設(shè)計系統(tǒng)在光照不均勻場景下的字符識別率最高。
表5 本文系統(tǒng)與開源ocr對比
本文從光照不均勻條件下低質(zhì)量文字識別困難的問題出發(fā),以光照不均勻噪聲的增值稅發(fā)票圖像為例,提出可增強(qiáng)圖像暗區(qū)域文字細(xì)節(jié)的圖像增強(qiáng)算法,引入考慮局部特點的自適應(yīng)色調(diào)映射函數(shù)生成高動態(tài)范圍圖像,并通過背景分割和補(bǔ)償對比度的方法增強(qiáng)文字細(xì)節(jié),搭建可免去文字分割步驟的卷積循環(huán)神經(jīng)網(wǎng)絡(luò),使用CTC解碼預(yù)測字符序列。實驗結(jié)果表明:本文提出的圖像增強(qiáng)算法可有效降低因拍攝角度造成的光照不均勻噪聲,基于深度學(xué)習(xí)的文字識別模型能夠解決字符粘連導(dǎo)致的字符分割錯誤和識別困難的問題。系統(tǒng)的應(yīng)用場景包括車牌識別、人民幣冠字號碼識別、增值稅發(fā)票識別等。在接下來的研究中,考慮使用深度學(xué)習(xí)對圖像進(jìn)行增強(qiáng),并實現(xiàn)端對端的字符識別系統(tǒng)。