張 辰,陳 陽
(1.廣東省建設工程質(zhì)量安全檢測總站有限公司,廣東 廣州510500;2.廣東省建筑科學研究院集團股份有限公司,廣東 廣州510500)
光學字符識別(Optical Character Recognition,OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。亦即將圖像中的文字進行識別,并以文本的形式返回。其在文檔歸檔應用背景下具有廣闊的市場前景。OCR字符識別技術(shù)經(jīng)過 多 年 發(fā) 展 ,已 有 LeNet[1]、RRPN[2]、DMPNet[3]、CTPN[4]等OCR網(wǎng)絡結(jié)構(gòu)被提出。其中,CTPN是目前應用最廣的文本檢測模型之一。其基本假設是單個字符相較于異質(zhì)化程度更高的文本行更容易被檢測,因此先對單個字符進行類似R-CNN的檢測,并在檢測網(wǎng)絡中加入雙向LSTM[5],使檢測結(jié)果形成序列提供了文本的上下文特征,便可以將多個字符進行合并得到文本行。LeNet網(wǎng)絡提出時間較早,在銀行票據(jù)手寫體字符識別方面有著長期的應用。上述網(wǎng)絡結(jié)構(gòu)可以在通用背景下有效識別場景中的字符,對于非垂直文本也能進行檢測。對于大多數(shù)OCR的應用場景,并不需要對圖片中的所有字符進行識別,往往只需要對部分ROI區(qū)域的字符進行檢測,但OCR技術(shù)對ROI區(qū)域的位移與旋轉(zhuǎn)適應性較差,需要訓練單獨的網(wǎng)絡來對ROI區(qū)域進行定位。機器視覺技術(shù)在制造業(yè)領(lǐng)域有著廣泛的應用,特別是在工件定位、視覺測量等方面有大量成熟的算法,其中,模板匹配算法則針對工業(yè)定位[6-7]的應用背景,提出了基于灰度[8]、邊緣[9]、變換域[10]的模板匹配算法,能適應各種工業(yè)定位需求[11-15]。
計算機視覺技術(shù)與機器視覺技術(shù)在土木建筑行業(yè)的應用十分有限,就材料檢測而言,存在大量檢測報告需要進行數(shù)字歸檔,海量的報告歸檔消耗了大量的人力成本與時間成本。其中,報告種類繁多、掃描質(zhì)量、人員操作不規(guī)范等問題,使得OCR技術(shù)無法同諸如銀行票據(jù)識別在建材檢測行業(yè)落地。
綜上所述,本文針對建筑行業(yè)報告歸檔的實際應用,提出了機器視覺技術(shù)與計算機視覺OCR技術(shù)結(jié)合的方案。利用機器視覺領(lǐng)域中具有強適應性(魯棒性)的模板匹配技術(shù),克服檢測報告掃描質(zhì)量不可控、檢測報告掃描結(jié)果位移與形變等諸多難題,再利用OCR技術(shù)強大的字符識別能力,構(gòu)建了一套基于模板匹配技術(shù)與卷積神經(jīng)網(wǎng)絡的報告自動歸檔系統(tǒng),所構(gòu)建的系統(tǒng)對檢測報告的正確歸檔率達到了95.8%。相較于人工歸檔,系統(tǒng)自動化歸檔可節(jié)約大量的人力成本與時間成本。
報告自動歸檔就是對報告編號進行識別并進行重命名保存,但報告編號的位置與大小不固定,且報告的掃描質(zhì)量沒有統(tǒng)一標準,要對報告中的具體內(nèi)容進行識別,就需要先對報告圖像中的要素進行分類,尋找到需要進行識別處理的區(qū)域。本文使用了基于邊緣的模板匹配方法來進行要素搜尋,定位ROI區(qū)域。
模板匹配的方法主要有三種:(1)基于灰度;(2)基于邊緣;(3)基于變換域?;诨叶扰c基于變換域的模板匹配方法針對圖像的線性變換具有較強的魯棒性,匹配目標的速度快、精度高。基于變換域的方法還可以過濾頻域中特定頻率的信號,使其具有良好的抗噪性。但當匹配目標發(fā)生重疊、部分缺失、局部光照變化或非線性變化的情況下,上述兩種方法的匹配效果較差。
基于邊界的模板匹配算法的核心是圖像邊緣檢測。邊緣檢測的方法很多,但主要分為兩大類:基于搜索的邊緣檢測方法和基于零交叉的邊緣檢測方法?;谒阉鞯姆椒z測邊緣,首先計算邊緣強度的度量,通常是一階導數(shù)表達式,如梯度大??;然后估計邊緣的局部方向,如梯度方向;最后在圖像上使用X方向和Y方向上的梯度或?qū)?shù)來匹配?;谶吔绲哪0迤ヅ渌惴ㄖ饕瑑蓚€步驟:(1)創(chuàng)建基于邊緣的模型;(2)使用模型在圖像中搜索。
(1)計算圖像梯度
為了計算圖像中每個像素點的梯度大小和梯度方向,本文采用了水平濾波器與垂直濾波器來檢測圖像中像素值變化劇烈的像素點,濾波器的構(gòu)造方式如圖1所示。定義待檢測的點在圖片中的像素坐標為(x,y),該像素點點坐標的像素值為 f(x,y),水平與垂直濾波器的輸出值 Gx、Gy按式(1)與式(2)進行計算:
圖1 濾波器構(gòu)造示意圖
像素點(x,y)的梯度大小 Mag與梯度方向 Dir可由式(3)與式(4)進行計算:
(2)梯度增強與梯度歸一化
為了更好地獲取圖像的邊緣信息,計算每個像素點的梯度信息后,可對每個像素點的梯度值進行增強與歸一化處理。
定義像素點(x,y)梯度方向上左右兩側(cè)像素點的 梯 度 值 為 LeftMag(x,y)、RightMag(x,y), 所 有 像 素點中的最大梯度值記為 MaxMag,像素點(x,y)的梯度值 Mag(x,y)的增強方式按式(5)處理:
利用式(5)對所有像素點的梯度值進行處理后,邊緣像素點的梯度值被歸一化到了255個強度等級,而從式(5)可知,確定為非邊緣像素點的梯度強度將直接被清零。根據(jù)上述處理方式,得到了歸一化圖像梯度圖 nmsEdges,nmsEdges中任意一點的表達形式如式(6)所示:
nmsEdges(x,y)?width×height×Mag*(x,y) (6)式(6)中,width表示圖像的像素寬度,height表示圖像的像素高度,Mag*(x,y)為像素點(x,y)處的增強結(jié)果,由此可見,歸一化圖像梯度圖nmsEdges本質(zhì)上為一個三維矩陣。
(3)滯后閾值處理
在完成nmsEdges的計算之后,通過滯后閾值處理可以獲得圖像最終的真實邊緣像素點集合。滯后閾值處理針對模糊邊緣進行像素領(lǐng)域判斷,找到模糊邊緣的分界邊緣,并篩選真實邊緣點,排除假邊緣點。
定義最大梯度對比度maxContrast與最小梯度對比度 minContrast。 當 像 素 點(x,y)處 的 Mag*(x,y)>maxContrast時,該像素點的最終邊緣梯度值設定為1/Mag(x,y)。 當 maxContrast>Mag*(x,y)>minContrast時,如果該點周圍八鄰域的歸一化梯度值均小于maxContrast,則直 接將該 點的梯度值 Mag(x,y)計 為0,從而實現(xiàn)對模糊邊緣的邊界判定,同理,如果該點的 minContrast>Mag*(x,y),則 認為 該 點為 假 邊緣點,直接將其邊緣梯度設定值計0。至此,對圖像邊緣的提取完畢,邊緣提取結(jié)果示意圖如圖2所示。
圖2 對邊界的提取效果
在匹配的過程中,使用相似度Score來衡量模板與搜索圖中目標的匹配程度。對于搜索圖中像素點(u,v)處與模板的相似度 Scoreuv使用式(7)進行計算:
式(7)中,n表示模板中像素點的總個數(shù),如果搜索圖中某個位置的Scoreuv為1,則說明該位置的邊緣圖案與模板邊緣完全匹配。圖2(b)所展示的邊緣模板進行匹配的效果如圖3所示。
圖3 邊緣模板的匹配效果
為了加快匹配速度,可在總數(shù)為n的模板像素點中選取m個像素點參與相似度的計算,從而使得匹配過程不需要所有像素點都參與其中,以此提高模板匹配的速度。
而對m個點的選取原則采用式(8)的選取方式,其中Scorem表示搜索圖像素點中的第m個點的相似度值,如果第m個點不滿足式(8)所述條件,則排除該點。g表示算法搜索的貪婪度,取值范圍為(0,1),貪婪度控制了點的利用率,當g設置為0時,所有相關(guān)點都需要參與到匹配計算中。g越大則表示匹配過程利用的點越少,雖然可以提高算法的運行速度,但是會使得算法的魯棒性下降。Scoremin則表示最低相似度值,為算法的設置參數(shù)。
對于文檔自動歸檔的應用場景,其本質(zhì)上可以將其定義為一個手寫體數(shù)字字符識別問題,文檔中主要出現(xiàn)的是工業(yè)字符,相對于手寫體識別,其識別難度更低。因此,本文使用了LeNet網(wǎng)絡架構(gòu)來構(gòu)建本文的文檔字符數(shù)字識別模型,該網(wǎng)絡在銀行票據(jù)手寫體字符識別得到了廣泛的應用。LeNet的網(wǎng)絡結(jié)構(gòu)如圖4所示。
圖4 LeNet網(wǎng)絡結(jié)構(gòu)
從圖4可知,LeNet網(wǎng)絡總共由輸入層、輸出層、兩層卷積層、兩層池化層以及兩層全連接層組成。LeNet網(wǎng)絡的核心就是卷積操作,圖5為圖像卷積運算的基本流程。其中圖5(a)所示原圖像尺寸為8×8,圖像左半部分為深色,右半部分為淺色。Gi,j為圖 5(b)所示的 3×3卷積核,將其沿著原圖像長、寬方向進行卷積運算,滑動步長為1。卷積運算前,在原圖像上進行一定程度的像素填充延拓,如圖5(b)左圖,使得輸出圖像仍然為8×8,所得輸出特征圖如圖5(b)右圖所示。
原圖像經(jīng)過卷積運算后特征圖中顯現(xiàn)出原圖像的交界線。從圖5可見,圖5中的卷積核與上一節(jié)中的水平卷積核類似,其對邊界敏感,如果對同一張圖片采用不同的卷積核進行卷積運算,就可以提取圖像中的高級抽象特征,且卷積操作沿著圖像平面滑動,其對特征的感受能力不隨其位置的變化而改變,即具有平移不變性。
圖5 卷積運算流程
池化層對輸入進行池化操作,卷積操作可稱為下采樣,卷積過后,圖像尺寸變小,而池化操作則是進行上采樣,池化后圖像尺寸變大。與卷積運算不同,池化的目的不是提取高級抽象特征,而是通過組合高級抽象特征以再現(xiàn)低級的具象特征,因此每個池化操作都對應一個卷積操作,它們之間的計算參數(shù)具有相關(guān)性。卷積與池化的對應計算流程如圖6所示。
圖6 池化操作與卷積操作
通過卷積/池化操作,可以容易地區(qū)分數(shù)字字符,如字符數(shù)字“1”在卷積池化后具有直線特征而不存在曲線特征,而數(shù)字字符“3”則不存在直線特征,有且僅有曲線特征。最終將特征集合輸入LeNet網(wǎng)絡的全連接層,使得LeNet能夠輕松勝任OCR數(shù)字字符識別任務。
本文的報告自動歸檔系統(tǒng)的運行過程主要分為兩步:(1)識別“報告編號”關(guān)鍵字,并定位其在圖像中的位置與角度;(2)根據(jù) ROI定位結(jié)果,將識別區(qū)域進行摳圖,在將摳圖后的圖片區(qū)域處理后輸入到LeNet網(wǎng)絡,最終得到報告編號的OCR識別結(jié)果。
通過對報告圖片的仔細分析,發(fā)現(xiàn)報告中可能存在干擾 ROI區(qū)域定位的要素,即“樣品編號”,其與“報告編號”都存在“編號”這一共同要素,如圖7所示。因此在生成邊緣模板時,盡量選擇清晰的圖片生成模板。
圖7 生成邊緣模板
由于存在共同要素“編號”,因此模板匹配的Scoremin不能低于0.5。與此同時,本文的應用背景為報告自動歸檔,從而代替人工,以節(jié)約人力成本。不同于高速生產(chǎn)線追求高速的識別,本文的應用背景更加注重算法的安全性。本文抽取了200份報告進行模板匹配測試,每張報告的圖像尺寸為1 240×1 753,在Scoremin=0.7的基礎(chǔ)上,對貪婪度g的設置進行了測試,測試結(jié)果如圖8所示。
在圖8中,正確定位率是指對“報告編號”的定位準確率。誤定位率則是匹配結(jié)果的得分高于Scoremin,但匹配位置錯誤。無定位率值匹配結(jié)果低于Scoremin,因此沒有定位輸出結(jié)果。當貪婪度g=0.1時,表明模板的大部分像素點都參與到了匹配任務中,200份報告的平均匹配時間為1.965 s,匹配準確率為99%,沒有發(fā)生誤定位;當設置g=0.7時,匹配耗時為 0.034 s,匹配準確率僅為54.5%,誤定位率高達45.25%。
圖8 不同貪婪度下的模板匹配結(jié)果
在設置 Scoremin=0.7,g=0.1的情況下,對三種報告的模板匹配結(jié)果如圖9所示。基于邊緣的模板匹配算法,通過設置低貪婪度與高相似度,可以準確地匹配搜索圖中的目標圖形,且能較好地適應匹配目標的變形與旋轉(zhuǎn),為后期的OCR數(shù)字字符識別提供了基礎(chǔ)。
圖9 模板的匹配效果
本文總共對報告中0~9的數(shù)字字符進行了截取,每種字符截取了80個樣本,85%的樣本作為卷積神經(jīng)網(wǎng)絡的訓練集,10%的樣本用于測試集,5%的樣本用于過擬合測試集。訓練終止迭代周期為1 000,初始學習率為 0.001,截止誤差為0.000 1。圖10展示了對LeNet網(wǎng)絡的訓練過程,前100個訓練周期內(nèi)網(wǎng)絡逐漸收斂,100~300訓練周期內(nèi)出現(xiàn)小幅震蕩,最終于480訓練周期達到迭代停止條件,訓練誤差達到最低,過擬合誤差開始上升,此時的訓練錯誤率僅為1%。
圖10 卷積神經(jīng)網(wǎng)絡的訓練過程
對于網(wǎng)絡的輸入圖像,均歸一化到了 32×32維的矩陣,輸出結(jié)果為 10維列向量,表示 0~9。對網(wǎng)絡輸出的可視化展示如圖11所示,本文通過LeNet網(wǎng)絡對100份報告共900個字符進行數(shù)字字符識別,實驗結(jié)果顯示,LeNet網(wǎng)絡對數(shù)字字符的正確識別率達到了96.77%,結(jié)合模板匹配算法,整個系統(tǒng)的綜合識別率為95.8%。
圖11 OCR數(shù)字字符識別可視化
本文所構(gòu)建的報告自動歸檔系統(tǒng)可以節(jié)約大量人力成本,減少了人員手動錄入時間,雖然存在錯誤識別的情況,但檢測人員只需要對重命名的文檔進行檢查,極大地提高了報告歸檔效率。通過對識別錯誤的報告進行分析,發(fā)現(xiàn)識別錯誤的情況多出現(xiàn)在印刷不均勻的數(shù)字字符上,后續(xù)工作可不斷收集錯誤報告的字符,對網(wǎng)絡模型進行增量式訓練,以進一步提升網(wǎng)絡的識別正確率。