何鎏一 楊國為,2
1(青島大學電子信息學院 山東 青島 266071)
2(南京審計大學信息工程學院 江蘇 南京 211815)
光學字符識別(OCR)指通過設備自動提取圖片中存在的印刷體文字。文字識別涉及很多領域,包括人工智能、圖像處理、計算機等。文字識別技術的實現,對于信息處理、辦公自動化等各個領域都有著巨大的作用。
隨著深度學習的發展,利用神經網絡技術對文本識別已經成為研究熱點。Goodfellow等[1]基于深度卷積神經網絡,實現了在少量字符或字符之間較為獨立場景下的文字識別,比如識別門牌和車牌號碼,但是該模型識別前需事先選定可預測序列的最大長度。Shi等[2]提出用深度卷積神經網絡提取特征,使用雙向長短時記憶神經網絡進行序列預測,通過CTC轉錄整合輸出字符。Lee等[3]使用卷積神經網絡提取文字特征,使用注意力模型(Attention model)對特征進行序列建模和解碼。對于不規則的文字識別,Shi等[4-5]通過構建STN(Spatial Transformer Network)以及SRN(Sequence Recognition Network)兩個網絡結構,將透射變換或者彎曲的文本圖片對齊到一個正規的、更易讀的圖片并輸出文本序列。Li等[6]提出一個統一網絡,同時解決文字的檢測和識別問題。
上述識別方法常應用于文字質量較高、字體較大的自然場景中,不適用于低質量字符識別。低質量字符識別的應用場景包括車牌識別、人民幣冠字號碼識別、增值稅發票識別等。低質量字符自身具有字號小、字符模糊、緊湊等特點,而造成字符質量低的外部原因還包括采集設備分辨率低下、外部光照不均勻等。因為高清掃描文本的字符識別技術已經十分成熟,故研究者們將低質量字符識別問題的重點放在了圖像增強上。Zhou等[7]利用顏色編碼信息對圖像信息進行補償,但對字號較小的識別準確率較低。Ohkura等[8]引入圖像超分辨率重建方法,對文字圖像插值重建,放大較小的字符的同時大部分信息得到保留,有效地提高了小字符識別準確率,但其對字符的紋理、邊緣細節未增強。Ishida等[9]提出生成學習的方法,預先估計點擴散函數高效地生成低質量的文字圖像進行訓練,但樣本擴充的方式太少識別效果具有偶然性。另一方面,造成字符識別錯誤的原因還包括對字符的分割不準確,以上方法必須將文字分割為單一字符,而低質量文字之間的字跡緊湊、筆畫粘連問題必然會對文字分割有所影響。
本文以光照不均勻場景下的增值稅發票字符識別為對象,提出一種局部非線性濾波的圖像增強算法對圖像進行處理,引入新的色調映射函數生成增強圖像。對比原始圖像,增強后的圖像暗區域文字細節得到提高,且光照不均勻現象被削弱。搭建改進的卷積循環神經網絡,構建可免去字符分割的多字符識別模型。在訓練階段使用生成學習的方法創建包含常用漢字、英文、數字的數據集,并對樣本進行形變、旋轉、平移和添加噪聲等操作進行樣本擴充,提高模型的魯棒性。對比實驗表明,本文系統在光照不均勻場景下的低質量字符識別性能優于常用的OCR軟件。
本文系統流程如圖1所示,其中圖像增強包括局部自適應濾波色調映射、圖像背景和文本定位。處理基于Windows系統MATLAB 2016a實現,卷積循環神經網絡基于Linux系統使用Python語言搭建。

