李宇霞,孫永奇,閆 茹,朱衛(wèi)國(guó)
(北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044)
票據(jù)是一種重要的資金交易憑證,其在購(gòu)物、餐飲與交通等日?;顒?dòng)中大量使用。在記錄資金交易時(shí),票據(jù)中有單位名稱、賬號(hào)以及金額等重要信息,這些信息的準(zhǔn)確存檔對(duì)于銀行的統(tǒng)計(jì)、結(jié)算等工作至關(guān)重要。由于票據(jù)信息錄入是一項(xiàng)繁瑣、重復(fù)且容易出錯(cuò)的工作[1],因此,票據(jù)的頻繁使用給財(cái)務(wù)人員的工作帶來巨大挑戰(zhàn)。光學(xué)字符識(shí)別(Optical Character Recognition,OCR)技術(shù)在票據(jù)中的使用不僅能有效提高工作效率,而且可減輕財(cái)務(wù)人員的勞動(dòng)強(qiáng)度。
票據(jù)中包括漢字和數(shù)字,漢字可分為印刷體和手寫體兩大類。相比數(shù)字與印刷體漢字,手寫體漢字的識(shí)別難度主要體現(xiàn)在以下3 個(gè)方面:一是漢字的字符集遠(yuǎn)大于數(shù)字集合且結(jié)構(gòu)復(fù)雜,二是與印刷體漢字相比,手寫體漢字風(fēng)格多變且不規(guī)范,使得單個(gè)字符的識(shí)別難度大幅增加,三是手寫體漢字書寫時(shí)可能出現(xiàn)重疊和粘連等情況,導(dǎo)致漢字分割難度較大。此外,實(shí)際票據(jù)都含有復(fù)雜背景,采用圖像處理方法去除背景后經(jīng)常出現(xiàn)字符模糊不清的情況。因此,本文主要對(duì)識(shí)別票據(jù)上的手寫公司名技術(shù)進(jìn)行深入研究,采用基于過分割、組合和路徑搜索的識(shí)別框架,并在識(shí)別后采用多種字形相似度結(jié)合的方法對(duì)其進(jìn)行糾錯(cuò),且在糾錯(cuò)過程中利用語言模型LSTM 進(jìn)行語義評(píng)估,以提高出現(xiàn)模糊字符時(shí)的手寫公司名識(shí)別準(zhǔn)確率。
關(guān)于手寫漢字文本識(shí)別(Handwritten Chinese Text Recognition,HCTR)的研究中,目前主要有兩大主流方法:基于過分割、組合和路徑搜索的方法以及基于深度學(xué)習(xí)的不分割方法[2]。前者先對(duì)文本進(jìn)行過分割、組合,再利用字符分類器進(jìn)行識(shí)別,并采用語言模型來搜索路徑[3]。然而,基于深度學(xué)習(xí)的方法不分割文本,而是直接利用神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別。
關(guān)于過分割的文本識(shí)別方法,文獻(xiàn)[4]提出一種識(shí)別日語郵件地址的算法,該算法采用過分割、組合方式,利用字符分類器進(jìn)行識(shí)別,在路徑搜索過程中使用數(shù)據(jù)庫檢索和Trie 前綴樹實(shí)現(xiàn)實(shí)時(shí)識(shí)別,使得字符識(shí)別準(zhǔn)確率達(dá)到83.68%。文獻(xiàn)[5]通過在生成字符識(shí)別候選項(xiàng)后加入詞候選項(xiàng),利用詞的合法性進(jìn)一步篩選,并在路徑搜索過程中使用字符級(jí)別與詞級(jí)別混合的語言模型進(jìn)行剪枝的動(dòng)態(tài)編程搜索,該方法在HIT-HW 數(shù)據(jù)集上的識(shí)別準(zhǔn)確率達(dá)到77.84%。文獻(xiàn)[6]通過將圖像識(shí)別概率、幾何信息與語義相整合以提高手寫文本識(shí)別性能,該方法在路徑搜索階段使用集束搜索(Beam Search)方式,且在CASIA-HWDB[7]數(shù)據(jù)集上的字符識(shí)別準(zhǔn)確率達(dá)到91.39%。文獻(xiàn)[8]采用與文獻(xiàn)[6]相同的系統(tǒng)框架,并對(duì)比了神經(jīng)網(wǎng)絡(luò)語言模型(NNLMs)和BLMs 語言模型的性能,且在大型語料上訓(xùn)練字符級(jí)別的3-gram、4-gram 和5-gram 模型。研究結(jié)果表明,在CASIA-HWDB 數(shù)據(jù)集上,NNLMs 模型和BLMs 語言模型表現(xiàn)相當(dāng),且可通過插值NNLMs 和BLMs 的混合模型顯著提高其識(shí)別性能。文獻(xiàn)[9]提出一種新的文本識(shí)別框架,在過分割后未直接進(jìn)行組合,而是重新調(diào)整在行中心線上方或下方的過分割項(xiàng)的高度并使之穿過中心線。接下來,使用異構(gòu)CNN 對(duì)所有組合項(xiàng)進(jìn)行識(shí)別,再結(jié)合CNN 識(shí)別結(jié)果和語言模型進(jìn)行動(dòng)態(tài)路徑搜索。文獻(xiàn)[10]提出一種基于半馬爾可夫條件隨機(jī)場(chǎng)(semi-CRFs)的手寫文本識(shí)別方法,通過在格子上定義semi-CRFs 直接估計(jì)分割-識(shí)別假設(shè)的后驗(yàn)概率,其中字符識(shí)別、幾何和語義信息均被定義為特征函數(shù)。文獻(xiàn)[11]提出使用3 個(gè)不同CNN 模型分別替換傳統(tǒng)的字符分類器、過分割與幾何模型,并使用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)語言模型對(duì)搜索路徑進(jìn)行語義評(píng)估,該算法在CASIA-HWDB 數(shù)據(jù)集上的字符識(shí)別準(zhǔn)確率達(dá)到95.95%。
隨著深度學(xué)習(xí)的不斷發(fā)展,端到端的識(shí)別方法得到廣泛應(yīng)用。比如,文獻(xiàn)[12]將LSTM-RNN 和CTC(Connectionist Temporal Classification)訓(xùn)練框架應(yīng)用于大類別(3 755 類)中文文本的識(shí)別研究中,提出一種多維LSTM 循環(huán)神經(jīng)網(wǎng)絡(luò)與CTC 相結(jié)合的算法,并用于端到端的手寫中文文本識(shí)別。由于LSTM 提取的長(zhǎng)期依賴關(guān)系存在計(jì)算耗時(shí)較長(zhǎng)等問題,文獻(xiàn)[13]提出使用殘差塊代替循環(huán)結(jié)構(gòu)來利用上下文信息,這是因?yàn)橹形奈谋拘凶R(shí)別可以基于鄰居區(qū)域而非整個(gè)上下文信息,且從鄰域中提取的信息僅是對(duì)目標(biāo)字符區(qū)域中提取信息的補(bǔ)充。
近年來,基于隱馬爾可夫模型(Hidden Markov Model,HMM)的深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)被廣泛應(yīng)用于HCTR,且在ICDAR-2013 競(jìng)賽數(shù)據(jù)集上獲得良好的性能。文獻(xiàn)[14]在HMM 基礎(chǔ)上引入DNN,通過卷積結(jié)構(gòu)自動(dòng)學(xué)習(xí)手寫文本圖像的特征,以取代DNN-HMM 中的手工梯度特征,并使用高階N-gram 語言模型評(píng)估語義,在CASIAHWDB 數(shù)據(jù)集上的字符識(shí)別錯(cuò)誤率達(dá)到4.07%。因?yàn)榛贖MM 的方法中每個(gè)字符都需使用統(tǒng)一且固定數(shù)量的隱藏狀態(tài)進(jìn)行建模,然而漢字的詞匯量較大,所以需要很多的存儲(chǔ)和計(jì)算資源。為解決該問題,文獻(xiàn)[15]提出簡(jiǎn)單的DNN-HMM 模型,利用漢字間的相似性度量生成關(guān)聯(lián)狀態(tài)池,并通過關(guān)聯(lián)狀態(tài)的數(shù)據(jù)共享和減少狀態(tài)類間的混淆來提高識(shí)別精度,使得字符識(shí)別錯(cuò)誤率降低6.2%。
在基于過分割、組合和路徑搜索的文本識(shí)別方法中,為提高識(shí)別準(zhǔn)確率,通常采用自然語言的方法對(duì)結(jié)果進(jìn)行后處理,并基于語言模型對(duì)其進(jìn)行糾正。文獻(xiàn)[16]使用字符級(jí)別的N-gram 模型進(jìn)行檢錯(cuò),若某個(gè)字的概率低于閾值,則認(rèn)為該字為錯(cuò)誤字符。接下來,將對(duì)基于拼音和字形的相似度進(jìn)行糾錯(cuò)。其中,在字形相似度度量方面,文獻(xiàn)[17]提出一種擴(kuò)展的倉(cāng)頡(Cangjie)碼計(jì)算字形相似度,該相似度是在Cangjie 碼的基礎(chǔ)上加入漢字組件布局。文獻(xiàn)[18]提出一種基于N-gram 語言模型和結(jié)巴(Jieba)中文分詞[19]的方法進(jìn)行檢錯(cuò)與糾錯(cuò),通過判斷連續(xù)孤立字檢錯(cuò),利用字符間的拼音、字形相似度和N-gram 評(píng)估語義進(jìn)行糾錯(cuò),該方法在檢錯(cuò)和糾錯(cuò)上均取得顯著效果。
本文方法可分為過分割、組合及字符分類器識(shí)別、路徑搜索、語言模型評(píng)估與字符檢錯(cuò)糾錯(cuò)4 個(gè)步驟。
步驟1過分割是將圖像過度分割成字符的基本組成元素,并稱這些元素為過分割項(xiàng)。
步驟2組合及識(shí)別是對(duì)可能屬于同一個(gè)字符的過分割項(xiàng)進(jìn)行合并,利用字符分類器對(duì)合并后的候選項(xiàng)進(jìn)行識(shí)別,從而得到合并識(shí)別項(xiàng)。然后,根據(jù)所有合并識(shí)別項(xiàng)識(shí)別結(jié)果的可靠性以及局部區(qū)間的語義可靠性,得到所有局部區(qū)間的可靠性。
步驟3路徑搜索是根據(jù)局部區(qū)間的可靠性進(jìn)行路徑擴(kuò)展,并利用剪枝策略對(duì)擴(kuò)展過程中的路徑進(jìn)行過濾。
步驟4采用語言模型評(píng)估所有候選路徑,并對(duì)評(píng)分最高的識(shí)別結(jié)果進(jìn)行驗(yàn)證與糾錯(cuò)。
采用自然語言處理方法對(duì)字符進(jìn)行檢錯(cuò)與糾錯(cuò),手寫中文文本公司名識(shí)別流程如圖1 所示。
圖1 手寫中文文本公司名識(shí)別流程Fig.1 Procedure of handwritten Chinese text recognition for company names
文獻(xiàn)[4]中詳細(xì)地描述了過分割算法,該算法主要包括連通區(qū)分析、連通區(qū)粗粒度合并與粘連筆畫分割3 個(gè)步驟。首先,通過連通區(qū)分析可以初步得到漢字的筆畫或部件。其次,根據(jù)相鄰連通區(qū)的重疊度進(jìn)行合并。最后,因?yàn)槭謱懖灰?guī)范而造成有些字符間會(huì)連筆,所以這些字符會(huì)出現(xiàn)在一個(gè)連通區(qū)中,即筆畫粘連。為此,本文使用平均行高H與過分割項(xiàng)的寬、高信息檢測(cè)粘連過分割項(xiàng),并對(duì)其進(jìn)行分割,從而得到最終過分割項(xiàng)。
對(duì)于每個(gè)粘連過分割項(xiàng),需要檢測(cè)每一列像素中橫向筆畫出現(xiàn)的次數(shù)。如果沿垂直方向切分,則橫向筆畫的像素特點(diǎn)是連續(xù)的黑色區(qū)域且該黑色區(qū)域的高度較小。當(dāng)某一區(qū)域的橫向筆畫數(shù)量少于給定閾值時(shí),則確定在該位置進(jìn)行粘連筆畫分割,最終可得到一系列過分割項(xiàng)。圖2 舉例說明了過分割算法的具體過程,其中,圖2(c)中的豎線與漢字交叉的區(qū)域即為檢測(cè)到可用于分割的橫向筆畫。
圖2 過分割算法過程Fig.2 Process of over-segmentation algorithm
由于過分割項(xiàng)通常只是漢字的一部分,如果要得到完整的漢字,則需要嘗試組合連續(xù)的過分割項(xiàng),并利用字符分類器對(duì)其進(jìn)行識(shí)別。
2.2.1 分割項(xiàng)組合
根據(jù)過分割項(xiàng)的寬、高和面積等先驗(yàn)信息將其分為小型、中型和大型3 類。其中:小型對(duì)應(yīng)漢字筆畫中的點(diǎn)狀或者細(xì)小部分,該形狀通常是其他漢字的一部分,且不能作為完整的漢字單獨(dú)出現(xiàn);中型是細(xì)高狀或中等大小的方形過分割項(xiàng),可能是漢字的偏旁,也可能是單獨(dú)構(gòu)成的漢字;大型則是較大的方形過分割項(xiàng),一般是漢字的主體部分,同時(shí)也有可能單獨(dú)構(gòu)成漢字。過分割項(xiàng)的寬度和高度分別表示為w和h,所有過分割項(xiàng)的最大寬度與最大高度分別表示為W與H。如果過分割項(xiàng)的w
根據(jù)漢字的結(jié)構(gòu)特點(diǎn),本文進(jìn)行如下規(guī)定:
1)連續(xù)2 個(gè)大型項(xiàng)不允許組合。
2)當(dāng)組合一個(gè)大型項(xiàng)后,不再連續(xù)組合大型或中型項(xiàng)。
3)每個(gè)過分割項(xiàng)至多組合3 個(gè)中型項(xiàng)。
4)小型項(xiàng)總是與其他項(xiàng)相組合。
5)若合并項(xiàng)寬度大于設(shè)定閾值,則不組合。
一個(gè)合并項(xiàng)至多保留前n個(gè)識(shí)別結(jié)果Rk(k=1,2,…,n),且用概率的形式表示。為降低空間復(fù)雜度并加快處理速度,在保證至少有一個(gè)識(shí)別結(jié)果的前提下,后面的識(shí)別結(jié)果Rk(k>1)若不滿足Rk>R1/3 且Rk>T,則將會(huì)被過濾掉,其中,T為設(shè)定閾值。
每個(gè)合并識(shí)別項(xiàng)都可用五元組(I,C,P,S,E)表示。其中,I是合并項(xiàng)的圖像信息,C是字符分類器的識(shí)別結(jié)果,P對(duì)應(yīng)于C中每一個(gè)識(shí)別結(jié)果的概率,S和E分別是構(gòu)成該合并項(xiàng)的起始、結(jié)束過分割項(xiàng)的位置信息。圖2(d)中部分過分割項(xiàng)(第8 項(xiàng)~第13 項(xiàng))的組合方式以及識(shí)別結(jié)果可以形式化描述為圖3 所示,展示了上述五元組的后4 個(gè)元素(C,P,S,E),如(實(shí),0.99,8,8)。此外,(8,中型)表示第8 個(gè)分割項(xiàng)是中型。
圖3 過分割項(xiàng)組合與識(shí)別結(jié)果示例Fig.3 Example of over-segmented items combination and recognition results
2.2.2 字符分類器
本文以10 層卷積神經(jīng)網(wǎng)絡(luò)作為字符分類器,包括7 個(gè)卷積層、7 個(gè)池化層和3 個(gè)全連接層,且網(wǎng)絡(luò)結(jié)構(gòu)如表1 所示。
表1 本文網(wǎng)絡(luò)結(jié)構(gòu)類型及參數(shù)設(shè)置Table 1 Type and parameter setting of the network structure in this paper
將原始圖像大小調(diào)整為96×96 并作為網(wǎng)絡(luò)輸入,所有卷積層都使用3×3 的小卷積核,步長(zhǎng)為1。該網(wǎng)絡(luò)結(jié)構(gòu)與文獻(xiàn)[20]提出的VGGNet 相似,不同之處是,本文網(wǎng)絡(luò)結(jié)構(gòu)在每個(gè)卷積層后都增加了最大池化層,池化窗口大小為3×3,步長(zhǎng)為2。同時(shí),為加快收斂速度,本文網(wǎng)絡(luò)結(jié)構(gòu)在每個(gè)卷積層和池化層間加入批歸一化(Batch Normalization,BN)層與Scale 層,減少Dropout 的使用。文獻(xiàn)[21]表明,含有參數(shù)的ReLU(Parameteric Rectified Linear Unit,PReLU)激活函數(shù)在ImageNet model A 中的訓(xùn)練效果優(yōu)于ReLU,因此本文使用PReLU 替換VGGNet 中的ReLU,且參數(shù)設(shè)置為默認(rèn)值0.25。在3 個(gè)全連接層中,第一個(gè)全連接層FC1使用BN 和Scale 代替原來的Dropout,第二個(gè)全連接層FC2同時(shí)使用BN、Scale和Dropout。為了使模型學(xué)習(xí)到更多的特征,并保證原始圖像在網(wǎng)絡(luò)輸入層調(diào)整大小后前景字符仍然保持原始形狀,在輸入網(wǎng)絡(luò)結(jié)構(gòu)之前,本文需要對(duì)原始圖像進(jìn)行二值化、背景填充等預(yù)處理。
每個(gè)過分割項(xiàng)在嘗試組合后都有一種或多種組合情況,且每種組合情況還會(huì)有一個(gè)或多個(gè)識(shí)別結(jié)果。本節(jié)將對(duì)首尾相連的合并識(shí)別項(xiàng)進(jìn)行路徑搜索,并使用語言模型評(píng)估語義,最終得到合理的路徑。在路徑搜索階段,如果使用窮舉法,則時(shí)間復(fù)雜度為指數(shù)級(jí),將導(dǎo)致計(jì)算量過大,因此需要邊剪枝、邊搜索。為此,本文提出一種可靠性優(yōu)先的集束搜索(Reliable First Beam Search,RFBS)方法,在搜索過程中不斷對(duì)路徑進(jìn)行評(píng)估和剪枝,以抑制搜索空間增長(zhǎng)過快。本文沒有采用傳統(tǒng)的從前到后的搜索方式,而是先通過合并項(xiàng)識(shí)別的可靠性與區(qū)間局部語義的可靠性來確定各個(gè)區(qū)間的可靠性,并在搜索過程中優(yōu)先考慮當(dāng)前最可靠的區(qū)間。其中,所使用的區(qū)間用過分割項(xiàng)的序號(hào)來表示,例如[1,5]區(qū)間是指從第1 個(gè)過分割項(xiàng)到第5 個(gè)過分割項(xiàng)。
公司名的結(jié)構(gòu)一般遵循“地名+特殊字符+行業(yè)+固定后綴”,比如在“寧夏天勝空調(diào)設(shè)備有限公司”中,“寧夏”是地名,“天勝”是特殊字符,“空調(diào)設(shè)備”是行業(yè),“有限公司”是后綴。根據(jù)該結(jié)構(gòu)特點(diǎn),本文利用地名和固定后綴的先驗(yàn)知識(shí)在路徑搜索前推斷識(shí)別錯(cuò)誤的項(xiàng),并在搜索后對(duì)路徑中有語義的行業(yè)信息進(jìn)行進(jìn)一步驗(yàn)證與糾錯(cuò)。
2.3.1 前后綴推斷
在公司名中,地名一般包括“北京”“上?!钡?,固定后綴一般是“有限公司”“有限責(zé)任公司”等。根據(jù)這些先驗(yàn)知識(shí)可推斷字符分類器對(duì)于地名和后綴識(shí)別失敗的合并項(xiàng),從而提升后續(xù)搜索過程的準(zhǔn)確率。在進(jìn)行推斷時(shí),本文主要考慮以下3 個(gè)因素:字符位置,地名語料或后綴集合與字形相似度,本節(jié)使用的字形相似度將在2.4 節(jié)中詳細(xì)分析。
在推斷前綴的地名時(shí),因?yàn)槎鄶?shù)地名只有2 個(gè)字,所以本文主要考慮地名有2 個(gè)字的情形。先建立地名語料庫,令地名集合為L(zhǎng),地名第一個(gè)字的集合為L(zhǎng)1,第二個(gè)字的集合為L(zhǎng)2,L1與L2之間的映射關(guān)系分別為f1:L1→L2和f2:L2→L1。f1(x)={y|(x,y)∈L,x∈L1,y∈L2},例如f1(南)={京,昌,寧};f2(y)={x|(x,y)∈L,x∈L1,y∈L2},例如f2(京)={北,南}。在接下來的識(shí)別過程中,結(jié)合f1(R1)值對(duì)識(shí)別結(jié)果的正確性進(jìn)行判斷,如果判斷出識(shí)別結(jié)果不正確,則需要結(jié)合字形相似度決定選擇f1(Rj)中哪一個(gè)元素進(jìn)行替換,且替換時(shí)還需計(jì)算Rj+1與f1(Rj)中所有字的相似度,并選擇相似度最高的元素進(jìn)行替換。同理,如果R1的識(shí)別結(jié)果不正確,則利用f2函數(shù)進(jìn)行糾正。
針對(duì)后綴推斷,本文主要是推斷出“公司”“有限公司”“有限責(zé)任公司”三類公司名后綴。當(dāng)確定最后一個(gè)字為“司”時(shí),則可對(duì)“公司”“有限公司”“有限責(zé)任公司”后綴進(jìn)行區(qū)分。因?yàn)樯鲜? 種后綴的重要區(qū)分在于路徑的倒數(shù)第三個(gè)字符,所以主要考慮“公”所在區(qū)間的前一個(gè)合并項(xiàng)識(shí)別結(jié)果。如果該結(jié)果中元素與“限”“任”的字形相似度均小于閾值,則該公司名的后綴為“公司”;否則,判斷其與“限”或“任”哪一個(gè)字形相似度更高,從而確定是“有限公司”還是“有限責(zé)任公司”。
2.3.2 基于圖像識(shí)別的可靠性分析
基于圖像識(shí)別的可靠性分析是根據(jù)每個(gè)合并項(xiàng)的識(shí)別結(jié)果分析該合并項(xiàng)組合方式的可靠性。由于合并項(xiàng)是由過分割項(xiàng)組合而成,對(duì)于區(qū)間[i,j],以第i個(gè)過分割項(xiàng)開始的組合方式有多種,不妨假設(shè)共有n種。用表示區(qū)間[i,j]中以第i個(gè)過分割項(xiàng)開始的第k種組合方式,1≤k≤n;用表示組合方式識(shí)別結(jié)果的最大置信度n},即所有中的最大值;Ps表示所有中的次大值。將合并項(xiàng)組合方式的可靠性按如下方法分為4 個(gè)等級(jí):
4)不可靠:剩余的其他情形。
2.3.3 基于語義的區(qū)間可靠性分析
基于語義的可靠性分析是利用語言模型對(duì)區(qū)間內(nèi)的搜索路徑進(jìn)行評(píng)估。常用的語言模型包括基于統(tǒng)計(jì)的二元文法(Bi-gram)和神經(jīng)網(wǎng)絡(luò)語言模型。本文選擇Bi-gram 的主要原因是:對(duì)于公司名的局部區(qū)間僅需分析很短的字符串,不需要考慮較長(zhǎng)的上下文信息;為了實(shí)現(xiàn)動(dòng)態(tài)剪枝,在語義分析時(shí)會(huì)頻繁調(diào)用語言模型,然而Bi-gram 模型的算法復(fù)雜度較低。
定義過分割項(xiàng)集合為O,區(qū)間的最大長(zhǎng)度為lm=α×|O|。對(duì)于每個(gè)長(zhǎng)度不大于lm的區(qū)間[i,j],取出該區(qū)間中所有合并項(xiàng)的識(shí)別結(jié)果并進(jìn)行路徑搜索,再根據(jù)搜索結(jié)果按如下方式確定區(qū)間[i,j]的語義可靠性:
1)路徑不存在或路徑唯一且長(zhǎng)度為1,則該區(qū)間的可靠性為0。
2)對(duì)于[i,j]中長(zhǎng)度大于1 的單條或多條路徑,利用Bi-gram 進(jìn)行語義評(píng)估時(shí),選擇最佳評(píng)估結(jié)果作為該區(qū)間的可靠性。
在第3 節(jié)實(shí)驗(yàn)中,閾值α通過漢字結(jié)構(gòu)特點(diǎn)、帶語義詞的特點(diǎn)和參數(shù)優(yōu)化實(shí)驗(yàn)確定為0.4。利用矩陣Rsem保存所有區(qū)間基于語義的可靠性,Rsem[i][j]表示區(qū)間[i,j]的語義可靠性。為了將語義可靠性與圖像識(shí)別的可靠性組合使用,本文將其歸一化到[0,4]。
2.3.4 可靠性優(yōu)先的集束搜索
本節(jié)將結(jié)合圖像識(shí)別的可靠性和語義可靠性給出區(qū)間的最終可靠性。由于rimg[i][k]是區(qū)間[i,j]中以第i個(gè)過分割項(xiàng)開始的第k個(gè)合并項(xiàng)的圖像識(shí)別可靠性,而Rsem[i][j]是基于語義區(qū)間[i,j]的可靠性,因此在對(duì)其組合前根據(jù)rimg[i][k]按如下公式計(jì)算出區(qū)間[i,j]圖像的識(shí)別可靠性Rimg[i][j]:
其中,rimg[s][k]為區(qū)間[i,j]中合并項(xiàng)的可靠性,Csum為該區(qū)間中可靠性大于0 的合并項(xiàng)總數(shù)。將2 種區(qū)間可靠性按如下公式加權(quán)組合得到區(qū)間[i,j]的最終可靠性Ry[i][j]:
其中,系數(shù)p通過優(yōu)化實(shí)驗(yàn)后確定為0.33,即圖像識(shí)別可靠性和語義可靠性的權(quán)重比約為1∶2。
圖4 為按加權(quán)可靠性劃分的區(qū)間示例,(0-2,3.02)中0-2 代表區(qū)間[0,2],3.02 代表該區(qū)間的可靠性。可靠區(qū)間優(yōu)先是在搜索過程優(yōu)先處理可靠的部分,再處理不可靠的部分。在劃分區(qū)間時(shí),很可能出現(xiàn)區(qū)間邊界將一個(gè)完整漢字拆分成兩個(gè)部分的情況,如圖4(b)所示,區(qū)間[5,11]與[12,13]將漢字“設(shè)”拆成兩部分。為解決該問題,本文引入滑動(dòng)邊界的概念,即在原始區(qū)間的起始和結(jié)束邊界進(jìn)行一定范圍的左右滑動(dòng),以保證過分割項(xiàng)的正確組合。根據(jù)漢字的結(jié)構(gòu)特點(diǎn)將邊界滑動(dòng)范圍設(shè)定為[-2,2]。例如,圖5 中區(qū)間的邊界中心是[5,11],在進(jìn)行局部路徑(LocPaths)搜索時(shí),左邊界可以是[3,7]之間的位置,右邊界可以是[9,13]之間的位置。
圖4 基于圖像識(shí)別和語義可靠性的區(qū)間劃分示例Fig.4 Examples of interval partition based on image recognition and semantic reliabilities
圖5 滑動(dòng)邊界示例Fig.5 Example of sliding boundary
本文在引入滑動(dòng)邊界后,將會(huì)導(dǎo)致該區(qū)間內(nèi)局部路徑增多,甚至導(dǎo)致路徑數(shù)量呈指數(shù)級(jí)增長(zhǎng)。因此,在擴(kuò)展之前采用Bi-gram 對(duì)該區(qū)間的局部路徑剪枝,并針對(duì)不同可靠性的區(qū)間動(dòng)態(tài)設(shè)定剪枝閾值。同樣,區(qū)間與區(qū)間組合時(shí)也會(huì)存在路徑數(shù)量過多的問題,由于這種情況下擴(kuò)展路徑較長(zhǎng),因此采用LSTM[22]進(jìn)行剪枝。LSTM 是基于TensorFlow框架搭建的一個(gè)三層單向RNN 結(jié)構(gòu),網(wǎng)絡(luò)輸入序列X={x0,x1,…,xm},輸出序列Y={y1,y2,…,ym,ym+1}(xi、yi對(duì)應(yīng)時(shí)刻ti的字符)。網(wǎng)絡(luò)中每個(gè)隱藏狀態(tài)的輸入為上一時(shí)刻的輸出狀態(tài)hi-1和當(dāng)前時(shí)刻的輸入xi,該隱藏狀態(tài)的輸出hi繼續(xù)作為下一時(shí)刻隱藏狀態(tài)的輸入,通過前向計(jì)算使得序列中每一時(shí)刻字符出現(xiàn)的概率依賴于前面所有字符。在訓(xùn)練時(shí),所有公司名序列長(zhǎng)度必須一致,隱藏層的神經(jīng)元個(gè)數(shù)為300,初始學(xué)習(xí)率設(shè)為0.001,利用交叉熵計(jì)算Y={y1,y2,…,ym,ym+1}與真值序列X′={x1,x2,…,xm,xm+1}的損失函數(shù)并進(jìn)行反向傳播。
此外,本文還需解決區(qū)間的重疊問題。任何路徑都可用一個(gè)五元組(s,Sc,Ec,Sf,Ef)表示,其中,s是字符串,Sc、Ec是該區(qū)間的原始邊界位置,Sf、Ef則是邊界滑動(dòng)后的實(shí)際邊界位置。當(dāng)在已有區(qū)間的擴(kuò)展路徑(ExpPaths)上擴(kuò)展LocPaths 時(shí),為避免路徑重疊需要遵循以下2 個(gè)原則:
1)LocPaths 的Sc、Ec與ExpPaths 中已有區(qū)間的Sf、Ef不能重疊。
2)如果LocPaths 的Sc、Ec與ExpPaths 中某個(gè)區(qū)間的Sc、Ec位置相鄰,則必須保證該LocPaths 與ExpPaths 之間沒有空隙。
綜合上述方法,基于可靠性優(yōu)先的路徑搜索過程如圖6 所示。
圖6 基于可靠性優(yōu)先的路徑搜索過程Fig.6 Process of path search based on reliability first
路徑搜索結(jié)束后將得到多條符合要求的完整路徑。針對(duì)得到的完整路徑,需要先通過路徑評(píng)估找出最佳路徑,再利用自然語言處理方法進(jìn)行檢錯(cuò)和糾錯(cuò)。
首先,由于公司名的半語義特征使得完全依靠語言模型來選擇最佳路徑得到的結(jié)果不理想。因此,本節(jié)在篩選完整路徑時(shí)將綜合考慮單個(gè)字的識(shí)別概率、寬度標(biāo)準(zhǔn)差以及LSTM 語義評(píng)估結(jié)果,并對(duì)三者歸一化處理后加權(quán)得到最終評(píng)估結(jié)果。通過實(shí)驗(yàn)確定當(dāng)平均識(shí)別概率、寬度標(biāo)準(zhǔn)差、語義評(píng)分的權(quán)重比為1∶2∶3 時(shí),評(píng)估效果最佳。
其次,針對(duì)公司名的檢錯(cuò),以“北京天勝設(shè)備有限公司”為例,“天勝”是語義較弱的特殊字符,其余字符均含有較強(qiáng)的語義信息。依據(jù)該特點(diǎn),可采用Jieba 工具對(duì)公司名進(jìn)行分詞。在分詞結(jié)果中非特殊字符位置出現(xiàn)孤立字,則認(rèn)為是識(shí)別錯(cuò)誤或組合錯(cuò)誤。對(duì)于以上兩種錯(cuò)誤,通過孤立字的位置以及連續(xù)長(zhǎng)度進(jìn)行區(qū)分。當(dāng)孤立字不在地名后面時(shí),如果連續(xù)孤立字長(zhǎng)度為2,則認(rèn)為是拼寫錯(cuò)誤;如果長(zhǎng)度為3,則需對(duì)該區(qū)域重新進(jìn)行過分割項(xiàng)組合與路徑搜索,例如“涂料”被識(shí)別成“涂米斗”;如果長(zhǎng)度超過3,則將其拆分成多種情況再進(jìn)行上述方法處理。
最后,是關(guān)于公司名的糾錯(cuò)。針對(duì)拼寫錯(cuò)誤,常見的錯(cuò)誤類型包括相似拼音、相似形狀與相似語義。在OCR 中,識(shí)別錯(cuò)誤基本都是形狀相似的拼寫錯(cuò)誤。文獻(xiàn)[18]中的糾正形狀相似拼寫錯(cuò)誤的方法會(huì)導(dǎo)致候選項(xiàng)區(qū)分度不顯著,難以選擇。針對(duì)這種情況,本文在該方法基礎(chǔ)上加入漢字的部件相似度,該漢字部件庫來自文獻(xiàn)[23]。漢字是由一個(gè)或多個(gè)部件構(gòu)成,如“智”由“矢”“口”“日”構(gòu)成。因此,本文的相似度計(jì)算方法如式(3)所示:
其中,Ssj(x,y)、Ssn(x,y)、Simg(x,y)和Scom(x,y)分別為四角碼、筆畫數(shù)量、字體圖像和部件相似度,且其計(jì)算方法分別為:
其中:Edit(a,b)為文本a與b的編輯距離;Jx、Nx、Ix、Cx分別為字符x的四角碼、筆畫數(shù)量、字體圖像與部件集合;Size(C)為集合C的大小。
4 種相似度按式(3)加權(quán)得到總相似度Sw(x,y),權(quán)重參數(shù)w1、w2、w3、w4分別設(shè)為0.2、0.2、0.3、0.3。通過相似度得到的候選項(xiàng)需要加入原始路徑相應(yīng)位置進(jìn)行語言模型評(píng)估。
本節(jié)將通過消融實(shí)驗(yàn)驗(yàn)證本文所提方法的有效性。先介紹實(shí)驗(yàn)使用的數(shù)據(jù)集與評(píng)價(jià)指標(biāo),再驗(yàn)證本文方法對(duì)公司名的識(shí)別準(zhǔn)確率和字符糾錯(cuò)效果。
實(shí)驗(yàn)數(shù)據(jù)集可分為公司名語料庫和單字符數(shù)據(jù)集2 種,前者是用于訓(xùn)練LSTM、Bi-gram 和文本糾錯(cuò)模型的公司名語料,后者用于訓(xùn)練CNN 模型。因?yàn)槟壳皼]有專門用于票據(jù)識(shí)別的語料庫,所以通過網(wǎng)絡(luò)爬蟲構(gòu)建包含75 萬條的公司名語料庫。單字符數(shù)據(jù)集使用中科院的手寫漢字?jǐn)?shù)據(jù)集CASIAHWDB1.0-1.3,該數(shù)據(jù)集包含1 020 個(gè)作者書寫的7 200 多種漢字,且有3 755 個(gè)漢字是GB 2312-80 定義的一級(jí)漢字。實(shí)驗(yàn)實(shí)際抽取了5 546 個(gè)漢字,包括全部一級(jí)漢字和部分二級(jí)漢字,且每個(gè)漢字約有1 000 張圖像。在這1 020 個(gè)作者中,816 個(gè)作者的手寫漢字作為CNN 模型訓(xùn)練集,204 個(gè)作者的手寫漢字作為測(cè)試集。本文系統(tǒng)使用的測(cè)試樣本來自模擬票據(jù)中裁剪的只包含公司名的400 張圖像數(shù)據(jù)。
在識(shí)別實(shí)驗(yàn)中,以所有測(cè)試樣本的字符識(shí)別準(zhǔn)確率(Character Recognition Accuracy,CRA)和整條識(shí)別準(zhǔn)確率(Line Recognition Accuracy,LRA)為評(píng)估標(biāo)準(zhǔn)。CRA 表示識(shí)別正確的字符數(shù)占總字符數(shù)的比例,LRA 表示圖像中所有字符均識(shí)別正確的樣本條數(shù)占所有測(cè)試樣本數(shù)量的比例。一般情況下,CRA 高于LRA。
關(guān)于字符糾錯(cuò)實(shí)驗(yàn),本文對(duì)從公司名識(shí)別結(jié)果中選取的300 條存在錯(cuò)誤漢字的數(shù)據(jù)進(jìn)行糾正。用E表示檢測(cè)出錯(cuò)誤漢字的總量,E1表示其中真正的錯(cuò)誤漢字的數(shù)量,E2表示其中被誤檢為錯(cuò)誤漢字的數(shù)量,D1表示真正錯(cuò)誤的漢字被正確糾正的數(shù)量,D2表示誤檢錯(cuò)誤漢字被錯(cuò)誤糾正的數(shù)量,則定義rate1=D1/E1,rate2=D2/E2為字符糾錯(cuò)方法的評(píng)價(jià)指標(biāo)。rate1越高說明該方法對(duì)錯(cuò)誤漢字的糾錯(cuò)性能越好,rate2越低說明該方法的魯棒性越強(qiáng)。
為驗(yàn)證本文所提糾錯(cuò)方法的魯棒性,本文從ICDAR 2013[24]競(jìng)賽數(shù)據(jù)集中隨機(jī)抽取圖像組合成4 000 條公司名。通過對(duì)圖像增加高斯噪聲和均值濾波進(jìn)行模糊處理,其中,高斯分布的均值和標(biāo)準(zhǔn)差參數(shù)分別為3、0.4,均值濾波的核大小為3×3。實(shí)驗(yàn)在對(duì)處理后的公司名圖像進(jìn)行識(shí)別時(shí),對(duì)比分析前后綴推斷以及糾錯(cuò)方法的有效性。
本節(jié)實(shí)驗(yàn)分為以下2 個(gè)部分:第一部分是橫向?qū)Ρ葌鹘y(tǒng)搜索與可靠性優(yōu)先搜索對(duì)識(shí)別結(jié)果的影響以及分析前后綴推斷策略對(duì)識(shí)別效果的提升,研究縱向分析語言模型對(duì)剪枝策略以及可靠區(qū)間搜索的影響;第二部分是對(duì)比漢字部件相似度以及語言模型對(duì)糾正公司名識(shí)別錯(cuò)誤的效果。
3.2.1 第一部分實(shí)驗(yàn)分析結(jié)果
表2 為不同搜索方法的識(shí)別準(zhǔn)確率對(duì)比。從表2 可以看出:集束搜索方法的CRA 和LRA 均低于可靠區(qū)間優(yōu)先搜索策略,這是因?yàn)榧阉魇菃蜗蛩阉?,?dāng)遇到較長(zhǎng)或者較混亂的不可靠區(qū)間時(shí),會(huì)對(duì)語言模型產(chǎn)生一定干擾,導(dǎo)致錯(cuò)誤區(qū)間后面的部分受到較大影響;相比集束搜索方法,基于圖像識(shí)別的可靠性優(yōu)先方法的CRA 提高2.11 個(gè)百分點(diǎn),這表明可靠性優(yōu)先策略的有效性;由于手寫體不規(guī)范,CNN的分類結(jié)果并不是正確結(jié)果,僅依靠圖像可靠性存在一定的局限性。相比集束搜索方法,基于語義的可靠性優(yōu)先方法的CRA 和LRA 分別提高3.4、4.32 個(gè)百分點(diǎn),且比基于圖像識(shí)別的可靠性優(yōu)先方法也有所提高,這表明在保留多種組合方式以及CNN 的前n種識(shí)別結(jié)果的情況下,語言模型能夠準(zhǔn)確評(píng)估所有路徑的語義,找到能夠代表區(qū)間可靠性的最佳路徑;將圖像識(shí)別和語義的可靠性相結(jié)合的本文方法RFBS 的識(shí)別準(zhǔn)確率最高,且當(dāng)兩者的權(quán)重比為1∶2時(shí)達(dá)到最佳識(shí)別效果。
表2 不同搜索方法識(shí)別準(zhǔn)確率對(duì)比Table 2 Comparison of recognition accuracy of different search methods %
表3 為前后綴推斷對(duì)識(shí)別準(zhǔn)確率的影響。從表3 可以看出,加入前后綴推斷后,CRA 和LRA 分別提高6.04、22.46 個(gè)百分點(diǎn),LRA 的提高幅度較大,這說明在整條識(shí)別錯(cuò)誤結(jié)果中,至少1/3 的錯(cuò)誤來源于前后綴字符,且是由CNN 識(shí)別錯(cuò)誤導(dǎo)致的。
表3 前后綴推斷對(duì)識(shí)別準(zhǔn)確率的影響Table 3 Effect of pre-suffixes on the recognition accuracy %
3.2.2 字符糾錯(cuò)方法效果
字符糾錯(cuò)使用的詞表來自公司名語料庫。通過rate1和rate2驗(yàn)證部件相似度在糾錯(cuò)中的效果,并對(duì)比分析基于公司名語料訓(xùn)練的LSTM 和Bi-gram 對(duì)糾錯(cuò)結(jié)果的影響。
表4 為不同字符相似度對(duì)糾錯(cuò)結(jié)果的影響。從表4 可以看出:去除拼音相似度(Spy)后的rate1有所提高,然而rate2降低,這說明拼音特征不適合OCR 糾錯(cuò);第三種組合方式是在第二種組合三種相似度的基礎(chǔ)上加入部件相似度,使得rate1提高了8.49 個(gè)百分點(diǎn),rate2降低了1.38 個(gè)百分點(diǎn)。因此,第三種方法能夠?qū)⒄嬲e(cuò)誤的字符正確糾正過來,且不會(huì)糾正誤檢字符,從而保證方法的魯棒性;OCR 產(chǎn)生的錯(cuò)誤字符除了形似導(dǎo)致的識(shí)別錯(cuò)誤外,還有一部分來源于過分割后的組合錯(cuò)誤,從而導(dǎo)致部分漢字缺少偏旁部首,但仍然是完整的漢字。對(duì)于這種情況,加入部件相似度(Scom)后可減少候選項(xiàng)的干擾,提高缺少偏旁部首的漢字與完整漢字之間的相似度。
表4 3 種字符相似度組合對(duì)糾錯(cuò)結(jié)果的影響Table 4 Effect of three character similarity combinations on the error correction results %
表5 為相似度結(jié)合字符級(jí)別的N-gram、詞級(jí)別的N-gram 和LSTM 語言模型對(duì)糾錯(cuò)結(jié)果的影響。其中,SSIC 為Ssj、Ssn、Simg與Scom的相似度組合。從表5可以看出:基于詞級(jí)別的N-gram 的糾錯(cuò)效果明顯高于基于字符級(jí)別的N-gram,這是因?yàn)樵诠久写蟛糠质菍倜~且多數(shù)是以詞為單位拼接,如果拆分成字,則評(píng)估時(shí)很難得到正確的語義;相比詞級(jí)別的N-gram,使用LSTM 的rate1提高5.34 個(gè)百分點(diǎn),rate2降低1.76 個(gè)百分點(diǎn),這是因?yàn)長(zhǎng)STM 從全局角度考慮每個(gè)字在整條公司名中的語義,彌補(bǔ)了Ngram 僅考慮局部語義的不足。
表5 3 種語言模型對(duì)糾錯(cuò)結(jié)果的影響Table 5 Effect of three language models on the error correction results %
表6 為字符糾錯(cuò)方法對(duì)公司名識(shí)別準(zhǔn)確率的影響。從表6 可以看出,加入字符糾錯(cuò)后,CRA 和LRA分別提高1.23、8.46 個(gè)百分點(diǎn),LRA 提高幅度較大,這說明本文所提糾錯(cuò)方法可有效正確糾正語義較強(qiáng)的字符。
表6 字符糾錯(cuò)方法對(duì)識(shí)別準(zhǔn)確率的影響Table 6 Effect of character error correction methods on recognition accuracy %
表7 為ICDAR 2013 組合公司名圖像經(jīng)過模糊處理后,前后綴推斷和SSIC 方法對(duì)識(shí)別結(jié)果的影響??梢钥闯觯何墨I(xiàn)[25]提出的GSLRE 方法在原始圖像上的識(shí)別準(zhǔn)確率較高,但經(jīng)過模糊處理后,CRA和LRA 分別下降11.22、38.01 個(gè)百分點(diǎn);在加入前后綴推斷和糾錯(cuò)方法后,CRA 和LRA 分別提高7.58、28.34 個(gè)百分點(diǎn),從而驗(yàn)證了本文所提前后綴推斷和糾錯(cuò)方法的有效性。
表7 糾錯(cuò)方法對(duì)識(shí)別準(zhǔn)確率的影響Table 7 Effect of error correction methods on recognition accuracy %
由于票據(jù)背景復(fù)雜以及手寫體不規(guī)范,導(dǎo)致傳統(tǒng)的從前向后路徑搜索方法對(duì)票據(jù)的識(shí)別效果較差,因此本文提出一種基于CNN 圖像識(shí)別與語義可靠性的路徑搜索RFBS 方法,以提高出現(xiàn)模糊字符時(shí)的手寫公司名識(shí)別準(zhǔn)確率,且與傳統(tǒng)集束搜索方法相比,該方法的CRA 和LRA 均有大幅提高。此外,本文根據(jù)公司名的結(jié)構(gòu)特點(diǎn)提出前后綴推斷策略,該策略能夠有效解決CNN 在識(shí)別公司名時(shí)出現(xiàn)前后綴識(shí)別錯(cuò)誤的問題。為解決手寫體不規(guī)范導(dǎo)致的識(shí)別錯(cuò)誤與組合錯(cuò)誤問題,本文結(jié)合公司名特點(diǎn)提出一種檢錯(cuò)與糾錯(cuò)方法,該方法通過Jieba 分詞對(duì)孤立字的判斷進(jìn)行檢錯(cuò),對(duì)組合錯(cuò)誤重新進(jìn)行過分割項(xiàng)組合、路徑搜索,并采用改進(jìn)后的字形相似度方法對(duì)識(shí)別錯(cuò)誤進(jìn)行糾正,以提高公司名識(shí)別準(zhǔn)確率。雖然本文所提糾錯(cuò)方法可有效糾正公司名中語義較強(qiáng)的前后綴及行業(yè)信息,但是其對(duì)語義較弱的特殊字符糾錯(cuò)效果還有待提高。因此,下一步將采用深度學(xué)習(xí)技術(shù)繼續(xù)對(duì)糾錯(cuò)方法進(jìn)行改進(jìn),以提高其對(duì)語義較弱特殊字符的糾錯(cuò)效果。