沈明軍,汪山虎,王朝暉,楊佳龍,陳杉杉
(江蘇大學,江蘇 鎮江 212013)
隨著我國電商和物流領域的迅猛發展,涌現了大量的電子物流票據,對于這些電子票據信息的識別和利用有著巨大的社會效益和經濟效益。實現電子物流票據的快速識別錄入,迅速獲取物流信息,不僅縮短信息采集時間,更有利于物流和電商企業及時響應市場需求,做出合理資源分配。
在電子物流票據的識別過程中,具體包含兩大應用技術,即字符分割和字符識別。字符分割的完整性很大程度決定了識別的正確性,所以字符分割技術至關重要。在字符分割領域,早期有提出基于投影的分割算法[1],利用文本區域行列之間的間隔,對字符進行切割,此算法對英文和數字等連通體文本的分割準確率較高,但在含有大量左右偏旁的中文字符集較難準確分割;有學者在投影分割的基礎上提出了統計分割算法[2],該算法通過聚類算法分析出正常字符寬度范圍,再結合高度、寬度和高寬比三種特征信息進行字符分割,但此算法識別非正常中文字符集所利用的特征信息過于簡單,容易錯誤識別導致分割失敗;有學者提出了基于連通域的字符分割算法[3],但并不適用具有文字密集性特點的電子物流票據,容易導致多行多字被分割。
基于以上的分析,面對電子物流票據中單字符分割時所利用特征單一的問題,我們在統計分割算法的基礎上,將聚類算法與深度學習相結合實現基于復雜特征的電子物流票據分割。利用深度模型學習到的文字特征替代了高度、寬度和高寬比三種簡單特征,例如文字的形態、結構等隱性特征;為了充分考慮偏旁的左右字符信息,通過左順序優先和右預判相結合的方法,提高了偏旁的組合準確率,進而有效提高了整體上單字符分割的準確度。在字符分割結束后,將中文字符送入VGG16深度網絡模中進行識別[4],識別準確率達到了99.9%。
二值化文字圖像后,對字符像素分別在x,y軸上投影,即對每一行或每一列像素進行累加,形成高低起伏的統計分布圖,根據峰谷依次進行水平分割、垂直分割,如圖1所示。投影法對行文本的切割準確而高效,而對行文本中每個中文字符的列分割,卻容易失敗,因為有中文字符含有左右偏旁,垂直投影后,很容易把偏旁單獨分割出來。如果在文本中再混合英文、標點和數字,由于英文、標點和數字存在與分割出的偏旁同一寬度的情況,對于分割錯誤的偏旁就很難進行正確的組合,所以投影分割算法適用于英文、數字和標點這種連通體字符的分割,而在中文字符分割上的表現效果不佳。

圖1 文字進行投影分割
基于統計學習的字符分割算法是在投影分割算法的基礎上進行改進的,在基礎投影分割后,收集分割字符的寬度數據,進行聚類分析,再結合長度、寬度和長寬比三種特征進行字符分割。
雖然統計分割在實際中的部分應用表現突出,甚至可以商用,比如在牌照、商品字符等方面[5],但是只有在結合具體的場景中才有效果。這主要原因是統計分割對投影分割的完善是有限的,一方面表現在對非整體字符中英文、標點和數字的識別具有很大的限制,因為在統計分割中采集到字符的數據特征只包含長、寬和長寬比三種特征,而非正常字符中的偏旁、數字、標點和英文在這三種特征上重合的可能性很大;另一方面是對偏旁組合考慮的情況考慮不夠全面,容易導致組合失敗。
隨著深度學習的崛起,卷積神經網絡(CNN)[6]在計算機視覺領域得到廣泛的應用,原因在于卷積對圖片特征的提取力得到了毋庸置疑的肯定。CNN是一類包含卷積計算且具有深度結構的神經網絡,常用于目標分類、目標檢測等研究領域,其主要由輸入層、卷積層、池化層、全連接層組成。
卷積層可以提取圖片的特征,隨著層數的加深,提取的特征信息會更加豐富;池化層是取卷積核區域的最大值或平均值來代替該區域從而達到增強魯棒性和減少計算量;全連接層連接所有的特征,將輸出值送給分類器(如softmax分類器)實現概率輸出。
本論述的工作是對電子物流票據字符進行精準分割與識別。為避免異常寬度字符(包括中文偏旁、英文字符、數字和標點)無法識別,在原始投影算法上結合異常寬度字符聚類算法,并運用基礎CNN網絡實現異常寬度字符的分類,再通過組合機制將多個偏旁拼接成整字。最后,將整字依次輸入到VGG16深度模型中識別。
K-Means聚類算法是一種迭代求解的聚類分析算法。在輸入數據中,隨機設置k個中心點,計算數據集中每一個點到中心點的距離(如歐式距離),根據距離迭代調整中心尋找最優解[7]。
本論述在投影分割后,通過K-Means算法對分割字符的寬度進行正常和異常聚類分析。設置中心簇k=2,目的是分出正常寬度字符和異常寬度字符。在正常字符的寬度數據集中找出正常字符的寬度范圍,用于以后中文偏旁的組合。正常寬度字符集包括完整的中文漢字,異常寬度字符集里包括中文偏旁、英文字符、數字和標點。
選用歐式距離作為目標函數,見式(1):

