周斌 周雨
1. 冰辰網絡科技(上海)有限公司 上海 200000;2. 南通駿星信息科技有限公司 江蘇 南通 226500
聯機手寫漢字筆跡識別系統實現了書寫者通過物理設備(如手寫筆、數碼板等)輸入筆跡,通過實時采集筆跡信息并進行分析處理識別漢字的過程;聯機手寫漢字筆跡識別系統具有識別快速準確的特點,廣泛運用于資料處理、輔助教學、智能閱卷、票據識別等場景。本文設計了一種聯機手寫漢字筆跡識別系統,具有識別自動可靠、可識別常用漢字、系統魯棒性好的特點。
聯機手寫漢字筆跡識別系統需要達到以下目標:
1.1.1 識別自動化。整個識別過程自動化,不需要人參與。為此,需要串聯所有的處理模塊,實現流水化處理過程。
1.1.2 僅識別常用漢字。為簡化設計,僅實現了對GB2312字符集中所有共6763個漢字的識別。如果遇到非GB2312中的漢字,會出現識別錯誤。
1.1.3 需要處理書寫漢字的異常現象。聯機手寫輸入漢字時,需要對不規范的漢字輸入或異常情況做出相應的處理,比如連筆、飛筆、斷筆等。
按照以下原則設計聯機手寫漢字筆跡識別系統:
1.2.1 系統正確性。為了實現系統識別正確,設計時采取以下幾條:
1.2.1.1 選取穩定的不易受干擾的特征作為識別的依據。例如筆跡坐標就是一個不穩定的識別依據,因為很容易受到干擾(比如筆的抖動),但是筆畫順序就是一個穩定的輸入特征,書寫一個特定漢字必然要按順序書寫某些特定筆畫,因此,選取筆畫順序作為輸入特征。
1.2.1.2 識別模塊采用多個分類器的組合,每個分類器輸入不同的特征。在識別模塊中,通過對不同類型的分類器的組合,可以構成更強大的分類器,從而獲得更好的識別效果。
本系統采用了整字的二值圖像和按順序輸入的筆畫二值圖像作為特征,將這兩種特征通過不同的分類器進行識別,最后通過某種方法綜合兩者結果作為輸出。
1.2.2 系統魯棒性。考慮可能出現輸入異常,并采取相應的處理措施:
1.2.2.1 書寫連筆情況。當出現的連筆情況時,以筆畫二值圖作為輸入的分類器就會失效,因此,需要判斷出連筆情形,并屏蔽掉以筆畫二值圖作為輸入的分類器的輸出,僅保留整字二值圖的輸入。
1.2.2.2 筆跡點的丟失情況。加入預處理環節處理由于某些因素導致的筆跡點丟失,通過數學方法對筆跡進行插值,補充丟失的筆跡點。
1.2.2.3 飛筆、斷筆的處理。飛筆時,會出現與正常筆跡相距較遠的孤立筆跡點,可以忽略掉;斷筆時,會出現大量的筆跡點丟失,歸結到b的情況。
1.2.3 系統可擴展性。將整個系統分解為多個模塊,每個模塊高內聚,低耦合,便于優化、替換和擴展。
聯機手寫漢字筆跡識別系統由以下模塊組成:
①筆跡信息采集模塊;②筆跡信息預處理模塊;③筆跡特征提取模塊;④筆跡識別模塊。
各模塊之間相連接并傳遞不同的信息,如圖1所示:
圖1 模塊連接圖
筆跡信息采集模塊通過物理設備(如手寫筆、數碼板等)實時采集信息,主要采集以下數據:
筆跡坐標;
抬筆、落筆狀態;
筆跡坐標是筆跡信息采集模塊采集的最重要信息,為后續的各處理模塊提供了基礎數據;該坐標信息包括兩個坐標x和y,抬筆/落筆狀態由筆尖的壓力傳感器采集的壓力值計算獲得,通過該狀態信息可知當前筆畫是否書寫結束。注意若有連筆,則抬筆和落筆之間可能有多個筆畫。
筆跡信息的預處理包括以下過程:
①筆跡坐標的補全;②筆跡坐標的去噪;③筆跡坐標規整化;④筆畫分割;⑤筆畫邊緣的擬合。
筆跡坐標的補全的目的是使筆跡坐標均勻化,由于筆跡采集頻率和書寫速度不均勻,導致筆跡坐標的不連續和不均勻,某些地方會出現筆跡坐標的缺失,嚴重影響筆跡精度,因此,需要用插值的方法,補全缺失的筆跡坐標點,使筆跡坐標均勻化。
插值算法流程圖如圖2所示:
圖2 插值算法流程圖
出于穩定性考慮,系統不直接采用筆跡坐標作為筆跡信息識別模塊的輸入,這使得筆跡坐標的去噪并不是特別必要,但是對于某些飛筆點還是要消除的。因此采用了一個簡單的準則,只要某個筆跡坐標周圍20像素內無其他筆跡坐標,則去除該筆跡坐標。
筆跡坐標規整化的目的是將所有的漢字縮放到同等尺度便于統一處理。具體做法為首先計算出漢字筆跡坐標x軸和y軸的范圍,并通過平移和縮放使漢字筆跡x軸坐標范圍為[0,80],y軸坐標范圍為[0,80],以完成筆跡坐標規整化。此時漢字所有筆跡點坐標都在x軸坐標范圍為[0,80],y軸坐標范圍為[0,80]的一個正方形區域內,筆畫分割的目的是將漢字的完整的筆跡分割成各個筆畫,這里通過抬筆、落筆狀態實現分割,抬筆狀態為筆畫的開始,落筆狀態為筆畫的結束。注意,若有連筆現象,則用該方法分割出的筆畫數小于實際的漢字筆畫數。
筆畫邊緣的擬合的目的是得到筆畫的圖像,便于提取筆畫圖像的特征,提高筆跡識別的準確性,具體方法是先將各個預處理后的筆跡坐標點繪制在平面上,通過膨脹算法[1]和高斯模糊[2]將各點連成一個區域,最后找出區域的邊緣,并光滑化。注意到由于筆跡坐標已經實現了補全和去噪,不存在斷筆和飛筆現象,所以每個筆畫都會得到有且僅有一個閉合曲線邊緣。
漢字筆跡特征分為整字特征和筆畫特征。
整字特征即漢字的二值圖像,所有漢字的二值圖像大小均為80×80
筆畫特征為按書寫順序提取的各個筆畫的二值圖像數組,二值圖像大小均為80×80 ________________________________________________________________________________________________________________________
由于筆跡坐標不夠穩定,此時用填充筆畫邊緣閉合曲線內部區域的方法來獲取筆畫的二值圖,并通過疊加筆畫二值圖的方式來獲得整個漢字的二值圖。
筆跡信息識別模塊采用不同的方案處理整字特征和筆畫特征,并結合兩者的結果得出最終的識別結果。
筆跡信息識別模塊流程:處理簽字特征-是否有連筆情況-處理筆畫特征-簽字特征處理結果、筆畫特征處理結果結合作為輸出-結束(簽字特征處理結果作為輸出)。
下面對整字特征和筆畫特征的處理分別說明。
2.4.1 整字特征的處理。采用深度神經網絡GoogleNet[3]對整字特征進行識別,具有準確率高,速度塊的特點GoogleNet網絡的結構。
該網絡采用在不同層計算loss值和使用Inception結構的方法在增加網絡寬度和深度的情況下緩解了過擬合和梯度消失現象,適用于漢字識別這種大型分類問題。
該網絡輸入為漢字二值圖向量化后的生成的6400維向量,輸出為長度為6763維(漢字總數)的向量,輸出向量的每一個分量值均在0和1之間,表示輸入向量與某個漢字的接近程度,分量為1表示輸入向量被匹配為該分量表示的漢字,分量為0表示輸入向量未被匹配為該分量表示的漢字。
網絡的訓練過程是,采集400個人手寫的GB2312字符集中6763個漢字作為樣本集,共2705200個樣本,使用MiniBatch[4]的方式每次隨機抽取128個樣本共訓練1000000輪,最終生成的網絡可以有效地實現對漢字圖像的匹配。
2.4.2 筆畫特征的處理。在處理筆畫特征前,先要判定連筆情況。
預先定義一個漢字筆畫數據庫記錄每個漢字的筆畫數目,并與筆畫特征中的漢字實際筆畫數比較,若實際筆畫數小于筆畫數據庫中漢字筆畫數,則說明有連筆現象,此時不進行筆畫特征處理,直接用整字特征處理的匹配結果作為系統匹配結果。
筆畫特征的處理采用深度神經網絡GoogleNet對筆畫的特征進行識別,此時網絡的輸入為長度為24的筆畫二值圖像數組經過向量化后生成的153600維向量,輸出為長度為漢字總數6763維(漢字總數)的向量,輸出向量的每一個分量值均在0和1之間,表示輸入向量與某個漢字的接近程度,分量為1表示輸入向量被匹配為該分量表示的漢字,分量為0表示輸入向量未被匹配為該分量表示的漢字。
2.4.3 整字特征和筆畫特征方案的結合。當無連筆情況時,采取結合整字特征處理輸出向量和筆畫特征處理輸出向量的方式作為系統輸出。
對整字特征和筆畫特征的處理,均可以得到一個6763維的向量,采用加權平均的方法綜合兩者的結果,并找出值最大的分量對應的漢字作為系統的輸出,令整字特征結果向量為x,權重為,筆畫特征結果向量為y,權重為,則最終結果為,經過反復實驗,取時,系統識別漢字效果最好。