圖1 基于深度學習的光照不均勻文本圖像識別算法功能流程圖
本節以圖2的增值稅發票為例,介紹基于光照不均勻條件下的低質量文字圖像增強算法。
色調映射的基本思想為:首先推算出場景的平均亮度,然后根據平均亮度選取一個合適的亮度域,最后將整個場景映射到亮度域中。傳統的色調映射方法考慮圖像的全局平均亮度[10]:
(1)
式中:L(x,y)為像素點(x,y)的亮度值;N是圖像的總像素數;δ是一個小的常數用來防止像素點純黑的情況。通過式(2)映射新的圖像的可顯示亮度,其中C值用來控制輸出圖像的整體亮度和對比度:
(2)
本文同時考慮全局平均亮度和局部平均亮度[11-12]提出新的映射函數,得到圖像每個位置的可顯示亮度,α為平衡Lbf和Lavg的系數。
(3)
式中:Lbf(x,y)是通過以相關像素P為中心的非線性濾波滑窗block中相鄰像素亮度的加權和計算得來。其中滑窗中每個對數值使用空間域中的高斯函數計算得到,每個像素的權重由空間距離和強度差決定:
(4)
式中:Wq為滑窗block中每個像素的權重。
(5)
式中:S和I分別表示空間域和強度域的高斯函數。
(6)
TW為用于歸一化的權重加和:
(7)
使用式(3)時,亮像素會映射變暗,而暗像素會變得更亮,從而降低整個圖像的對比度。由于不同的輸入圖像有不同的強度值范圍,本文在強度域中使用自適應的σ,其中2σ2=0.1Lmax,Lmax為圖像的最大亮度值。這樣設定使得在空間域或強度域中,靠近相關像素的像素比原理相關像素的像素具有更大的權重。一幅圖像的亮度通過L(x,y)=0.212 6×R+0.715 2×G+0.072 2×B求得,給出算法計算新的可顯示亮度Ldm之后,輸出圖像的RGB通道如下:
(8)
式中:γ是屏幕顏色顯示的參數,通常設置為0.4~0.6。
如圖3所示,經過自適應非線性局部濾波算法映射后的圖像明暗區域之間的對比度減少,文字細節得到了加強。

圖3 色調映射后圖像
設圖像的灰度圖為I(x,y),光照不均勻圖像的局部區域內的背景像素亮度值和文字區域的亮度值相差很大,因此局部區域的背景可用該區域內較亮的像素點來表示。具體算法為:
① 將21×21的滑動窗口依次遍歷I(x,y)中每一個像素點;
② 在窗口內找出亮度最高的6個像素點;
③ 取其6個像素點的平均值作為滑動窗口的輸出Ib(x,y)。
提取背景如圖4所示。

圖4 原圖像灰度背景
對于光照不均勻圖像,背景圖像的局部平均亮度變化范圍較大,故需要對背景圖亮度進行規范化,目的是將光照不均勻的文本圖像變成均勻光照的圖像。將圖像規范化的映射函數為:
(9)
去掉光照不均勻的背景,可以簡單理解為原圖減去背景圖,然而對于光照不均勻圖像Iu(x,y),圖像背景的局部平均亮度變化范圍較大,背景顏色越深的區域,其背景與文本之間的對比度會越小。故需要根據背景顏色的深淺進行對比度補償。具體算法偽代碼為:
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)為連續分段函數:
(10)
式中:α、β為設定的超參數,過大或者過小的α、β會使文本筆畫變粗或者產生斷裂和缺失。在本實驗中設置α=2.5、β=1.0,相應的4段函數分別將對比度補償為原來的2.5倍、2.5~1倍、1倍和1~2倍。即背景亮度越低,需要放大的倍數就越大。將規范化后的圖像作背景分割并補償對比度后的灰度圖像如圖5所示。

圖5 背景分割后圖像
在文字識別之前需要提取圖片中的文字區域,由于本文的神經網絡模型可以直接識別不定長的文本圖像,無須對文本圖像進行分割處理,故采用連通域標記的方法對文本進行定位。
圖像增強后的圖片仍然存在部分噪聲影響,全局二值化會將光照不均勻的影響放大,生成偽影造成筆畫斷裂、缺失,如圖6所示。本文采用Sauvola[13]算法對灰度圖像Ie(x,y)二值化,通過取反操作將文字像素轉化為1,背景像素轉化為0。圖6、圖7分別為圖5全局二值化和Sauvola二值化的輸出對比圖。

圖6 全局二值圖

圖7 Sauvola二值圖
二值圖像通過圖形形態學運算可清除表格線和細小噪聲,以及將相近字符構成連通域,標記能夠包圍連通域的最大矩形,即可實現文字的定位。圖8、圖9為經過一系列形態學處理之后所得到的文字連通域圖以及通過篩選所定位到的文字區域。

圖8 連通域圖