其中,xn表示數據對象,μk表示中心點,rnk在數據點n分配到類別k的時候為1,沒有分配到類別k的時候為0。
迭代優化過程中,先固定 μk,更新rnk,將每個數據對象放到與其最近的聚類中心的類別中;然后固定rnk,更新 μk,根據J對 μk的偏導等于零求得中心 μk的更新公式,見式(2):

這樣交替更新,直至目標函數收斂,分離出正常與異常字符。
采用CNN網絡模型對異常寬度字符集里的字符進行識別,此深度模型主要由2層卷積層,2層池化層和2層全連接層組成,具體結構如圖2所示。

圖2 異常寬度字符分類CNN
輸入數據為原始訓練圖像(圖像大小:28×28×3),因為數字、常用標點、英文共有有78種類別,所有模型輸出的神經元個數為78。模型的測試集效果達99.9995%,訓練集為100%。
根據卷積神經網絡識別出來的偏旁進行重新組合,采用左順序優先的策略,即從每一行文本的最左側開始檢測,檢測到第一個偏旁,開始分析其左右字符,具體情況見表1所列。

表1 偏旁組合情況
面對第一和第二種情況,我們從檢測到的偏旁和右鄰近的偏旁進行組合,對組合后的寬度進行計算,如果滿足在正常字符的寬度范圍之內就進行組合,如果低于正常字符的最小寬度值,則會繼續組合右邊的偏旁。
面對第三種情況,我們將所檢測到的偏旁和左右整字的寬度分別相加,如果只有一個組合寬度在正常字符范圍之內,就將偏旁和整字進行組合;如果兩個組合寬度都在正常字符寬度范圍之內,我們選擇寬度靠近K-Means聚類算法算出的聚簇中心的組合。如果兩個組合都超出正常字符范圍,則對偏旁寬度進行縮減之后再次進行組合分析。
面對第三種情況,我們對所檢測偏旁不做任何操作。
在單字符分割后,采用VGG16網絡模型實現字符識別。模型訓練的數據集借助強大的圖形庫自動生成,含有3755個常用中文字符,并對每一個字符進行了六種增強,分別為:文字扭曲、背景噪聲、文字位置、筆畫粘連、筆畫斷裂和文字傾斜。
VGG16深度模型具有結構簡單,提取特征能力強的優勢。雖然之后出現了更加優秀的網絡,如ResNet[8]和 DenseNet[9]等,但考慮到 VGG16 模型分類能力已經足夠滿足我們的分類需求,而其他更優秀網絡一般具有訓練難度大和線上部署時的預測速度慢等問題,所以我們最終還是采用了VGG16網絡作為文字圖片的識別網絡。網絡主要結構如圖3所示。

圖3 VGG16識別網絡結構圖
卷積層用來理解圖片的重要的空間信息,比如空間上鄰近的像素為相似的值、RGB的各個通道之間的關聯性、相距較遠的像素之間的關聯等。池化層主要是用來增強對微小位置變化的魯棒性和保留主要特征的同時減少參數和計算量,防止過擬合,提高模型泛化能力。
全連接層起到將學到的“分布式特征表示”映射到樣本標記空間的作用。同時在三個全連接層中增加了兩次dropout層,來防止過擬合。3個全連接層在整個卷積神經網絡中起到的是對文字圖片進行分類的作用。
在全連接層最后一層有3755個神經元,是因為我們要對3755個常用中文字符進行的分類。而英文、標點和數字的識別在分割時就已經被識別出來,所以不參加這里的分類。
本實驗采用運行平臺CPU為Intel Core i7-8700k,顯卡為GeForce GTX1080,系統為64位Ubuntu 16.04,在Tensorflow+GUDA9.2下進行實驗。
3.2.1 數據集
本論述聚類算法和深度識別模型分析的數據集來自電子物流票據中分割出來的文本圖片,我們在對文本圖像二值化后進行了投影分割,分割效果如圖4所示。

