曾凡鋒,王 曉,吳飛飛
(北方工業(yè)大學(xué) 信息工程學(xué)院,北京100144)
OCR 在識(shí)別扭曲的文本圖像時(shí),常常會(huì)因?yàn)樽陨戆婷娣治鏊惴ǖ木窒扌远鴮?dǎo)致文字無(wú)法識(shí)別或者識(shí)別率很差,亂碼很多,在一些對(duì)識(shí)別率要求高的應(yīng)用中 (例如啟視助視儀)使用受限,因而需要在OCR 識(shí)別之前將扭曲的圖像校正,以提高其識(shí)別率。
為提高OCR 對(duì)扭曲文本圖像的識(shí)別率,國(guó)外對(duì)英文扭曲文檔校正做了很多研究,而國(guó)內(nèi)對(duì)中文扭曲文檔的研究很少。目前針英文扭曲文檔圖像的校正技術(shù)可分為3 類(lèi):①基于3D 技術(shù)的校正方法[1,2]。該類(lèi)方法能很好的恢復(fù)扭曲的文檔頁(yè)面,但需要特殊的輔助設(shè)備,對(duì)于面向市場(chǎng)的各種閱讀產(chǎn)品來(lái)說(shuō)實(shí)用性不大。②基于模型的校正方法[3]。該類(lèi)方法能對(duì)含有圖表等非文本元素的文檔圖像進(jìn)行校正,但其校正方法較為粗糙,檢測(cè)與校正結(jié)果欠佳。③基于連通域的方法[4-6]。此方法在英文扭曲文檔的研究很多,效果也很顯著,文獻(xiàn) [5,6]采用了連通域的方法來(lái)處理中文扭曲文檔,但是增加了很多限制規(guī)則,無(wú)疑增加了算法的復(fù)雜度,而且其采用的圖像必須是特殊定制的,稍微改變扭曲圖像,此方法便不再適用。中文字體有其自身的復(fù)雜性,分為上下結(jié)構(gòu)和左右結(jié)構(gòu),單純的移植處理英文扭曲文檔的方法是無(wú)法校正中文扭曲文檔的。文獻(xiàn) [7]提出了利用文本線校正中文文檔的思想但沒(méi)有給出實(shí)際的可行方案,文獻(xiàn) [8]采用了此種方法,使用的是機(jī)器人閱讀設(shè)備,但是其使用前提是紙張大小必須固定,頁(yè)面扭曲必須一致,對(duì)于在自然情況下采集的文本圖像,由于書(shū)頁(yè)本身的扭曲就不統(tǒng)一,利用此方法校正圖像后的識(shí)別效果很差。
通過(guò)以上的分析總結(jié),提出了一種新的扭曲中文文本圖像校正方法,用于校正自然扭曲的圖像,圖像的大小不小于32開(kāi),字體大小不小于6號(hào)。首先將圖像處理為二值圖像,利用形態(tài)學(xué)膨脹的方法獲取文本行輪廓,游程平滑來(lái)填補(bǔ)文本行輪廓內(nèi)的空洞,然后提取每行的文本中心線,估計(jì)文本行的上下邊緣,利用提出的模型和重構(gòu)算法針對(duì)每一文本行進(jìn)行校正。
二值膨脹是形態(tài)學(xué)處理圖像的基本操作,具有模糊圖像細(xì)節(jié)和擴(kuò)張圖形的功能,適當(dāng)結(jié)構(gòu)元素的選取可以填平圖形內(nèi)部和邊緣的不規(guī)則結(jié)構(gòu),采用二值膨脹能達(dá)到更好的處理效果。其定義如下
一副文本圖像中往往存在漢字、數(shù)字、字母、標(biāo)點(diǎn)這4項(xiàng)基本內(nèi)容,這些字符的共同點(diǎn)是比劃之間都存在大量細(xì)小的空洞,通過(guò)二值膨脹可以有效的填補(bǔ)這些細(xì)小空洞,而文字行與行之間的間隔相對(duì)來(lái)說(shuō)是很大的,在對(duì)文字行進(jìn)行二值膨脹的過(guò)程中對(duì)文字行之間的影響是很小的。因此,為減小誤差、提高擬合曲線的精度,合適的結(jié)構(gòu)元素b的選取十分重要,既要消除各行文字之間的差異,填補(bǔ)空洞,又要注意不能使行與行連通在一起,從而實(shí)驗(yàn)中采取2×5的結(jié)構(gòu)元素使文字橫向盡量延伸,縱向略微延伸,并重復(fù)3次以盡量突出各行輪廓和消除文字內(nèi)的空洞,膨脹的局部效果圖如圖1所示,左側(cè)大黑塊和底部窄黑條都是噪聲。
圖1 膨脹效果局部
該算法的基本思想是將圖像中水平或垂直長(zhǎng)度小于設(shè)定的閾值T 的連續(xù)白像素轉(zhuǎn)化為黑像素。經(jīng)過(guò)二值膨脹后的文字行內(nèi)依然會(huì)存在很多細(xì)小的空洞,利用游程平滑算法可以有效地填補(bǔ)這些細(xì)小空洞。假設(shè)圖像中垂直方向有一段游程R= (L1,L2,…,Li,Li+1,…,Lj,…,Ln),R1= (L1,L2,…Li-1)和R3= (Lj,…,Ln)都是黑游程,R2= (Li+1,…,Lj-1)是白游程,當(dāng)R2的長(zhǎng)度值ji-1小于門(mén)限值T 時(shí),就將黑游程R1和R3連通在一起即把白游程R2全部平滑為黑。圖2所示的平滑過(guò)程中T=5,平滑前右側(cè)兩個(gè)1-游程之間的0-游程長(zhǎng)度為4,按照以上的原理被平滑為1-游程,從而得到連通起來(lái)的1-游程為9,而對(duì)于中間的0-游程長(zhǎng)度為5,等于T,則不做處理。
圖2 游程平滑過(guò)程
為確保準(zhǔn)確的提取文本行中心線,利用此方法垂直遍歷圖像,連接膨脹處理遺漏的文本行空洞。
為了提高自然扭曲中文文本圖像的OCR 識(shí)別率,校正是針對(duì)每一文本行進(jìn)行的,這就面臨兩個(gè)基本問(wèn)題,一是如何獲取各行的文本線,二是如何將各行扭曲文本還原到正常的位置。針對(duì)這兩個(gè)問(wèn)題,提出的方法如圖3所示。
圖3 扭曲文檔校正流程
首先將圖像處理為灰度圖像,對(duì)于一個(gè)三分量為R,G,B的彩色圖像,灰度值的計(jì)算采用如下公式
然后進(jìn)行圖像的二值化處理,本文采用文檔圖像前景色為黑色 (0),背景色為白色 (255),由于研究的重點(diǎn)是如何校正扭曲中文圖像故采用OTSU 算法[9]而沒(méi)有采用Niblack算法,OTSU 算法快速但沒(méi)有Niblack算法效果優(yōu),但大津算法在光照均勻的條件下能很好的區(qū)分出前景和背景,即使二值化效果不理想,通過(guò)第三步的文本線樣值提取算法可以很好的消除這種影響。
行高值是一個(gè)關(guān)鍵值,后面文本線的細(xì)化,文本線樣值提取和最終的校正都需要行高作為參照,而且利用行高可以有效地排除噪聲。采用游程平滑的方法計(jì)算,由于圖像中間部分的噪聲比較少,影響游程平滑的因子少,故選取圖像寬度的1/3,1/2,2/3 處的列進(jìn)行遍歷,取3 列是為了取平均值計(jì)算更精確的行高。具體的檢測(cè)規(guī)則如下:
規(guī)則1:如果p(CheckPos)=0,則其相應(yīng)的統(tǒng)計(jì)值count加1;如果p(CheckPos)=255,則先判斷count是否為0,如果不為0,將count 值保存在鏈表LinkedList 中后置0。按此方法直到遍歷結(jié)束。
記p(CheckPos)為當(dāng)前檢索位置CheckPos 處的像素值,count為黑像素統(tǒng)計(jì)個(gè)數(shù),LinkedList 用于存儲(chǔ)count。之后計(jì)算出LinkedList的平均值A(chǔ)verLineHeight。為消除圖像中細(xì)微噪聲和圖片的影響,需要?jiǎng)h除滿(mǎn)足式 (3)的值
AverLineHeight*4是一個(gè)保守值,既是消除了大圖片,也防止了標(biāo)題字體被誤刪,如圖6所示的標(biāo)題字體就比正文字體三倍。
重新計(jì)算LinkedList的平均值,保存在AverLineHeight中,此時(shí)的AverLineHeight才是精確的行高。
為得到圖像每行文本的實(shí)際中心線,遍歷平滑后圖像的每一列,分別得到各個(gè)聯(lián)通黑像素的個(gè)數(shù),記為Count,若Count滿(mǎn)足式 (4),則在新圖像的對(duì)應(yīng)位置處置黑,否則將Count置0
此范圍是防止文字行高度過(guò)低和噪聲區(qū)域膨脹過(guò)大。此時(shí)便得到了各行文本線,如圖4 所示。利用此方法圖1所示的大噪聲都已全部被消除。
圖4 細(xì)化文本線局部
由于二值圖像邊界處噪聲多,對(duì)于起始點(diǎn)很難判斷出其屬于哪一條文本線,如果具體分析的話會(huì)費(fèi)時(shí)費(fèi)力,而圖像中心處噪聲少,即使噪聲多,利用模板提取的方法和后期的二乘擬合完全可以忽略這些影響,所以為避開(kāi)從兩頭開(kāi)始提取樣值時(shí)的困難,并且考慮到紙張大小和文字大小的影響,故選擇AverLineHeight*AverLineHeight 大小的模板,基于行高的搜索模板可以很好的自動(dòng)適應(yīng)不同樣張,利用該模板從圖像的中心向兩邊提取中心線樣值,如果在該方向的模板內(nèi)發(fā)現(xiàn)目標(biāo)像素,則以此像素為起點(diǎn)繼續(xù)利用該模板在該方向檢索,直到模板內(nèi)無(wú)目標(biāo)像素為止,此時(shí)需要的樣值就是各個(gè)模板內(nèi)的目標(biāo)像素。在實(shí)際的實(shí)驗(yàn)過(guò)程中,利用這種方法提取的樣本值擬合后的曲線經(jīng)常與原曲線相差很大,這是因?yàn)樵谋揪€的長(zhǎng)度短,樣本個(gè)數(shù)不足以保證還原為原曲線,經(jīng)常發(fā)生在一段結(jié)束的最后一行,文字太少,所以在提取文本線樣值的過(guò)程中需遵循以下規(guī)則。
規(guī)則2:檢索完一條線之后,若采集的樣值數(shù)量大于imgWidth/3,保存這些樣值,并為這些樣值標(biāo)號(hào)i(i=1,2,3,… ),否則刪除這些樣值。對(duì)于這種太短的文本線,本算法會(huì)將其刪除掉。
規(guī)則3:檢索完一條線之后,若采集的樣值數(shù)量大于imgWidth/3,小于imgWidth*2/3,則復(fù)制向右搜索的最后一個(gè)樣本值來(lái)延長(zhǎng)這條曲線。這種文本線的樣值擬合后的曲線往往出現(xiàn)甩尾的現(xiàn)象,影響上下行邊界處文字的校正。
檢索完所有曲線樣值后,獲取不同標(biāo)號(hào)i的樣值的左端點(diǎn),連同i 一起記錄在鏈表Point中,以備最后校正使用。
文本線樣值提取之后需要用曲線來(lái)擬合這些文本行,本文采用最小二乘擬合[10],利用式 (5)
式中,a0,a1,a2,…,an——待 得 到 的 曲 線 系 數(shù),n——曲線的冪值,此處取正整數(shù)4,基本能達(dá)到復(fù)原曲線的效果,而對(duì)于冪值能達(dá)到5以上的曲線,拍攝到的原圖像已經(jīng)是不完整的了,沒(méi)有進(jìn)行校正的必要。
由于以上得到的文本線都是文本中心線,對(duì)整行文字的重構(gòu)需要知道文字行的高度,雖然已得到文字行的平均高度AverLineHeight,但文本文檔中字體的大小也有不同,例如標(biāo)題比正文文字要大很多,如果單純的依賴(lài)AverLineHeight來(lái)估計(jì)文本行的上下位置的話,對(duì)于字體大小不統(tǒng)一的文本圖像,校正的中心會(huì)脫離文本行,校正后的圖像識(shí)別率也會(huì)大打折扣。本文采用的估計(jì)行高的方法為如式 (6)
CurrentYpoint 為當(dāng)前曲線的左端點(diǎn)垂直坐標(biāo)值,NextYpoint為下一條曲線的左端點(diǎn)垂直坐標(biāo)值,即記錄在Point中的縱坐標(biāo)值。采用的校正模型如圖5所示。
圖5 文本行重構(gòu)模型
圖5中1號(hào)線為擬合后的文本中心線,2,3號(hào)線是根據(jù)1號(hào)線加減deviation 得到的文本行上下邊界線,(X0,Y0)和(Xn,Yn)為中心線的起點(diǎn)和終點(diǎn),擬在將圖5中2,3包絡(luò)的扭曲文本行區(qū)域重構(gòu)為圖5下半部分的矩形區(qū)域。文本行的重構(gòu)體現(xiàn)在垂直方向的像素如何正確的分布在所示的矩形區(qū)域內(nèi),因而采用式 (7)
式中,CurrentHeight——新圖像中預(yù)重構(gòu)像素的垂直位置,AutoReviseHeight——原圖像對(duì)應(yīng)CurrentHeight 應(yīng)取像素的垂直位置,OriginalHeight——圖5中2,3包絡(luò)的垂直位置,計(jì)算式如下
式中:i——文本行 區(qū) 域 的 橫 坐 標(biāo),a3,a2,a1,a0——擬合曲線的系數(shù)。
式中:X——矩形區(qū)域內(nèi)橫坐標(biāo),a3,a2,a1,a0——擬合曲線的系數(shù)。
在矩形區(qū)域內(nèi),按照式 (10)在包絡(luò)區(qū)域內(nèi)查找此處應(yīng)取的像素點(diǎn),便可很好地校正文本行
其中,F(xiàn)(X,Y)為新圖像中X =i處的像素值,f(i,j)為原圖像中(i,j)處的像素值,此處令X =i。deviation 和AutoReviseHeight為動(dòng)態(tài)可變的,可以根據(jù)后期圖像處理的需要制定新的規(guī)則作出改變。
VS2005環(huán)境下采用C++語(yǔ)言實(shí)現(xiàn),測(cè)試環(huán)境為:Inter(R)Core(TM)2Duo CPU E7400@2.80GHz;內(nèi)存2GB;操作系統(tǒng)Windows XP。實(shí)驗(yàn)采用的書(shū)籍為486 頁(yè),采集圖像的設(shè)備為數(shù)碼相機(jī),OCR 采用漢王OCR2.0 版本,圖像版面內(nèi)容為純文本,采集的圖像為正對(duì)書(shū)面垂直拍攝自然扭曲書(shū)頁(yè)。采集到的圖像大小均為1000*1667像素,測(cè)試的樣張數(shù)為80張。
觀察圖6內(nèi)各圖可見(jiàn),對(duì)于扭曲不統(tǒng)一的圖像,文獻(xiàn)[8]的校正效果差強(qiáng)人意,按最優(yōu)曲線校正只校正了其中幾行文字,有些位置反而更加扭曲,該種方法只能在限定條件的情況下才可達(dá)到理想效果,而本文的算法在實(shí)驗(yàn)中的有很好的適應(yīng)性,在所有的測(cè)試樣張中只有4張校正效果不理想,也只是發(fā)生在局部校正錯(cuò)誤,對(duì)純文本自然扭曲圖像的校正成功率能達(dá)到95%,由此可見(jiàn)本方法更優(yōu)。
圖6 校正效果對(duì)比
實(shí)驗(yàn)利用采集的80張樣張進(jìn)行測(cè)試,總結(jié)的實(shí)驗(yàn)數(shù)據(jù)見(jiàn)表1。
表1 校正時(shí)間和OCR 識(shí)別率
平均識(shí)別率未達(dá)到95%以上,是由于采集的圖像自然,很多圖像出現(xiàn)了光照不均的現(xiàn)象;還有些圖像中書(shū)脊處的文字本身就未拍照完全,OCR 根本無(wú)法識(shí)別;再加上OTSU 算法的沒(méi)有廣泛的適應(yīng)性,這都很大程度上影響了OCR 識(shí)別率。對(duì)于那些光照均勻,書(shū)脊處拍照清晰的圖像,校正后識(shí)別率能夠達(dá)到95%以上。
本算法在時(shí)間上相比其它算法速度提高很多,對(duì)于1000*1667像素的圖像,平均校正時(shí)間只需430ms。文獻(xiàn)[11]提出的快速校正算法校正600*800像素的圖像所需時(shí)間大于2s,如果用于校正本實(shí)驗(yàn)的樣張,所需時(shí)間必大于4s。相比于文獻(xiàn) [4-6,11]的基于連通域的方法,本方法更是大幅提高了校正速度,連通域本身就是一個(gè)復(fù)雜的搜索方法,在原二值圖像各像素被標(biāo)記完之后一般會(huì)用到遞歸的方法進(jìn)行分析等價(jià)對(duì),這無(wú)疑是最耗費(fèi)時(shí)間的過(guò)程,而本文算法只是利用了各行文本中心線的少量樣值而已,處理的數(shù)據(jù)量大大減少,而且中文不同于英文,連通域搜索需要更多的規(guī)則進(jìn)行分析,而本文算法中英文通用。圖像的獲取比較自然,不依賴(lài)于特殊設(shè)備,適合實(shí)時(shí)性的需求。
本文為解決OCR 識(shí)別扭曲文檔圖像識(shí)別率低的問(wèn)題,提出了基于文本行重構(gòu)圖像的方法。首先運(yùn)用形態(tài)學(xué)膨脹的原理獲取圖像行的輪廓,而后估計(jì)出文本行上下輪廓曲線,利用給出的模型進(jìn)行圖像重構(gòu),并針對(duì)各行分別進(jìn)行校正。該算法已經(jīng)可以保證在500ms之內(nèi)校正1000*1667像素的圖像,極大地提高了運(yùn)行效率,而且校正效果良好,OCR 識(shí)別率顯著提高,相信經(jīng)過(guò)后續(xù)的改進(jìn),該算法校正圖像的OCR 平均識(shí)別率會(huì)達(dá)到95%。該算法的適應(yīng)性廣,經(jīng)過(guò)進(jìn)一步的測(cè)試,對(duì)扭曲英文文檔同樣具有良好的適應(yīng)性,對(duì)于含有圖片的簡(jiǎn)單版式扭曲文檔同樣可以無(wú)誤校正。
由于OCR 進(jìn)行圖像識(shí)別時(shí),內(nèi)部也是首先進(jìn)行了二值化,故下一階段的目標(biāo)是在灰度圖像上實(shí)現(xiàn)校正,以避免與OCR 進(jìn)行重復(fù)的二值化操作。
[1]Lilienblum Erik,Michaelis Bernd.Book scanner dewarping with weak 3d measurements and a simplified surface model[G].LNCS 4992:Discrete Geometry for Computer Imagery.Berlin:Springer Berlin Heidelberg,2008:529-540.
[2]Lilienblum Erik,Niese Robert,Al-Hamadi Ayoub,et al.A stereo vision system for top view book scanners[J].International Journal of Computer Science,2010,5 (1):32-37.
[3]Fu Bin,Wu Minghui,Li Rongfeng,et al.A model-based book dewarping method using text line detection [C]//Proc of the 2nd International Workshop on Camera-based Document Analysis and Recognition,2007:421-425.
[4]Gatos B,Pratikakis I,Ntirogiannis I.Segmentation based recovery of arbitrarily warped document images [C]//International Conference on Document Analysis and Recognition,2007:989-993.
[5]Hong Liu,Ye Lu.A method to restore Chinese warped document images based on binding characters and building curved lines[C]//IEEE International Conference on Systems,Man,and Cybernetics,2009:984-988.
[6]Hong Liu,Runwei Ding.Restoring Chinese documents images based on text boundary lines [C]//IEEE International Conference on Systems,Man,and Cybernetics,2009:571-575.
[7]TIAN Xuedong,MA Xingjie,HAN Lei,et al.Geometric rectification for camera-captured document images [J].Computer Applications,2007,27 (12):3045-3047 (in Chinese).[田學(xué)東,馬興杰,韓磊,等.視覺(jué)文檔圖像的幾何校正[J].計(jì)算機(jī)應(yīng)用,2007,27 (12):3045-3047.]
[8]ZHANG Weiye,ZHAO Qunfei.The layout analysis and document image preprocessing algorithm of reading robot[J].Microcomputer Applications,2011,27 (1):58-61 (in Chinese).[張偉業(yè),趙群飛.讀書(shū)機(jī)器人的版面分析及文字圖像預(yù)處理算法 [J].微型電腦應(yīng)用,2011,27 (1):58-61.]
[9]Xue JingHao,Titterington D Michael.T-Tests,F(xiàn)-Tests and Otsu's methods for image thresholding [J].IEEE Transactions on Image Processing,2011,20 (8):2392-2396.
[10]LONG Huiping,XI Shengfeng,HOU Xinhua.The algorithm and analysis from experiment data by means of minimum double mutilplication [J].Computing Technology and Automation,2008,27 (3):20-23 (in Chinese).[龍輝平,習(xí)勝豐,侯新華.實(shí)驗(yàn)數(shù)據(jù)的最小二乘擬合算法與分析 [J].計(jì)算技術(shù)與自動(dòng)化,2008,27 (3):20-23.]
[11]SONG Lili,WU Yadong.New document image distortion correction method [J].Journal of Computer Applications,2010,30 (12):3317-3320 (in Chinese). [宋麗麗,吳亞?wèn)|.文檔圖像幾何畸變快速校正的新方法 [J].計(jì)算機(jī)應(yīng)用,2010,30 (12):3317-3320.]