圖9 文字區域
本文基于文獻[3]提出的自然場景文字識別的網絡模型進行改進,使其可應用于常用中文、英文、數字和標點等字符識別,其網絡結構如圖10所示,主要由卷積層、循環層和轉錄層組成。網絡的最底部為普通的卷積網絡,其作用是從輸入的文字圖像中提取特征序列。在卷積網絡之后,由雙向長短時記憶單元構建一個循環網絡層,作用是對卷積層獲取的特征序列進行預測。最后的轉錄層將循環層預測標簽通過重新整合轉化為最終的識別結果。

圖10 網絡結構
模型的卷積層采取經典的vgg16網絡結構[14],設置7層卷積和池化結構提取特征,與標準卷積神經網絡的不同在于最后去除了全連接層,從而大大地減少了訓練參數。由于卷積網絡的卷積和池化結構具有局部性的特點,所以卷積層最后的輸出特征序列在空間上與原輸入圖像一一對應。圖11為部分特征序列及其關聯原圖像區域的對應關系,特征序列可以被認為是對該區域的圖像描述。用這種方式表述文字圖像,使模型可以處理不定長的文字圖片,并保留文字圖像的局部特征信息。

圖11 特征序列與原圖像對應關系
循環層網絡的作用是對卷積層提取的特征序列進行預測。特征序列x=(x1,x2,…,xt)以多對多的方式輸入到深度雙向長短時記憶網絡中,模型對輸入序列的每一個xt預測出一個標簽概率分布yt。循環網絡對于特征序列預測有以下優點:(1) 循環神經網絡具有很強的捕獲輸入序列上下文信息的能力,在文字識別的應用中,使用圖片相鄰感受野之間提取的關聯信息會比獨立處理每個符號更有作用。例如某些較寬字符需要結合左右像素的上下文信息進行識別,而存在粘連的字符也可以根據上下文信息推算出更合理的預測。(2) 在進行梯度下降算法優化網絡參數時,循環網絡可以將梯度誤差方向傳播到卷積層,從而實現卷積層循環層參數的同時更新。(3) 循環網絡可以處理任意長度的序列。
由標準循環神經網絡單元構成的模型會存在梯度消失的缺點[15],這限制了模型存儲上下文信息的范圍,使其難以訓練,故采用長短時記憶(long short-term memory, LSTM)[16]單元代替傳統的循環神經網絡單元。LSTM單元由一個存儲單元和三個門(輸入門、輸出門、遺忘門)組成。圖12為LSTM單元的內部結構。

圖12 LSTM單元結構
輸出、中間變量和輸入之間的數學關系為:
it=σ(Wxixt+Whiht-1+bi)
(11)
ft=σ(Wxjxt+Whfht-1+bf)
(12)
(13)
ot=σ(Wxoxt+Whoht-1+bo)
(14)
(15)
ht=ottanh(ct)
(16)
門將輸出系數控制在0~1之間,可理解為信息通過的概率,類似開關作用。由式(15)可看出,遺忘門ft控制記憶細胞ct的更新,其更新規則為更穩定的加法操作,故LSTM單元的記憶更新比傳統RNN單元在迭代過程中更加穩定,在進行反向傳播算法時,梯度就不會消失。從圖形提取的特征序列中,兩個方向的相鄰特征向量是相互聯系的,本文將兩個相反方向的LSTM單元組合在一起構成雙向長短時記憶單元[17](Bi-directional Long Short-Term Memory,BiLSTM)。如圖13所示,黑色和白色矩形塊分別代表兩個相反方向的LSTM單元,將它們的輸出拼接之后輸入到下一層的BiLSTM中實現正向傳播。

圖13 雙向長短時記憶循環網絡
循環層最后輸出的序列yt為經過Softmax操作后得到的C維向量,C表示需要識別的總的字符數。由于循環層進行時序分類時,不可避免地會出現很多冗余信息,比如一個字符會被連續識別兩次,這就需要一套去冗余的機制,但是簡單地看到兩個連續字符就去冗余的方法也有問題,本文采用CTC[18]解碼方法可以解決上述問題。CTC是一種Loss損失函數的計算方法,用CTC代替Softmax,訓練樣本無須對齊,其引入blank空白符,解決某些位置沒有字符的問題。假設以“-”符號代表blank,標簽為“aaa-aaab”的序列經過CTC解碼,將被映射為“aab”。
在訓練模型之前,需要將圖像縮放到32×W的大小,經過卷積層特征提取后feature map變為1×(W/4)×512。接著針對LSTM,設置T=(W/4),D=512,即可將特征輸入到LSTM。
具體網絡細節如表1所示,卷積層采用vgg16網絡[14]提取圖像特征,方便對高較小而寬較長的文字圖像進行特征提取。最后2個最大池化層采用1×2的矩形池化窗,這有別于經典的2×2的正方形池化窗口,此時產生的矩形感受野也有助于較窄形狀的字符識別。最后在第5層和第6層卷積層加入批歸一化層[19]加快網絡的訓練速度。

