沈明軍,汪山虎,王朝暉,楊佳龍,陳杉杉
(江蘇大學(xué),江蘇 鎮(zhèn)江 212013)
隨著我國(guó)電商和物流領(lǐng)域的迅猛發(fā)展,涌現(xiàn)了大量的電子物流票據(jù),對(duì)于這些電子票據(jù)信息的識(shí)別和利用有著巨大的社會(huì)效益和經(jīng)濟(jì)效益。實(shí)現(xiàn)電子物流票據(jù)的快速識(shí)別錄入,迅速獲取物流信息,不僅縮短信息采集時(shí)間,更有利于物流和電商企業(yè)及時(shí)響應(yīng)市場(chǎng)需求,做出合理資源分配。
在電子物流票據(jù)的識(shí)別過(guò)程中,具體包含兩大應(yīng)用技術(shù),即字符分割和字符識(shí)別。字符分割的完整性很大程度決定了識(shí)別的正確性,所以字符分割技術(shù)至關(guān)重要。在字符分割領(lǐng)域,早期有提出基于投影的分割算法[1],利用文本區(qū)域行列之間的間隔,對(duì)字符進(jìn)行切割,此算法對(duì)英文和數(shù)字等連通體文本的分割準(zhǔn)確率較高,但在含有大量左右偏旁的中文字符集較難準(zhǔn)確分割;有學(xué)者在投影分割的基礎(chǔ)上提出了統(tǒng)計(jì)分割算法[2],該算法通過(guò)聚類算法分析出正常字符寬度范圍,再結(jié)合高度、寬度和高寬比三種特征信息進(jìn)行字符分割,但此算法識(shí)別非正常中文字符集所利用的特征信息過(guò)于簡(jiǎn)單,容易錯(cuò)誤識(shí)別導(dǎo)致分割失??;有學(xué)者提出了基于連通域的字符分割算法[3],但并不適用具有文字密集性特點(diǎn)的電子物流票據(jù),容易導(dǎo)致多行多字被分割。
基于以上的分析,面對(duì)電子物流票據(jù)中單字符分割時(shí)所利用特征單一的問(wèn)題,我們?cè)诮y(tǒng)計(jì)分割算法的基礎(chǔ)上,將聚類算法與深度學(xué)習(xí)相結(jié)合實(shí)現(xiàn)基于復(fù)雜特征的電子物流票據(jù)分割。利用深度模型學(xué)習(xí)到的文字特征替代了高度、寬度和高寬比三種簡(jiǎn)單特征,例如文字的形態(tài)、結(jié)構(gòu)等隱性特征;為了充分考慮偏旁的左右字符信息,通過(guò)左順序優(yōu)先和右預(yù)判相結(jié)合的方法,提高了偏旁的組合準(zhǔn)確率,進(jìn)而有效提高了整體上單字符分割的準(zhǔn)確度。在字符分割結(jié)束后,將中文字符送入VGG16深度網(wǎng)絡(luò)模中進(jìn)行識(shí)別[4],識(shí)別準(zhǔn)確率達(dá)到了99.9%。
二值化文字圖像后,對(duì)字符像素分別在x,y軸上投影,即對(duì)每一行或每一列像素進(jìn)行累加,形成高低起伏的統(tǒng)計(jì)分布圖,根據(jù)峰谷依次進(jìn)行水平分割、垂直分割,如圖1所示。投影法對(duì)行文本的切割準(zhǔn)確而高效,而對(duì)行文本中每個(gè)中文字符的列分割,卻容易失敗,因?yàn)橛兄形淖址凶笥移?,垂直投影后,很容易把偏旁單?dú)分割出來(lái)。如果在文本中再混合英文、標(biāo)點(diǎn)和數(shù)字,由于英文、標(biāo)點(diǎn)和數(shù)字存在與分割出的偏旁同一寬度的情況,對(duì)于分割錯(cuò)誤的偏旁就很難進(jìn)行正確的組合,所以投影分割算法適用于英文、數(shù)字和標(biāo)點(diǎn)這種連通體字符的分割,而在中文字符分割上的表現(xiàn)效果不佳。
圖1 文字進(jìn)行投影分割
基于統(tǒng)計(jì)學(xué)習(xí)的字符分割算法是在投影分割算法的基礎(chǔ)上進(jìn)行改進(jìn)的,在基礎(chǔ)投影分割后,收集分割字符的寬度數(shù)據(jù),進(jìn)行聚類分析,再結(jié)合長(zhǎng)度、寬度和長(zhǎng)寬比三種特征進(jìn)行字符分割。
雖然統(tǒng)計(jì)分割在實(shí)際中的部分應(yīng)用表現(xiàn)突出,甚至可以商用,比如在牌照、商品字符等方面[5],但是只有在結(jié)合具體的場(chǎng)景中才有效果。這主要原因是統(tǒng)計(jì)分割對(duì)投影分割的完善是有限的,一方面表現(xiàn)在對(duì)非整體字符中英文、標(biāo)點(diǎn)和數(shù)字的識(shí)別具有很大的限制,因?yàn)樵诮y(tǒng)計(jì)分割中采集到字符的數(shù)據(jù)特征只包含長(zhǎng)、寬和長(zhǎng)寬比三種特征,而非正常字符中的偏旁、數(shù)字、標(biāo)點(diǎn)和英文在這三種特征上重合的可能性很大;另一方面是對(duì)偏旁組合考慮的情況考慮不夠全面,容易導(dǎo)致組合失敗。
隨著深度學(xué)習(xí)的崛起,卷積神經(jīng)網(wǎng)絡(luò)(CNN)[6]在計(jì)算機(jī)視覺領(lǐng)域得到廣泛的應(yīng)用,原因在于卷積對(duì)圖片特征的提取力得到了毋庸置疑的肯定。CNN是一類包含卷積計(jì)算且具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),常用于目標(biāo)分類、目標(biāo)檢測(cè)等研究領(lǐng)域,其主要由輸入層、卷積層、池化層、全連接層組成。
卷積層可以提取圖片的特征,隨著層數(shù)的加深,提取的特征信息會(huì)更加豐富;池化層是取卷積核區(qū)域的最大值或平均值來(lái)代替該區(qū)域從而達(dá)到增強(qiáng)魯棒性和減少計(jì)算量;全連接層連接所有的特征,將輸出值送給分類器(如softmax分類器)實(shí)現(xiàn)概率輸出。
本論述的工作是對(duì)電子物流票據(jù)字符進(jìn)行精準(zhǔn)分割與識(shí)別。為避免異常寬度字符(包括中文偏旁、英文字符、數(shù)字和標(biāo)點(diǎn))無(wú)法識(shí)別,在原始投影算法上結(jié)合異常寬度字符聚類算法,并運(yùn)用基礎(chǔ)CNN網(wǎng)絡(luò)實(shí)現(xiàn)異常寬度字符的分類,再通過(guò)組合機(jī)制將多個(gè)偏旁拼接成整字。最后,將整字依次輸入到VGG16深度模型中識(shí)別。
K-Means聚類算法是一種迭代求解的聚類分析算法。在輸入數(shù)據(jù)中,隨機(jī)設(shè)置k個(gè)中心點(diǎn),計(jì)算數(shù)據(jù)集中每一個(gè)點(diǎn)到中心點(diǎn)的距離(如歐式距離),根據(jù)距離迭代調(diào)整中心尋找最優(yōu)解[7]。
本論述在投影分割后,通過(guò)K-Means算法對(duì)分割字符的寬度進(jìn)行正常和異常聚類分析。設(shè)置中心簇k=2,目的是分出正常寬度字符和異常寬度字符。在正常字符的寬度數(shù)據(jù)集中找出正常字符的寬度范圍,用于以后中文偏旁的組合。正常寬度字符集包括完整的中文漢字,異常寬度字符集里包括中文偏旁、英文字符、數(shù)字和標(biāo)點(diǎn)。
選用歐式距離作為目標(biāo)函數(shù),見式(1):
其中,xn表示數(shù)據(jù)對(duì)象,μk表示中心點(diǎn),rnk在數(shù)據(jù)點(diǎn)n分配到類別k的時(shí)候?yàn)?,沒有分配到類別k的時(shí)候?yàn)?。
迭代優(yōu)化過(guò)程中,先固定 μk,更新rnk,將每個(gè)數(shù)據(jù)對(duì)象放到與其最近的聚類中心的類別中;然后固定rnk,更新 μk,根據(jù)J對(duì) μk的偏導(dǎo)等于零求得中心 μk的更新公式,見式(2):
這樣交替更新,直至目標(biāo)函數(shù)收斂,分離出正常與異常字符。
采用CNN網(wǎng)絡(luò)模型對(duì)異常寬度字符集里的字符進(jìn)行識(shí)別,此深度模型主要由2層卷積層,2層池化層和2層全連接層組成,具體結(jié)構(gòu)如圖2所示。
圖2 異常寬度字符分類CNN
輸入數(shù)據(jù)為原始訓(xùn)練圖像(圖像大?。?8×28×3),因?yàn)閿?shù)字、常用標(biāo)點(diǎn)、英文共有有78種類別,所有模型輸出的神經(jīng)元個(gè)數(shù)為78。模型的測(cè)試集效果達(dá)99.9995%,訓(xùn)練集為100%。
根據(jù)卷積神經(jīng)網(wǎng)絡(luò)識(shí)別出來(lái)的偏旁進(jìn)行重新組合,采用左順序優(yōu)先的策略,即從每一行文本的最左側(cè)開始檢測(cè),檢測(cè)到第一個(gè)偏旁,開始分析其左右字符,具體情況見表1所列。
表1 偏旁組合情況
面對(duì)第一和第二種情況,我們從檢測(cè)到的偏旁和右鄰近的偏旁進(jìn)行組合,對(duì)組合后的寬度進(jìn)行計(jì)算,如果滿足在正常字符的寬度范圍之內(nèi)就進(jìn)行組合,如果低于正常字符的最小寬度值,則會(huì)繼續(xù)組合右邊的偏旁。
面對(duì)第三種情況,我們將所檢測(cè)到的偏旁和左右整字的寬度分別相加,如果只有一個(gè)組合寬度在正常字符范圍之內(nèi),就將偏旁和整字進(jìn)行組合;如果兩個(gè)組合寬度都在正常字符寬度范圍之內(nèi),我們選擇寬度靠近K-Means聚類算法算出的聚簇中心的組合。如果兩個(gè)組合都超出正常字符范圍,則對(duì)偏旁寬度進(jìn)行縮減之后再次進(jìn)行組合分析。
面對(duì)第三種情況,我們對(duì)所檢測(cè)偏旁不做任何操作。
在單字符分割后,采用VGG16網(wǎng)絡(luò)模型實(shí)現(xiàn)字符識(shí)別。模型訓(xùn)練的數(shù)據(jù)集借助強(qiáng)大的圖形庫(kù)自動(dòng)生成,含有3755個(gè)常用中文字符,并對(duì)每一個(gè)字符進(jìn)行了六種增強(qiáng),分別為:文字扭曲、背景噪聲、文字位置、筆畫粘連、筆畫斷裂和文字傾斜。
VGG16深度模型具有結(jié)構(gòu)簡(jiǎn)單,提取特征能力強(qiáng)的優(yōu)勢(shì)。雖然之后出現(xiàn)了更加優(yōu)秀的網(wǎng)絡(luò),如ResNet[8]和 DenseNet[9]等,但考慮到 VGG16 模型分類能力已經(jīng)足夠滿足我們的分類需求,而其他更優(yōu)秀網(wǎng)絡(luò)一般具有訓(xùn)練難度大和線上部署時(shí)的預(yù)測(cè)速度慢等問(wèn)題,所以我們最終還是采用了VGG16網(wǎng)絡(luò)作為文字圖片的識(shí)別網(wǎng)絡(luò)。網(wǎng)絡(luò)主要結(jié)構(gòu)如圖3所示。
圖3 VGG16識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層用來(lái)理解圖片的重要的空間信息,比如空間上鄰近的像素為相似的值、RGB的各個(gè)通道之間的關(guān)聯(lián)性、相距較遠(yuǎn)的像素之間的關(guān)聯(lián)等。池化層主要是用來(lái)增強(qiáng)對(duì)微小位置變化的魯棒性和保留主要特征的同時(shí)減少參數(shù)和計(jì)算量,防止過(guò)擬合,提高模型泛化能力。
全連接層起到將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間的作用。同時(shí)在三個(gè)全連接層中增加了兩次dropout層,來(lái)防止過(guò)擬合。3個(gè)全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到的是對(duì)文字圖片進(jìn)行分類的作用。
在全連接層最后一層有3755個(gè)神經(jīng)元,是因?yàn)槲覀円獙?duì)3755個(gè)常用中文字符進(jìn)行的分類。而英文、標(biāo)點(diǎn)和數(shù)字的識(shí)別在分割時(shí)就已經(jīng)被識(shí)別出來(lái),所以不參加這里的分類。
本實(shí)驗(yàn)采用運(yùn)行平臺(tái)CPU為Intel Core i7-8700k,顯卡為GeForce GTX1080,系統(tǒng)為64位Ubuntu 16.04,在Tensorflow+GUDA9.2下進(jìn)行實(shí)驗(yàn)。
3.2.1 數(shù)據(jù)集
本論述聚類算法和深度識(shí)別模型分析的數(shù)據(jù)集來(lái)自電子物流票據(jù)中分割出來(lái)的文本圖片,我們?cè)趯?duì)文本圖像二值化后進(jìn)行了投影分割,分割效果如圖4所示。
圖4 投影分割流程圖
分割結(jié)束后由垂直投影計(jì)算得到分割字符的寬度數(shù)據(jù)集,而深度識(shí)別模型的數(shù)據(jù)集我們自制的數(shù)據(jù)集,將電子物流票據(jù)中的各類英文、數(shù)字和標(biāo)點(diǎn)和偏旁用投影法分割出來(lái),共有78種。將78種圖片二值化,字符為白,背景為黑,對(duì)圖像進(jìn)行各種類型的膨脹,多樣化數(shù)據(jù)。圖片的size設(shè)置為(3,28,28),三通道上的值同為二值化后的圖像值,即將二值化的圖像復(fù)制三份,之后再對(duì)圖片進(jìn)行縮放、旋轉(zhuǎn)(仿射變換),然后增加隨機(jī)噪聲。將數(shù)據(jù)保存為npy格式,共10 000組,每個(gè)數(shù)字滿足“粗細(xì)、旋轉(zhuǎn)角度、縮放比例、噪聲分布”的多樣化。
3.2.2 參數(shù)設(shè)計(jì)及實(shí)驗(yàn)結(jié)果
對(duì)分割字符寬度數(shù)據(jù)集進(jìn)行聚類分析,在K-Means算法中,我們?cè)O(shè)聚簇中心k=2,將分割出的字符集分為兩類,一為整字寬度集,二為非整字寬度集,具體效果如圖5所示。
圖5 聚類分析結(jié)果圖
由上圖顯示,在我們所做的數(shù)據(jù)中,整字寬度集和非整字寬度集的分類比較明顯,他們聚簇中心點(diǎn)分別為24.3和8.6,計(jì)算方差為162.676,所以對(duì)整字和非整字的區(qū)分比較容易,對(duì)整字集的寬度也很容易從聚類圖中得到。
之后使用深度網(wǎng)絡(luò)模型對(duì)非整字集進(jìn)行識(shí)別,我們使用了由兩層卷積和兩次全連接層構(gòu)成的網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。網(wǎng)絡(luò)的初始權(quán)值設(shè)計(jì)為標(biāo)準(zhǔn)差為0.1的正態(tài)分布,損失函數(shù)選擇了softmax_cross_entropy,優(yōu)化器選擇了Adam,學(xué)習(xí)率設(shè)為0.001,表2展示了從200次迭代到450次迭代的測(cè)試集精度和訓(xùn)練集精度,在450次迭代以后準(zhǔn)確率分別達(dá)到了99.95%和100%。
表2 CNN訓(xùn)練、測(cè)試準(zhǔn)確度分析
在將非整字集識(shí)別完后,就是對(duì)非整字集的偏旁進(jìn)行組合,部分組合效果如圖6所示。
圖6 偏旁組合效果圖
3.3.1 數(shù)據(jù)集
電子物流票據(jù)的文字屬于印刷體,我們可以借助強(qiáng)大的圖形庫(kù)自動(dòng)生成數(shù)據(jù)集。本論述的中文數(shù)據(jù)集含有3 755個(gè)常用中文字符,對(duì)每一個(gè)字符進(jìn)行了六種增強(qiáng),分別為:文字扭曲、背景噪聲、文字位置、筆畫粘連、筆畫斷裂和文字傾斜。具體效果如圖7所示。
圖7 中文字符數(shù)據(jù)集
3.3.2 參數(shù)設(shè)計(jì)及實(shí)驗(yàn)結(jié)果
在制作完數(shù)據(jù)集以后,我們將數(shù)據(jù)送進(jìn)了VGG16網(wǎng)絡(luò),網(wǎng)絡(luò)的損失函數(shù)選擇交叉熵?fù)p失函數(shù),優(yōu)化器選擇了Adam,學(xué)習(xí)率設(shè)為0.1,最大迭代步數(shù)為16 000,每100步進(jìn)行一次驗(yàn)證,每500步存儲(chǔ)一次模型。
在訓(xùn)練過(guò)程中訓(xùn)練集和測(cè)試集的Accuracy變化如圖8所示。
圖8 VGG16準(zhǔn)確率與損失值變化情況
實(shí)際字符識(shí)別效果如圖9所示。
圖9 字符識(shí)別效果圖
數(shù)據(jù)定位結(jié)構(gòu)化識(shí)別結(jié)果如圖10所示。
圖10 結(jié)構(gòu)化識(shí)別結(jié)果
本論述提出了一種將傳統(tǒng)機(jī)器學(xué)習(xí)算法中的KMeans聚類算法和深度學(xué)習(xí)分類算法相結(jié)合的方法,解決了傳統(tǒng)方法對(duì)含有中文字符的電子物流票據(jù)圖像難分割的問(wèn)題。首先,我們使用了聚類算法分析出正常字符的寬度大小,進(jìn)而使用深度網(wǎng)絡(luò)識(shí)別出英文字符、數(shù)字、標(biāo)點(diǎn)和偏旁,再通過(guò)左順序優(yōu)先、右預(yù)判和正常字符寬度范圍等信息對(duì)偏旁進(jìn)行了較為準(zhǔn)確的組合,有效提高了整體字符分割的準(zhǔn)確率。在這之后,我們將分割好的圖片送進(jìn)VGG16網(wǎng)絡(luò)模型進(jìn)行了識(shí)別,訓(xùn)練集和驗(yàn)證集的accuracy都達(dá)到了99.9%,且在實(shí)際測(cè)試中,針對(duì)左右偏旁結(jié)合的中文字符識(shí)別的效果較好。
本論述只針對(duì)電子物流票據(jù)這一特定場(chǎng)景進(jìn)行深入研究,字符識(shí)別在其他復(fù)雜場(chǎng)景中的應(yīng)用同樣值得更進(jìn)一步的探索。如果將本論述的直接分割策略和已經(jīng)商用的置信度反饋機(jī)制相結(jié)合,可能會(huì)適用于更多場(chǎng)景的字符識(shí)別。[10]