圖4 投影分割流程圖
分割結束后由垂直投影計算得到分割字符的寬度數據集,而深度識別模型的數據集我們自制的數據集,將電子物流票據中的各類英文、數字和標點和偏旁用投影法分割出來,共有78種。將78種圖片二值化,字符為白,背景為黑,對圖像進行各種類型的膨脹,多樣化數據。圖片的size設置為(3,28,28),三通道上的值同為二值化后的圖像值,即將二值化的圖像復制三份,之后再對圖片進行縮放、旋轉(仿射變換),然后增加隨機噪聲。將數據保存為npy格式,共10 000組,每個數字滿足“粗細、旋轉角度、縮放比例、噪聲分布”的多樣化。
3.2.2 參數設計及實驗結果
對分割字符寬度數據集進行聚類分析,在K-Means算法中,我們設聚簇中心k=2,將分割出的字符集分為兩類,一為整字寬度集,二為非整字寬度集,具體效果如圖5所示。

圖5 聚類分析結果圖
由上圖顯示,在我們所做的數據中,整字寬度集和非整字寬度集的分類比較明顯,他們聚簇中心點分別為24.3和8.6,計算方差為162.676,所以對整字和非整字的區分比較容易,對整字集的寬度也很容易從聚類圖中得到。
之后使用深度網絡模型對非整字集進行識別,我們使用了由兩層卷積和兩次全連接層構成的網絡進行了訓練。網絡的初始權值設計為標準差為0.1的正態分布,損失函數選擇了softmax_cross_entropy,優化器選擇了Adam,學習率設為0.001,表2展示了從200次迭代到450次迭代的測試集精度和訓練集精度,在450次迭代以后準確率分別達到了99.95%和100%。

表2 CNN訓練、測試準確度分析
在將非整字集識別完后,就是對非整字集的偏旁進行組合,部分組合效果如圖6所示。

圖6 偏旁組合效果圖
3.3.1 數據集
電子物流票據的文字屬于印刷體,我們可以借助強大的圖形庫自動生成數據集。本論述的中文數據集含有3 755個常用中文字符,對每一個字符進行了六種增強,分別為:文字扭曲、背景噪聲、文字位置、筆畫粘連、筆畫斷裂和文字傾斜。具體效果如圖7所示。

圖7 中文字符數據集
3.3.2 參數設計及實驗結果
在制作完數據集以后,我們將數據送進了VGG16網絡,網絡的損失函數選擇交叉熵損失函數,優化器選擇了Adam,學習率設為0.1,最大迭代步數為16 000,每100步進行一次驗證,每500步存儲一次模型。
在訓練過程中訓練集和測試集的Accuracy變化如圖8所示。

圖8 VGG16準確率與損失值變化情況
實際字符識別效果如圖9所示。

圖9 字符識別效果圖
數據定位結構化識別結果如圖10所示。

圖10 結構化識別結果
本論述提出了一種將傳統機器學習算法中的KMeans聚類算法和深度學習分類算法相結合的方法,解決了傳統方法對含有中文字符的電子物流票據圖像難分割的問題。首先,我們使用了聚類算法分析出正常字符的寬度大小,進而使用深度網絡識別出英文字符、數字、標點和偏旁,再通過左順序優先、右預判和正常字符寬度范圍等信息對偏旁進行了較為準確的組合,有效提高了整體字符分割的準確率。在這之后,我們將分割好的圖片送進VGG16網絡模型進行了識別,訓練集和驗證集的accuracy都達到了99.9%,且在實際測試中,針對左右偏旁結合的中文字符識別的效果較好。
本論述只針對電子物流票據這一特定場景進行深入研究,字符識別在其他復雜場景中的應用同樣值得更進一步的探索。如果將本論述的直接分割策略和已經商用的置信度反饋機制相結合,可能會適用于更多場景的字符識別。[10]