表1 網絡細節參數
本文圖像增強算法及文字定位實驗基于MATLAB 2016a實現,硬件環境為Intel?CoreTMi5-8250U CPU @ 1.60 GHz 1.80 GHz。
由于目前互聯網沒有固定的可用于中文識別的數據集,故本文使用生成學習[9]的方法通過程序自動生成360萬幅不定長的文字灰度圖像,生成的圖像統一為280×32像素大小,圖像選取了小三、四號、小四、五號、小五五種不同大小的字號,以及包括宋體、黑體、楷體等多種常見的漢字字體,為提升模型的魯棒性,對生成的圖像進行旋轉、平移、增加高斯隨機噪聲。以10∶1的比例劃分訓練數據集和測試數據集,數據標簽包含常用的6 732種中文漢字、標點符號、26個英文字母、10個阿拉伯數字和一個“-”字符。部分數據集的圖像如圖14所示。

圖14 部分數據集圖像
文字識別部分在Ubuntu linux操作系統上搭建神經網絡模型,轉錄層使用warp-CTC智能庫輔助訓練和預測,具體的實驗環境如表2所示。

表2 實驗環境
為尋找模型的最優訓練參數以及討論批標準化層對模型收斂以及識別率的影響,分別使用SGD、monmentum、Adam和RMSprop方法做分組對照實驗,訓練的batch大小固定為128,結果如表3所示。

表3 不同優化方法的訓練效果
對比發現引入批歸一化層可以減少近一半的模型訓練時間,其原因為批歸一化層在網絡訓練階段能夠讓模型優化空間變的平滑,而使用RMSprop方法優化損失函數在更新中存在的擺動幅度過大的問題,并且進一步加快函數的收斂速度,最終模型達到最高的識別準確率98.71%。
將本文的文字識別模型與部分深度學習的漢字識別方法對比,各模型識別率如表4所示。其中文獻[20]通過提取文字圖像的不同特征如局部二值模式(LBP)、多尺度Gabor特征、梯度方向直方圖(HOG)、一般梯度特征和多尺度梯度特征,均采用卷積神經網絡作為基礎結構。使用多尺度梯度特征時識別率可達到98.36%,但其需要采取繁瑣的特征提取和降維預處理。文獻[21]直接輸入單個字符進行訓練和預測,減少了特征提取的過程后,識別率仍然能達到98.33%。本文免去文字分割環節,直接對字符串圖片進行預測,文字識別準確率達到98.71%,同時模型可以很好地解決文字緊湊和粘連問題。

表4 識別率對比
最后采集30幅存在光照不均勻噪聲的增值稅發票圖像,使用本文系統和開源的ocr文本識別軟件進行系統對比實驗,其對比結果如表5所示。對比結果表明本文設計系統在光照不均勻場景下的字符識別率最高。

表5 本文系統與開源ocr對比
本文從光照不均勻條件下低質量文字識別困難的問題出發,以光照不均勻噪聲的增值稅發票圖像為例,提出可增強圖像暗區域文字細節的圖像增強算法,引入考慮局部特點的自適應色調映射函數生成高動態范圍圖像,并通過背景分割和補償對比度的方法增強文字細節,搭建可免去文字分割步驟的卷積循環神經網絡,使用CTC解碼預測字符序列。實驗結果表明:本文提出的圖像增強算法可有效降低因拍攝角度造成的光照不均勻噪聲,基于深度學習的文字識別模型能夠解決字符粘連導致的字符分割錯誤和識別困難的問題。系統的應用場景包括車牌識別、人民幣冠字號碼識別、增值稅發票識別等。在接下來的研究中,考慮使用深度學習對圖像進行增強,并實現端對端的字符識別系統。