戴俊峰,楊 天,熊聞心+
(1.國網(wǎng)湖北省電力有限公司信息通信公司,湖北 武漢 430077;2.武漢大學 電子信息學院,湖北 武漢 430072)
印章內(nèi)容作為確定文檔有效性的關鍵信息,能夠反映與該文檔簽發(fā)的相關單位與部門,利用特定的提取方法與識別方法對印章的內(nèi)容進行處理,能夠有效地對文檔進行分類與鑒別。然而,印章內(nèi)容相比于文字識別,呈圓環(huán)排列,其排列方向不統(tǒng)一,使得印章的識別工作具有很大的難度。中心包含復雜圖案的印章,更是加大了識別任務的難度。
光學字符識別具體的實現(xiàn)主要包含文檔圖文信息內(nèi)容的檢測與文檔圖文信息的識別兩個步驟。對于簡單的印刷字體文檔識別與復雜場景的文字檢測與識別已經(jīng)取得了長足的發(fā)展,但是對于文檔關鍵信息的提取與鑒別卻缺乏有效的方法。本文利用圖像處理、極坐標轉換、深度學習、模式識別多種手段對多處文檔印章進行檢測與識別,對利用印章內(nèi)部的關鍵信息判斷出該文檔的有效性與真實性具有重要的使用價值。
本文綜合利用CTPN+CRNN深度學習框架建立了印章檢測與識別模型,并且自建了中文印章數(shù)據(jù)集。在印章文字提取前,針對印章文字呈圓環(huán)排列的特點對印章進行極坐標展開,并且與雙線性插值拉伸相結合,保證極坐標展開后的印章文字能夠保證正確的比例,然后將展開后的印章圖像輸入到CTPN+CRNN網(wǎng)絡中進行文字的檢測與識別。該方法在預處理、子圖像提取、特征提取等各個方面有一定的優(yōu)勢,具有一定的參考價值和實用性。
印章檢測與識別的研究歷史可以追溯到幾十年前。一般的印章檢測與識別算法主要包含預處理、文字區(qū)域檢測與文字內(nèi)容識別等步驟[1]。預處理過程是為了改善文字檢測與識別的效果。一般包括濾波去噪、灰度處理等方法,也可能運用其它形態(tài)學方法,例如早期研究者利用彩色模型中基色間差值、二維投影方法自動提取印章圖像,周琨等將印章圖像三值化,去噪并進行分割,然后將分割后的圖像送入到后續(xù)的識別模塊進行識別。肖進勝等將三維塊匹配去噪算法中小波閾值去噪得到的圖像替換原引導圖像,抑制了雙域濾波算法基本層不平滑的問題,減少細節(jié)層的噪聲殘留[2]。
印章的內(nèi)容檢測與識別大部分借鑒自然場景文字識別的相關方法,一般都分為文字區(qū)域檢測與文字內(nèi)容識別兩個部分。人工智能和模式識別領域的發(fā)展在很大程度上促進了文字的發(fā)展,Long等[3]介紹了截至2018年場景文字檢測與識別的方案和技術,并對各類方法進行的優(yōu)劣進行了分析。文字區(qū)域檢測算法中CTPN[4]是目前流傳最廣、影響最大的開源文本檢測模型,但是只可以檢測水平文本行。文本行可以被看成一個字符序列,而不是一般物體檢測中單個獨立的目標。SegLink[5]算法將每個單詞切割為更易檢測的有方向的小文字塊,然后用鄰近連接將各個小文字塊連接成單詞。這種方案方便于識別長度變化范圍很大的、帶方向的單詞和文本行。Zhou等利用EAST[6]模型首先使用全卷積網(wǎng)絡(FCN)生成多尺度融合的特征圖,然后在此基礎上直接進行像素級的文本塊預測??梢詫崿F(xiàn)多尺度的自然文本文字框檢測。對于文字識別,現(xiàn)在最常用方法為CTC(connectionist temporal classification)[7]和注意力轉移機制(Seq2Seq)[8]。常用的CTC算法利用BLSTM網(wǎng)絡對字符圖像進行特征提取,然后使用CTC損失函數(shù)對特征圖進行編碼與去冗,BLSTM能夠綜合考慮印章圖片中的上下文關系,有效提升文本識別準確率,使得文字識別模型更具有魯棒性。注意力轉移機制是一種與CTC編碼完全不同的卷積神經(jīng)網(wǎng)絡的模型,在Seq2Seq結構中,編碼器Encoder把所有的輸入序列都編碼成一個統(tǒng)一的語義向量Context,然后再由解碼器Decoder解碼。在解碼器Decoder解碼的過程中,不斷地將前一個時刻t-1的輸出作為后一個時刻t的輸入,循環(huán)解碼,直到輸出停止符為止,利用Seq2Seq替代CRNN網(wǎng)絡中的CTC模塊,避免了CTC需要輸出所有字符對應的概率向量,能夠加快檢測速度和效果。
由于中文印章內(nèi)容的識別并不屬于熱門的研究方向。國內(nèi)只有盧海濤等構建了滿文印章的增廣數(shù)據(jù)集,國內(nèi)的大部分研究者都主要集中在對于印章真?zhèn)蔚难芯?,并沒有公開的印章數(shù)據(jù)集。這些問題都給本文的研究帶來了困難。
本文深入研究國內(nèi)外對于印章內(nèi)容識別的發(fā)展狀況,提出了基于極坐標轉換的印章內(nèi)容識別算法。在預處理階段,首先利用中文印章一般為紅色的特點,對印章在CIELAB顏色空間進行位置提取。然后利用非線性灰度化,增加紅色通道的比重,對印章灰度化,減少了后續(xù)處理的運算量,然后利用極坐標對印章文字進行展開,同時為了防止展開過程中印章文字發(fā)生形變,在展開的同時進行雙線性插值,最后將展開后的圖像輸入到CTPN+CRNN的檢測模型之中進行文字的檢測和識別。本文算法在預處理、子圖像提取、特征提取等各個方面有一定的優(yōu)勢,將印章在檢測前就進行展開操作,克服了印章文字方向不定的問題,具有一定的參考價值和實用性。
本文算法包含3個步驟:預處理、文字檢測與文字識別。預處理部分主要包括印章區(qū)域的提取、灰度化與極坐標展開等操作,文字檢測運用CTPN算法對印章文字區(qū)域進行提取,文字識別利用CRNN網(wǎng)絡對文字內(nèi)容進行識別,其整體流程如圖1所示。
圖1 印章識別流程
為了改進印章檢測與識別的準確性,本算法在預處理階段對印章進行極坐標展開,國內(nèi)印章其文字內(nèi)容基本上呈環(huán)形排列,將印章內(nèi)的環(huán)形的文字進行極坐標展開成為同一方向的文字,能夠大量減少后續(xù)文字檢測的難度。一般轉換后的文字會產(chǎn)生形變,為了方便后續(xù)的文字識別,在轉換的同時也融合了雙線性插值,能夠克服環(huán)形文字轉換之后產(chǎn)生的形變問題。文字檢測部分的主要任務是能夠提取印章文字區(qū)域,文字識別的主要任務是鑒定印章內(nèi)的具體內(nèi)容。這兩個部分分別采用CTPN與CRNN網(wǎng)絡實現(xiàn)。首先將所有展開的印章圖像使用CTPN網(wǎng)絡對文字區(qū)域的提取,并且針對印章文字展開后呈波浪形排列的特點改進了CTPN的文本提議框合并算法,使得CTPN網(wǎng)絡能夠有效地減少干擾背景。通過CTPN網(wǎng)絡提取之后,將有效的文字區(qū)域輸入至CRNN網(wǎng)絡進行文字檢測識別,最終輸出印章內(nèi)部的文字。
一般我們所看到的彩色圖像R(紅)、G(綠)、B(藍)3個通道所組成的,每個通道的顏色取值范圍為0~255,因此每一個像素點的取值有1600多萬種(255×255×255)顏色的變化?;叶葓D像的R、G、B這3個通道具有相同的深度值,其最大的特點是每一個像素點的深度只有8位,其像素點的變化只有255種,所以在圖像處理過程中,為了減少計算量,第一步工作就將彩色的RGB圖像轉換為像素點顏色變化范圍更少的灰度圖。雖然灰度圖中每一個像素點的色彩值并沒有彩色圖像的豐富,但灰度圖依然與彩色圖像一樣能夠反映出整幅圖像的整體構成和局部的色度和亮度等級的分布特征。一般的灰度化方法為獲取R、G、B三通道中的均值或者最小值,而在印章的提取過程中,往往印章的紅色屬性被作為主要的特征使用,所以印章部分的灰度化采用非線性灰度化,加強R通道的比重,這樣使得灰度化之后的圖像能夠較好保留印章的信息。非線性灰度化的公式如下
f(i,j)=0.5R(i,j)+0.25G(i,j)+0,25B(i,j)
(1)
其中,f(i,j) 表示灰度圖像中第i行第j列像素點的像素值,R(i,j) 表示預處理后圖像中第i行第j列R通道像素點的像素值,G(i,j) 表示預處理后圖像中第i行第j列G通道像素點的像素值,B(i,j) 表示預處理后圖像中第i行第j列B通道像素點的像素值。
將印章圖像進行灰度化之后,再經(jīng)過閉運算去除印章文字之中的小型黑洞,使文字能夠更加的清晰。
極坐標轉化過程能夠將印章內(nèi)環(huán)形的文字展開為橫向排列的文字,一般轉換后的文字會產(chǎn)生形變,故在轉換的同時也融合了雙線性插值,能夠克服環(huán)形文字轉換之后產(chǎn)生的形變問題。
圖2 極坐標轉化
(2)
(3)
再將極坐標轉換為直角坐標圖像的過程中,采用了雙線性插值,對圖像進行拉伸,該拉伸的過程可以在轉換的同時完成,并不需要先進行拉伸再進行轉換。整體的轉換過程如下
(4)
(5)
f(x,y)=f1(x,y)+f2(x,y)+f3(x,y)+f4(x,y)
f1(x,y)=(1-u)(1-v)f(Zx,Zy)
f2(x,y)=(1-u)vf(Zx,Zy+1)
f3(x,y)=u(v+1)f(Zx+1,Zy)
f4(x,y)=uvf(Zx+1,Zy+1)
(6)
其中,Zx,Zy為直角坐標轉換為極坐標后對應的整數(shù)部分,u,v為直角坐標轉換為極坐標后的小數(shù)部分。極坐標展開的效果如圖3所示。
圖3 極坐標展開效果
提取的印章經(jīng)過預處理與極坐標展開后,使得印章內(nèi)部的環(huán)形文字展開為橫向排列文字,將展開后的文字輸入到CTPN+CRNN網(wǎng)絡中進行文字區(qū)域的檢測與識別。
CTPN網(wǎng)絡的主要作用是在展開的矩形圖像中檢測文字所在區(qū)域然后進行分割,CTPN將文本檢測問題轉化成為了一系列提議文本框的檢測問題。CTPN算法綜合利用了卷積神經(jīng)網(wǎng)絡與循環(huán)神經(jīng)網(wǎng)絡,利用卷積網(wǎng)絡進行特征提取,然后使用循環(huán)神經(jīng)網(wǎng)絡檢測文本框,該算法將循環(huán)神經(jīng)網(wǎng)絡引入到了文本檢測的任務中,可以將不定長的文字當作目標檢測,一定程度上解除了傳統(tǒng)字符檢測方法的限制。
CTPN網(wǎng)絡借鑒了Faster-RCNN[9]的思想,首先利用RPN(region proposal network)網(wǎng)絡在特征圖上利用文本提議框對含有文字的可疑區(qū)域進行提取,然后利用全連接層對這些文本提議框提取的區(qū)域進行分類,最后對包含文字的區(qū)域進行非極大值抑制合并輸出文字區(qū)域,但是Faster-RCNN中的提議框是為了檢測目標等剛性物體,其提取框為較大的正方形,這些提議框不符合文字分布不定長的特點,所以必須對這些文本提議框進行改進,CTPN將這些文本提議框換成了固定寬度的細粒度矩形框,每個矩形框的寬度固定為16個像素,檢測網(wǎng)絡只負責輸出該提議框的文字信息和高度信息,所以CTPN網(wǎng)絡利用積分的思想將不定長文本檢測的問題轉換成了對一系列細粒度的文本提議的檢測。CTPN網(wǎng)絡首先利用VGG16網(wǎng)絡對圖像進行特征提取,同時考慮到文字區(qū)域相對較小。將VGG16中的大卷積核全部使用3×3的小卷積核進行替代。在加深了網(wǎng)絡深度的同時也使得該網(wǎng)絡對文字檢測具有了更加強大的泛化能力。并且為了減少運算的次數(shù),CTPN只采用了VGG16的前5層進行卷積操作。生成特征圖之后再利用RPN網(wǎng)絡在特征圖上進行文本提取,將特征圖上的每一個特征點作為一個錨點(anchor),每一個錨點都可以選取產(chǎn)生10個寬度一致、高度不同的文本提議框,這些文本提議框的高度變化范圍為11~283。CTPN中的文本提議框如圖4所示。
圖4 文本提議框
RPN網(wǎng)絡可以對這些可疑的文本提議框進行粗略的分類,選出可能包含文本的提議框輸入到全連接層進行精確的分類預測與位置坐標的微調(diào)。這些文本提議框經(jīng)過全連接層輸出其中心點坐標、高度值和文本置信度,所以每一個文本提議框可以表示為 {x,y,w,h,c}。x,y為提議框的中心坐標位置,w為文本提議框寬度,固定為16。h為文本提議框的高度,c為文本提議框的文本置信度,該值越大,代表此提議框包含文字的可能性越大。CTPN網(wǎng)絡如圖5所示。
圖5 CTPN網(wǎng)絡
CTPN的輸出包含3個部分,依次為2kvertical coordinates表示選擇框的高度和中心的y軸的坐標;2kscores表示的是k個anchor的類別信息,說明其是否為字符;kside-refinement表示的是文本提議框的水平偏移量;經(jīng)過全連接層之后可以判斷所選的k個文本提議框中哪些屬于文字框,哪些屬于背景框,當然這些文本提議框中有很多屬于重復的信息,所以需要采用文本構造算法將上一步得到的細長文本提議框合并成整個文本的提議框,同時去除屬于背景信息的文本提議框和重復檢測的文本提議框,CTPN網(wǎng)絡中文本構造的算法如下:
每兩個相近的文字框組成一個pair,然后迭代合并不同的pair成一個新的pair,直到不同的pair不能夠合并為止,最后剩下m個pair,即代表該圖像內(nèi)部有m個文本區(qū)域,合并文本框或pair的條件為Bi->Bj,Bj->Bi。Bi->Bj該符號的判定條件如下:
Bi到Bj的水平距離最小,即Bix至Bjx的值最?。?/p>
Bi到Bj的距離值小于50個像素,即
(7)
Bi與Bj的交并比大于0.7。
其中Bi、Bj代表不同的文本框或pair, (Bix,Biy) 為Bi的中心坐標, (Bjx,Bjy) 為Bj的中心坐標。在CTPN原始的合并算法中,當確定每個文本提議框所屬的pair之后,對于每個pair選取所屬文本提議框之中最小的橫縱坐標 (xmin,ymin) 為左上角頂點,以每個pair選取所屬文本提議框之中最大的橫縱坐標 (xmax,ymax) 為右下角頂點,直接將該區(qū)域作為文本框進行截取,有可能將復雜背景包含進來,本文采用貝塞爾曲線擬合該文本框,能夠有效去除多余的背景,其文本提議框配對結束后,對文本區(qū)域進行文本行拼接,選出文本對中上下左右最邊沿的位置當作最終輸出的文本區(qū)域檢測框,將積分思想引入到了文本檢測任務中,克服了文本長度不確定的問題。合并效果如圖6所示。
圖6 文本構造
B(t)=(1-t)3pi+3(1-t)2tpi+1+3(1-t)t2pi+2+t3pi+3
(0≤t≤1,0≤i≤n-1)
(8)
改進后的印章文字檢測效果如圖7所示。
圖7 文字檢測效果
使用CTPN將印章文字進行分割之后,再將分割的文字輸入到CRNN雙向循環(huán)卷積網(wǎng)絡對文本進行識別,CRNN主要由3部分構成:
CNN(卷積層):將CTPN網(wǎng)絡提取的文字區(qū)域進行縮放,統(tǒng)一縮放為高度height=32,寬度width=160,通道數(shù)channel=1的灰度圖像,然后輸入到CNN網(wǎng)絡中,得到height=1,width=40,channel=512的feature map。并通過Map-to-Sequence將特征圖提取成為RNN需要的特征序列,每個特征向量對應于原始圖像的一個矩形區(qū)域(該區(qū)域稱為感受野)。
CTC loss(轉錄層):轉錄是將RNN輸出的后驗概率矩陣W轉化為實際輸出的字符,將后驗概率矩陣W中每一列的最大值對應的字符作為該列標簽,這樣每個后驗概率矩陣W可以得到40個文本標簽,這40個文本標簽中有很多屬于重復檢測的內(nèi)容,所以CTC網(wǎng)絡的另一個任務就是對識別的結果進行合并去冗,在40個文本標簽中重復的字符之間插入一個“-”同時去除不存在字符的標簽,“-”代表該符號兩邊相同的字符不需要合并,而沒有“-”號的相連相同字符需要合并為同一個字符,該編碼過程是由CTC網(wǎng)絡訓練得到的,訓練過程依舊使用梯度下降算法。CRNN網(wǎng)絡的總體結構如圖8所示。
圖8 CRNN網(wǎng)絡結構
通過非線性灰度化與極坐標展開之后,使得合同中的印章內(nèi)容更加易于檢測,然后利用CTPN+CRNN網(wǎng)絡對印章文字進行檢測與識別,并改進了文本框的合并過程,有效減少了文字區(qū)域中的背景信息。檢測與識別的效果如圖9所示。
圖9 CRNN檢測效果
實驗將在自制的中文印章數(shù)據(jù)集上進行,其中該數(shù)據(jù)集是本文作者建立的,還未公開。該數(shù)據(jù)集一共包含130張印章,包含33張實際印章,97張電子制作印章。數(shù)據(jù)集中的每一份樣本都統(tǒng)一縮放至360×360,并以24位深度JPG格式存儲。測試過程中,把該數(shù)據(jù)集分成兩組,第一組用于訓練,第二組用于測試。
ICDAR[10]將文本定位分為Challenges 1、Challenges 2和Challenges 4這3種,針對不同的數(shù)據(jù)來源可以采用不同
的評判標準,本文的實驗樣章一部分來源于電腦制作,一部分來源于用戶有意識的拍攝,并且只考慮了印章中一對一的情況,所以采用Challenges 1和Challenges2的評測方法,也叫作DetEval[9]方法。主要通過召回率與準曲率對模型進行評估,計算公式如下
(9)
(10)
其中,RICD代表召回率,PICD代表準確率,Gi表示第i個標定框i∈(1,n),Dj為第j個檢測框j∈(1,m)。 BestMatch本質是一個F調(diào)和平均數(shù)(F-Measure),一般基于面積定義召回率和準確率的定義如下
(11)
(12)
而對于文字識別常用的評價指標為召回率,計算識別結果字符集中每一個字符與標簽中的字符是否對應,只有該識別字符與樣本標簽中的字符對應,才認為該字符被正確檢出。召回率計算公式如下
(13)
本文通過實驗對比了使用極坐標展開與沒有使用極坐標展開的兩種情況下的檢測結果,測試結果見表1。
表1 檢測效果對比
由表1可知,如果利用CTPN網(wǎng)絡直接對印章內(nèi)容進行檢測,其F-Measure為26.9%。在預處理階段加入極坐標轉換之后,雖然檢測時長有所增加,但克服了印章文字方向不統(tǒng)一帶來的影響,文字檢測的召回率與精確率都具有明顯的提升,其F-Measure可以提升至90.1%。
在不使用極坐標展開的情況下,CTPN由于文本構造算法對于文本框距離的要求,會導致文本區(qū)域不能夠合并,如圖10(a)所示。也有可能由于印章文字的方向不確定帶來大量的漏檢問題,如圖10(b)所示。在將印章進行極坐標展開的情況下,克服了文字方向不統(tǒng)一的問題,能夠正確的對印章文字區(qū)域進行識別,如圖10(c)所示。
圖10 檢測與識別結果對比
文本識別的測試評價標準主要使用召回率,如果只有當一個印章內(nèi)的文字都被識別正確,則認為該印章被正確識別,該實驗一共由130個樣本組成,在使用極坐標展開的前提之下,共檢測正確的印章有96個,召回率可以達到74%。但是對測試結果的觀察發(fā)現(xiàn),很多印章中只有一個字符發(fā)生了檢測出錯的情況而導致整個印章被當作檢測錯誤,所以該實驗統(tǒng)計了所有印章內(nèi)文字的個數(shù),以單個文字的檢測結果作為評判標準,在130個樣章中共包含1021個字符,本實驗檢測正確的文字共923個,文字識別得召回率為90.4%。
本文提出了一種基于極坐標轉換的印章文字識別方法。在預處理階段,通過非線性灰度化,極坐標展開與雙線性插值等方法將印章的環(huán)形文字展開為同一方向的橫排文字,克服了印章文字方向不統(tǒng)一的問題。在檢測階段使用CTPN+CRNN的檢測框架。并且改進了CTPN文本框的合成策略,使用三階貝塞爾曲線進行擬合,減少了檢測背景的干擾。本文利用自制的中文印章數(shù)據(jù)集來評估該算法,并經(jīng)過實驗結果驗證了本文提出方法的可行性和實用性。