国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于CNN 與有限狀態(tài)自動(dòng)機(jī)的手寫體大寫金額識(shí)別

2021-09-15 07:36:50孫永奇朱衛(wèi)國(guó)李宇霞
計(jì)算機(jī)工程 2021年9期
關(guān)鍵詞:自動(dòng)機(jī)字符串大寫

閆 茹,孫永奇,朱衛(wèi)國(guó),李宇霞

(北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044)

0 概述

票據(jù)是銀行、單位和個(gè)人辦理支付結(jié)算和現(xiàn)金收付業(yè)務(wù)的重要依據(jù),是記載經(jīng)濟(jì)業(yè)務(wù)和明確經(jīng)濟(jì)責(zé)任的一種書面證明。票據(jù)數(shù)量繁多且非常重要,操作人員稍有不慎便可能造成很大的經(jīng)濟(jì)損失,因此,利用光學(xué)字符識(shí)別(Optical Character Recognition,OCR)技術(shù)對(duì)票據(jù)進(jìn)行自動(dòng)識(shí)別具有重要意義。作為票據(jù)中最重要的部分,金額的識(shí)別尤為關(guān)鍵,不能出任何差錯(cuò)。目前,手寫票據(jù)中大寫金額部分的識(shí)別準(zhǔn)確率達(dá)不到令人滿意的效果,原因有兩點(diǎn):一是用戶在書寫時(shí)風(fēng)格多樣,字符內(nèi)部、字符之間的空隙大小不均,字與字之間可能粘連嚴(yán)重;二是手寫票據(jù)有一大部分是復(fù)寫數(shù)據(jù),存在字跡不清楚、筆畫缺失且噪聲難以完全去除的問題。此外,漢字文本行的識(shí)別涉及整條文本行圖像的去噪、準(zhǔn)確切分、單字識(shí)別以及路徑最優(yōu)化選擇等多項(xiàng)復(fù)雜任務(wù),每一部分都會(huì)影響最后的識(shí)別結(jié)果。因此,對(duì)手寫票據(jù)中的大寫金額進(jìn)行準(zhǔn)確識(shí)別是一個(gè)亟待解決的問題。

為提高大寫金額的識(shí)別準(zhǔn)確率,需要對(duì)初步的識(shí)別結(jié)果做進(jìn)一步的檢查調(diào)整。由于票據(jù)中大寫金額的填寫具有嚴(yán)格的語(yǔ)法要求,因此很適合使用有限狀態(tài)自動(dòng)機(jī)對(duì)識(shí)別結(jié)果進(jìn)行檢驗(yàn),而且大寫金額字符數(shù)量少、內(nèi)容明確,適用于構(gòu)造有限狀態(tài)自動(dòng)機(jī)。此外,使用有限狀態(tài)自動(dòng)機(jī)可以理清字符間的語(yǔ)法邏輯,快速而準(zhǔn)確地拒絕有語(yǔ)法錯(cuò)誤的字符串并定位到錯(cuò)誤的字符位置。

本文建立一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和有限狀態(tài)自動(dòng)機(jī)的手寫體大寫金額識(shí)別模型。在利用卷積神經(jīng)網(wǎng)絡(luò)對(duì)單個(gè)字符進(jìn)行識(shí)別后,使用有限狀態(tài)自動(dòng)機(jī)檢查大寫金額的語(yǔ)法,在票據(jù)識(shí)別結(jié)果的多條路徑中選擇更加準(zhǔn)確且符合語(yǔ)法規(guī)則的字符串。在路徑搜索過程中,結(jié)合語(yǔ)法自動(dòng)機(jī)的前綴判斷功能優(yōu)化搜索性能,對(duì)不必要的搜索路徑進(jìn)行剪枝以提高搜索的速度和精度。同時(shí),利用語(yǔ)法自動(dòng)機(jī)對(duì)模型識(shí)別不出的模糊字符進(jìn)行預(yù)測(cè)以提高識(shí)別準(zhǔn)確率。

1 相關(guān)研究

1.1 手寫體大寫金額識(shí)別

近年來,有很多學(xué)者致力于中文票據(jù)識(shí)別研究[1-2],包括票據(jù)中手寫小寫金額識(shí)別[3]以及大寫金額處理和識(shí)別[4]。文獻(xiàn)[5]提出一種偏旁識(shí)別器,使用字符寬度模型來確定分割線的預(yù)測(cè)位置。文獻(xiàn)[6]提出一種基于隱馬爾可夫模型的中國(guó)法定金額識(shí)別方法,在訓(xùn)練階段,從滑動(dòng)窗口中提取梯度特征,用單字符圖像訓(xùn)練字符HMM;在識(shí)別階段,利用句子HMM 對(duì)文本行圖像進(jìn)行分割,句子HMM 由字符HMM 根據(jù)嚴(yán)格的語(yǔ)言模型構(gòu)造。文獻(xiàn)[7]使用筆畫序列信息和中文字符的八方向特征進(jìn)行在線手寫漢字識(shí)別。文獻(xiàn)[8]將文字表示為幾何圖形,同時(shí)保留空間結(jié)構(gòu)和時(shí)間順序,使用空間圖卷積網(wǎng)絡(luò)對(duì)字符圖進(jìn)行分類。文獻(xiàn)[9]使用深度學(xué)習(xí)自動(dòng)編碼器提取孤立大寫金額漢字字符的特征,以提高字符識(shí)別準(zhǔn)確率。文獻(xiàn)[10]提出一種大寫金額語(yǔ)法檢查器,通過列舉不符合正確語(yǔ)法的靜態(tài)規(guī)則并結(jié)合動(dòng)態(tài)判斷來拒絕錯(cuò)誤的識(shí)別結(jié)果。

盡管上述對(duì)手寫體大寫金額識(shí)別的研究取得了很大的進(jìn)展,但識(shí)別準(zhǔn)確率仍然有待提高。傳統(tǒng)的基于過分割、組合、識(shí)別、路徑選擇和校驗(yàn)的識(shí)別方法已經(jīng)被證實(shí)可以很好地應(yīng)用于手寫字符串識(shí)別任務(wù)[11-13]。近期,有學(xué)者提出不需要分割字符的端到端的序列識(shí)別方法[14-15],這些方法對(duì)于規(guī)范的印刷體文本具有較好的性能,但是對(duì)于復(fù)雜背景下的手寫字符串識(shí)別還未能達(dá)到很好的效果。

本文采用基于分割的框架對(duì)手寫票據(jù)中的大寫金額進(jìn)行識(shí)別。利用過分割和組合過分割項(xiàng)來得到單字符,使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)單字符進(jìn)行識(shí)別,在此基礎(chǔ)上,構(gòu)建語(yǔ)法自動(dòng)機(jī)用于在路徑搜索中選擇符合語(yǔ)法規(guī)則的識(shí)別結(jié)果,并在后續(xù)處理中對(duì)模糊字符進(jìn)行預(yù)測(cè)。

1.2 有限狀態(tài)自動(dòng)機(jī)

美國(guó)語(yǔ)言學(xué)家喬姆斯基等人建立了形式文法和自動(dòng)機(jī)之間的聯(lián)系[16],使得自動(dòng)機(jī)可以有效地表達(dá)各種語(yǔ)法規(guī)則。由于確定性的自動(dòng)機(jī)在算法執(zhí)行速度上與輸入字符串的長(zhǎng)度呈線性關(guān)系,且空間復(fù)雜度較低,所以被廣泛應(yīng)用于自然語(yǔ)言處理領(lǐng)域中的語(yǔ)法規(guī)則建模任務(wù)[17-18]。文獻(xiàn)[19]使用有限狀態(tài)自動(dòng)機(jī)將單詞切分為音節(jié),根據(jù)音節(jié)將文本轉(zhuǎn)換為聲音。有限狀態(tài)自動(dòng)機(jī)是具有離散輸入、輸出系統(tǒng)的一種數(shù)學(xué)模型,它定義了有限個(gè)內(nèi)部狀態(tài)和狀態(tài)之間的轉(zhuǎn)移函數(shù)。自動(dòng)機(jī)按序接收輸入信號(hào),該信號(hào)在內(nèi)部狀態(tài)之間發(fā)生轉(zhuǎn)移,不符合自動(dòng)機(jī)轉(zhuǎn)移條件的輸入將被拒絕,符合規(guī)則的輸入最終會(huì)轉(zhuǎn)移至輸出狀態(tài),表明該輸入通過了檢驗(yàn)。在實(shí)際應(yīng)用中,自動(dòng)機(jī)的狀態(tài)可能數(shù)以萬(wàn)計(jì),而且自動(dòng)機(jī)的規(guī)模也是逐漸變大的,因此,會(huì)存在多余的狀態(tài)或多余的轉(zhuǎn)換弧,這些多余的狀態(tài)和轉(zhuǎn)換弧不僅降低了計(jì)算速度,而且浪費(fèi)了存儲(chǔ)空間,需要對(duì)有限狀態(tài)自動(dòng)機(jī)進(jìn)行最小化,使其沒有多余的狀態(tài),并且不存在2 個(gè)狀態(tài)相互等價(jià)的情況[20]。

2 票據(jù)識(shí)別

票據(jù)中手寫體大寫金額的識(shí)別主要包括:1)票據(jù)預(yù)處理及文本定位;2)字符圖像過分割、組合過分割項(xiàng)并識(shí)別;3)路徑搜索和校驗(yàn)。

2.1 票據(jù)預(yù)處理及文本定位

手寫票據(jù)圖像是通過掃描儀獲得的RGB 三通道圖像。為了方便對(duì)圖像進(jìn)行處理并降低計(jì)算量,需要對(duì)圖像進(jìn)行灰度化處理。票據(jù)的尺寸、文本布局和掃描方式不一致,會(huì)造成大寫金額在票據(jù)中的位置有所差異。因此,本文首先使用能在復(fù)雜背景下對(duì)水平文本進(jìn)行檢測(cè)的CTPN 算法[21],對(duì)大寫金額進(jìn)行定位。在文本定位之后,通過如下步驟作去噪處理:

1)使用Mask 勻光法[22]結(jié)合紅色(R)通道去除方法來去除圖像中的紅線,再將其轉(zhuǎn)成灰度圖像。

2)使用自適應(yīng)閾值方法(OTSU)獲得閾值,將大于該閾值的像素灰度值設(shè)置為255,其余像素灰度值保持不變。

3)采用聯(lián)通區(qū)分析方法對(duì)上下位置的小聯(lián)通區(qū)進(jìn)行去噪處理。

大寫金額定位后預(yù)處理前后的圖像如圖1 所示。

圖1 票據(jù)預(yù)處理效果Fig.1 Effect of bank check preprocessing

2.2 過分割與組合過分割

手寫漢字書寫隨意、風(fēng)格多樣,文本行字符之間粘連嚴(yán)重,如圖2 所示。因此,需要先采用過分割的方式進(jìn)行文本行切分,過分割算法將文本行圖像盡可能分開,分割得到的每一個(gè)圖像可能是單個(gè)字符或者字符的一部分,這些圖像被稱為過分割項(xiàng)。

圖2 粘連文本行Fig.2 Sticky text lines

本文采用的分割算法主要分為以下3 個(gè)步驟:

1)通過聯(lián)通區(qū)分析將文本圖像按照筆畫或者部件進(jìn)行分割。

2)根據(jù)聯(lián)通區(qū)域的重疊度進(jìn)行初合并,調(diào)整合并結(jié)果,去除重復(fù)區(qū)域[23]。

3)檢測(cè)粘連筆畫并對(duì)粘連項(xiàng)進(jìn)行分割,通過計(jì)算過分割項(xiàng)的高度以及文本行高設(shè)定合適的寬高比閾值,高于閾值的項(xiàng)被認(rèn)為可能存在粘連。對(duì)于潛在的粘連,沿著水平方向遍歷,通過統(tǒng)計(jì)垂直方向上連續(xù)像素點(diǎn)的個(gè)數(shù),再結(jié)合筆畫寬度閾值和位置信息找到筆畫為“-”的區(qū)域并進(jìn)行過分割處理。

在單個(gè)字符識(shí)別前還需要對(duì)上述過分割項(xiàng)進(jìn)行組合,使用的組合方法為:對(duì)過分割項(xiàng)的合并采用遍歷方式,從第一個(gè)過分割項(xiàng)開始,依次與其后的過分割項(xiàng)進(jìn)行合并,并記錄開始和結(jié)束的位置。漢字“捌”由4 個(gè)部件組成,是大寫金額漢字中部件數(shù)目最多的文字,因此,定義單個(gè)字符的最大合并過分割項(xiàng)Cmax=4。由于有些字符不需要合并4 個(gè)過分割項(xiàng),因此合并時(shí)需要對(duì)過分割項(xiàng)進(jìn)行類型判斷,動(dòng)態(tài)調(diào)整合并項(xiàng)的數(shù)目。本文根據(jù)過分割項(xiàng)的寬度h、高度w以及過分割項(xiàng)的最大寬度Wmax、圖像的行高Hline,將過分割項(xiàng)劃分為3 類:

1)第一類C1。若過分割項(xiàng)的w

2)第二類C2。若過分割項(xiàng)的h/w>Tth3或w/Hline>Tth4,則將其定義為中型,該類可以是單個(gè)字符,也可以是單個(gè)字符中的主要部件。

3)第三類C3。除第一類和第二類,其余情況則將過分割項(xiàng)定義為大型,該類為單個(gè)字符。

在上述分類過程中,閾值Tth1、Tth2、Tth3和Tth4通過大量的優(yōu)化實(shí)驗(yàn)來確定,票據(jù)識(shí)別中閾值的取值分別為Tth1=3,Tth2=4,Tth3=1.2,Tth4=0.6。在合并的過程中,當(dāng)組合了一個(gè)C3后,不再連續(xù)組合C3或C2;每個(gè)過分割項(xiàng)最多組合3 個(gè)C2;C1總是與其他項(xiàng)組合,如果合并項(xiàng)寬度大于設(shè)定的閾值,則不組合。根據(jù)上述規(guī)則便可得到待識(shí)別的合并項(xiàng)。

2.3 字符識(shí)別

基于深度學(xué)習(xí)直接從原始數(shù)據(jù)中學(xué)習(xí)判別式特征以進(jìn)行字符分類的方法已經(jīng)取得了較好的效果,因此,本文使用深度卷積神經(jīng)網(wǎng)絡(luò)來訓(xùn)練字符分類器。

本文采用8 層的卷積網(wǎng)絡(luò),其包含5 個(gè)卷積層和3 個(gè)全連接層,卷積層均采用3×3 的卷積核,卷積步長(zhǎng)為1,padding 為1。所有卷積層后連接一個(gè)空間最大池化層MaxPooling 以降低特征維度,同時(shí)保證圖像的平移不變性,增強(qiáng)分類的魯棒性。池化窗口為2×2,步長(zhǎng)為2。為了加快收斂的速度并增強(qiáng)分類效果,在卷積層后均加入BatchNorm 層。在全連接層后接Dropout 層來增強(qiáng)模型的泛化性能。使用ReLUs 作為除最后一個(gè)全連接層外的所有卷積層和全連接層的激活函數(shù),最后一層使用Softmax來進(jìn)行分類,網(wǎng)絡(luò)的輸入為單通道的64×64 灰度圖。為了便于計(jì)算,設(shè)置圖像背景的灰度級(jí)為0,前景的灰度級(jí)為[1,255]。CNN 的配置信息如表1所示。

表1 CNN 網(wǎng)絡(luò)結(jié)構(gòu)及其參數(shù)Table 1 CNN network structure and its parameters

3 大寫金額語(yǔ)法自動(dòng)機(jī)

使用有限狀態(tài)自動(dòng)機(jī)檢驗(yàn)大寫金額語(yǔ)法時(shí)主要解決以下2 個(gè)關(guān)鍵問題:

1)根據(jù)大寫金額語(yǔ)法規(guī)則對(duì)字符進(jìn)行分類,通過定義合理的狀態(tài)構(gòu)造有限狀態(tài)自動(dòng)機(jī)。

2)根據(jù)構(gòu)造的有限狀態(tài)自動(dòng)機(jī),設(shè)計(jì)大寫金額字符串的匹配算法。

3.1 大寫金額語(yǔ)法規(guī)則

大寫金額的主要語(yǔ)法規(guī)則如下[24]:

1)中文大寫金額的數(shù)字字符應(yīng)該使用規(guī)范的字符,如壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬(wàn)、億、元(圓)、角、分、零、整(正)等字樣。

2)中文大寫金額數(shù)字到“元”為止的,在“元”之后寫“整”(或“正”)字;到“角”為止的,在“角”之后可以寫也可以不寫“整”(或“正”)字;大寫金額數(shù)字有“分”的,“分”后面不寫“整”(或“正”)字。

3)如果大寫金額對(duì)應(yīng)的阿拉伯?dāng)?shù)字金額中有“0”,則大寫金額應(yīng)該符合漢語(yǔ)語(yǔ)言規(guī)律和金額數(shù)字構(gòu)成規(guī)范:

(1)阿拉伯?dāng)?shù)字中間有“0”時(shí),中文大寫金額要寫“零”字,如¥1 409.50,應(yīng)寫成人民幣壹仟肆佰零玖元伍角(整)。

(2)阿拉伯?dāng)?shù)字中間有連續(xù)多個(gè)“0”時(shí),中文大寫金額中間可以只寫一個(gè)“零”字,如¥6 007.14,應(yīng)寫成人民幣陸仟零柒元壹角肆分。

(3)阿拉伯?dāng)?shù)字萬(wàn)位(元位)是“0”,或者數(shù)字中間有連續(xù)多個(gè)“0”且萬(wàn)位(元位)也是“0”,但千位(角位)不是“0”時(shí),中文大寫金額中可以只寫一個(gè)“零”字,也可以不寫。如¥107 001.53,應(yīng)寫成人民幣壹拾萬(wàn)零柒仟零壹元伍角叁分,或者寫成人民幣壹拾萬(wàn)柒仟零壹元伍角叁分。又如¥1 680.32,應(yīng)寫成人民幣壹仟陸佰捌拾元零叁角貳分,或者寫成人民幣壹仟陸佰捌拾元叁角貳分。

(4)阿拉伯?dāng)?shù)字角位是“0”而分位不是“0”時(shí),對(duì)應(yīng)的大寫金額“元”字后面應(yīng)寫“零”字。如¥16 409.02,應(yīng)寫成人民幣壹萬(wàn)陸仟肆佰零玖元零貳分。

3.2 有限狀態(tài)自動(dòng)機(jī)構(gòu)造

大寫金額字符組合具有多樣性,如果將單個(gè)字符作為有限狀態(tài)自動(dòng)機(jī)的狀態(tài),自動(dòng)機(jī)將變得很大,而且由于多個(gè)狀態(tài)具有相同的狀態(tài)轉(zhuǎn)移關(guān)系,使得狀態(tài)之間的轉(zhuǎn)換變得冗余且復(fù)雜。因此,通過對(duì)字符進(jìn)行分類可以得到最小化的有限狀態(tài)自動(dòng)機(jī),同時(shí)準(zhǔn)確分類也有助于簡(jiǎn)化字符組合的復(fù)雜度從而使得字符間的邏輯關(guān)系更加清晰。本文根據(jù)每個(gè)字符在金額中的意義將輸入字符集合劃分為以下5 類(括號(hào)內(nèi)為集合名稱):

1)數(shù)字類(Number):壹,貳,叁,肆,伍,陸,柒,捌,玖。

2)數(shù)字單位類(Unit):拾,佰,仟,萬(wàn)。

3)金額單位類(Amount):元,圓,角,分。

4)零類(Zero):零。

5)結(jié)束字符類(Only):正,整。

以類別名稱的首字母作為狀態(tài)名稱來表示自動(dòng)機(jī)所處的狀態(tài),則上述集合對(duì)應(yīng)的自動(dòng)機(jī)狀態(tài)分別為N、U、A、Z 和O。通過分析大寫金額的結(jié)構(gòu)可以看出,在“元(圓)”之前的金額表示是由數(shù)字字符和數(shù)字單位字符組成的,而在“元(圓)”之后則不會(huì)用到數(shù)字單位字符。因此,為了更加清晰地表達(dá)自動(dòng)機(jī)狀態(tài)之間的邏輯關(guān)系,將Number 類和Zero 類進(jìn)一步劃分為以下3 類:

1)N 類。由于首字符缺乏上下文信息,因此將第一個(gè)數(shù)字字符歸為該類。例如,對(duì)于字符串“伍角叁分”或者“伍拾元”,當(dāng)自動(dòng)機(jī)讀取第一個(gè)字符“伍”時(shí),由于沒有足夠的信息將其分類,因此自動(dòng)機(jī)進(jìn)入N 狀態(tài)。

2)N1(N2)類。在“元(圓)”之前(后)且不是首字符的數(shù)字類字符歸為該類。

3)Z1(Z2)類。在“元(圓)”之前(后)的零類字符歸為該類。

用于大寫金額語(yǔ)法檢查的有限狀態(tài)自動(dòng)機(jī)M定義為一個(gè)有序五元組:

M={Q,∑,δ,q0,F(xiàn)}

其中:Q={S,N,U,Z1,Z2,N1,A,N2,O}是自動(dòng)機(jī)所有狀態(tài)的集合;∑={壹,貳,叁,肆,伍,陸,柒,捌,玖,拾,佰,仟,萬(wàn),億,元,圓,角,分,零,整,正}為所有輸入字符的集合;δ為狀態(tài)轉(zhuǎn)移函數(shù),Q×∑→Q;q0=S是自動(dòng)機(jī)的初始狀態(tài),q0∈Q;F={A,O}是所有終止?fàn)顟B(tài)的集合,F(xiàn)∈Q。

有限狀態(tài)機(jī)的狀態(tài)流程為圖3 所示的有向圖,可以看出,其具有有限個(gè)狀態(tài)節(jié)點(diǎn),并且每個(gè)節(jié)點(diǎn)代表一個(gè)狀態(tài),每條有向邊代表狀態(tài)的轉(zhuǎn)移方向。有向邊上方標(biāo)注的集合名稱是狀態(tài)轉(zhuǎn)移時(shí)需要的字符類型,即外界對(duì)自動(dòng)機(jī)的輸入,自動(dòng)機(jī)通過讀取相應(yīng)的集合元素來推動(dòng)狀態(tài)的轉(zhuǎn)移。

圖3 狀態(tài)轉(zhuǎn)換示意圖Fig.3 Schematic diagram of state transition

對(duì)于被檢查的字符串,有限狀態(tài)自動(dòng)機(jī)依次讀取其中的字符,依據(jù)匹配算法進(jìn)行狀態(tài)轉(zhuǎn)移。每次讀入一個(gè)字符發(fā)生一次狀態(tài)轉(zhuǎn)移,轉(zhuǎn)移方向由當(dāng)前所處狀態(tài)和讀入的字符共同決定。例如,對(duì)于U=δ(N,Unit),在自動(dòng)機(jī)處在N 狀態(tài)時(shí),當(dāng)讀入U(xiǎn)nit 字符集合中的一個(gè)單位字符時(shí),自動(dòng)機(jī)由N 狀態(tài)轉(zhuǎn)移至U 狀態(tài),發(fā)生一次狀態(tài)轉(zhuǎn)移。當(dāng)自動(dòng)機(jī)到達(dá)某個(gè)狀態(tài)時(shí)表示該自動(dòng)機(jī)接受了在此之前讀入的所有字符組合成的字符串,而沒有被接受的字符串表示不符合語(yǔ)法規(guī)則。因此,如果一個(gè)大寫金額字符串可以從狀態(tài)機(jī)的開始狀態(tài)經(jīng)過若干個(gè)中間狀態(tài)后到達(dá)最終狀態(tài),則該字符串有效,否則無效。由于大寫金額可以以“角”“分”和“整(正)”結(jié)尾,因此當(dāng)字符串進(jìn)入A 狀態(tài)時(shí)需要判斷是否結(jié)束。A 狀態(tài)既可以作為結(jié)束狀態(tài),也可以在還有字符讀入時(shí)根據(jù)轉(zhuǎn)移函數(shù)轉(zhuǎn)移至下一狀態(tài)。

以上為有限狀態(tài)自動(dòng)機(jī)的執(zhí)行過程,但實(shí)際應(yīng)用過程中的情況要復(fù)雜很多。數(shù)字單位和金額單位中的字符具有緊密的上下文關(guān)系,例如,“叁拾”符合語(yǔ)法規(guī)則,但“叁拾伍佰元整”則不符合語(yǔ)法規(guī)則,這種類型的規(guī)則需要結(jié)合上文信息才能表示,本文將其稱為動(dòng)態(tài)規(guī)則。通過在自動(dòng)機(jī)的狀態(tài)內(nèi)部添加動(dòng)態(tài)約束,可以實(shí)現(xiàn)對(duì)大寫金額語(yǔ)法規(guī)則的合理判斷。

3.3 自動(dòng)機(jī)動(dòng)態(tài)約束

為了使自動(dòng)機(jī)最小化,本文在設(shè)計(jì)狀態(tài)時(shí)合并了自動(dòng)機(jī)中的等價(jià)狀態(tài)。其中,數(shù)字狀態(tài)的9 個(gè)數(shù)字字符是完全等價(jià)的,邏輯關(guān)系可以統(tǒng)一表示,因此,狀態(tài)內(nèi)部不需要進(jìn)行約束。對(duì)于數(shù)字單位Unit和金額單位Account 集合中的字符,需要結(jié)合語(yǔ)法信息在狀態(tài)內(nèi)部添加動(dòng)態(tài)規(guī)則進(jìn)行約束。本文根據(jù)單位狀態(tài)發(fā)生轉(zhuǎn)換時(shí)讀入的字符將約束分為4 類,分別為數(shù)字類一般約束、數(shù)字類特殊約束、零類一般約束和零類特殊約束。為了方便對(duì)動(dòng)態(tài)規(guī)則進(jìn)行建模,定義以下符號(hào):

1)unit_all={萬(wàn),仟,佰,拾,元,角,分},其包含數(shù)字單位Unit 和金額單位Account 集合中的元素。Uindex表示unit_all 中各個(gè)字符對(duì)應(yīng)的狀態(tài),0≤index≤6。例如,U0表示集合中的“萬(wàn)”字對(duì)應(yīng)的自動(dòng)機(jī)狀態(tài),U3表示集合中“拾”字對(duì)應(yīng)的自動(dòng)機(jī)狀態(tài)。

2)wan_used 表示在自動(dòng)機(jī)讀過的字符串中“萬(wàn)”字出現(xiàn)過。

3)unit_wan_used 表示數(shù)字單位集合Unit 中的任意一個(gè)字符與“萬(wàn)”字符的組合是否出現(xiàn)過,例如,“拾萬(wàn)”或“佰萬(wàn)”等。對(duì)于“元”字符,同樣定義unit_yuan_used 來表示類似的信息。

4)m和n分別表示當(dāng)前單位狀態(tài)下標(biāo)以及下一單位狀態(tài)的下標(biāo),且0≤m<6,0

4 種約束具體如下:

1)數(shù)字類一般約束描述為:

該約束是針對(duì)數(shù)字構(gòu)造的一般規(guī)則,其中,f為動(dòng)態(tài)約束函數(shù)。用index 表示unit_all 中的狀態(tài),其控制單位的移動(dòng)。當(dāng)且僅當(dāng)讀取一個(gè)數(shù)字字符時(shí),數(shù)字單位向后移動(dòng)一位,即index++。因此,該約束條件主要針對(duì)沒有發(fā)生單位向前躍變的情形。當(dāng)自動(dòng)機(jī)讀取字符串中數(shù)字字符的下一位單位字符時(shí),如果單位字符與index 指向的單位相同,則判定為正確的語(yǔ)法;否則,自動(dòng)機(jī)返回false 標(biāo)志,表示該字符串被自動(dòng)機(jī)拒絕,結(jié)束判斷。但當(dāng)m=3 時(shí),對(duì)于合法的字符串“伍仟肆佰叁拾壹萬(wàn)”,在Um=“拾”且讀入Number 集合中的“壹”字符時(shí),數(shù)字單位狀態(tài)U 中index 由3 變?yōu)?(Un=“萬(wàn)”),發(fā)生了單位的躍變,這時(shí)就需要對(duì)其做特殊約束。

2)數(shù)字類特殊約束描述為:

當(dāng)m=3(Um=“拾”)時(shí),由于“萬(wàn)”字符影響可能會(huì)發(fā)生單位的向前躍變,因此此約束條件取決于“萬(wàn)”字符是否出現(xiàn)過。當(dāng)“萬(wàn)”字符出現(xiàn)過時(shí),表明“萬(wàn)”字段的數(shù)字已經(jīng)處理完成,下一步按數(shù)字類一般約束(沒有發(fā)生躍變)處理即可,例如,當(dāng)自動(dòng)機(jī)已經(jīng)讀到字符串“壹萬(wàn)壹仟壹佰壹拾”的“拾”時(shí),m=3,在讀入Number 集合中的數(shù)字時(shí),狀態(tài)只能轉(zhuǎn)移至n=4,即下一個(gè)單位字符只能為“元”;當(dāng)“萬(wàn)”字符沒有出現(xiàn)過時(shí),可能是該字符串的金額沒有超過一萬(wàn),也可能前面的數(shù)字單位是“萬(wàn)”字段的字符,對(duì)于前者,例如“壹仟壹佰壹拾壹元”,則不發(fā)生躍變,對(duì)于后者,如“壹仟壹佰壹拾壹萬(wàn)”,則發(fā)生躍變,這些都符合語(yǔ)法規(guī)則,需要根據(jù)接下來讀入的數(shù)字單位做相應(yīng)選擇。

3)零類一般約束描述為:

該約束條件主要針對(duì)3.1 節(jié)中第3 條規(guī)則的第2 條,當(dāng)阿拉伯?dāng)?shù)字中間有連續(xù)多個(gè)“0”時(shí),大寫金額可以只寫一個(gè)“零”。因此,結(jié)合數(shù)字構(gòu)造規(guī)則,在讀入字符“零”時(shí),index 至少需要向右移動(dòng)一個(gè)單位,也可以移動(dòng)多個(gè)單位,即n-m≥1。在讀入下一個(gè)單位字符時(shí),如果該單位滿足此條件,則判定為語(yǔ)法正確,index 根據(jù)讀入的字符進(jìn)行相應(yīng)賦值;否則,自動(dòng)機(jī)返回false,結(jié)束判斷。當(dāng)大寫金額字符串為多個(gè)“零”時(shí),index 按照“零”的個(gè)數(shù)進(jìn)行移位。

4)零類特殊約束描述為:

該約束條件主要針對(duì)3.1 節(jié)中第3 條規(guī)則的第3 條,其主要取決于數(shù)字單位與“萬(wàn)”或者“元”字符是否組合出現(xiàn)過。例如,對(duì)于“ 萬(wàn)”位,當(dāng)unit_wan_used=true 并且千位不為“零”時(shí),該組合單位后面可以加“零”也可以不加“零”。在自動(dòng)機(jī)中當(dāng)讀入字符“零”時(shí),單位可以向后移動(dòng)一位或者不移動(dòng)。當(dāng)讀入下一個(gè)字符時(shí),滿足此條件則判定為語(yǔ)法正確;否則,自動(dòng)機(jī)返回false,結(jié)束判斷。對(duì)于“元”位的處理也與上述過程相同。

在添加動(dòng)態(tài)約束后,完整的自動(dòng)機(jī)狀態(tài)轉(zhuǎn)換示意圖如圖4 所示。根據(jù)以上描述的算法可以實(shí)現(xiàn)大寫金額文本語(yǔ)法的準(zhǔn)確檢查。

圖4 改進(jìn)的狀態(tài)轉(zhuǎn)換示意圖Fig.4 Schematic diagram of improved state transition

3.4 自動(dòng)機(jī)與路徑搜索

復(fù)寫在票據(jù)上的大寫金額字體在去噪之后更加不清晰,如圖5 所示,其中一些字符可能被分成3 個(gè)以上的分割項(xiàng),每個(gè)過分割項(xiàng)在嘗試組合之后都存在一種或多種組合情況,每種組合情況還會(huì)有一個(gè)或多個(gè)識(shí)別結(jié)果。所有識(shí)別項(xiàng)都可以用四元組{C,P,S,E}表示,其中,C為字符分類結(jié)果,P為置信度,S和E分別為合并項(xiàng)的開始和結(jié)束位置。本文對(duì)首尾相連的識(shí)別項(xiàng)進(jìn)行路徑搜索,并將設(shè)計(jì)的語(yǔ)法自動(dòng)機(jī)應(yīng)用到動(dòng)態(tài)搜索過程中,以提高路徑搜索的精度和速度。

圖5 筆畫缺失的文本行Fig.5 Text lines with missing stroke

在路徑搜索的過程中,將當(dāng)前路徑中的字符構(gòu)成的字符串稱為前綴字符串。前文所設(shè)計(jì)的自動(dòng)機(jī)校驗(yàn)算法是針對(duì)完整字符串的,不能到達(dá)終止?fàn)顟B(tài)時(shí)該字符串被認(rèn)為不符合語(yǔ)法規(guī)則。由于前綴字符串不是完整的字符串,因此需要對(duì)自動(dòng)機(jī)進(jìn)行適當(dāng)調(diào)整以滿足語(yǔ)法檢驗(yàn)的需求。首先,調(diào)整自動(dòng)機(jī)的每個(gè)狀態(tài),使其可以接受標(biāo)志字符T,并可以由該狀態(tài)直接進(jìn)入終止?fàn)顟B(tài);然后,在路徑搜索過程中的前綴字符串后面添加判斷標(biāo)志T。具體搜索步驟如下:

1)將每個(gè)合并項(xiàng)的識(shí)別結(jié)果按置信度P由高到低排序,當(dāng)最大置信度高于閾值T時(shí),保留前n項(xiàng)作為候選集;否則,認(rèn)為該合并項(xiàng)的識(shí)別結(jié)果均不可靠,以模糊字符“卍”代替。接著,從S=0 的合并項(xiàng)開始集束搜索,設(shè)置搜索寬度sw=3。

2)利用自動(dòng)機(jī)的前綴語(yǔ)法檢查功能對(duì)搜索到的路徑進(jìn)行判斷。當(dāng)前綴字符串符合語(yǔ)法規(guī)則時(shí),記錄結(jié)束位置E,并繼續(xù)對(duì)開始位置為S=E+1 的合并項(xiàng)進(jìn)行搜索;否則,增加搜索寬度,即sw=sw+1。當(dāng)所有的以S為開始的合并項(xiàng)都不符合語(yǔ)法規(guī)則時(shí),將該位置的識(shí)別結(jié)果以模糊字符“卍”(C=“卍”)替代,繼續(xù)進(jìn)行搜索。

3)當(dāng)結(jié)束位置E為最后一個(gè)合并項(xiàng)的結(jié)束位置時(shí),即完成路徑搜索。由于整個(gè)過程按照置信度優(yōu)先搜索,因此以第一條符合語(yǔ)法規(guī)則的路徑作為最后的識(shí)別結(jié)果。

當(dāng)搜索路徑中的模糊字符“卍”的個(gè)數(shù)大于3 時(shí),或者出現(xiàn)2 個(gè)連續(xù)的模糊字符,就認(rèn)為組合或識(shí)別結(jié)果不可靠,該搜索路徑被剪枝。對(duì)模糊字符在規(guī)定范圍內(nèi)的字符串,暫不使用語(yǔ)法自動(dòng)機(jī)對(duì)其進(jìn)行檢查。在模糊字符被預(yù)測(cè)出之后將路徑歸為候選路徑,模糊字符預(yù)測(cè)的詳細(xì)過程在3.5 節(jié)中進(jìn)行介紹。

3.5 自動(dòng)機(jī)與模糊字符預(yù)測(cè)

對(duì)于一些筆畫缺失或者噪聲去除效果不好的字符圖像,卷積神經(jīng)網(wǎng)絡(luò)很難給出正確的識(shí)別結(jié)果,這類字符在路徑搜索中以模糊字符“卍”替代。由于大寫金額無論是數(shù)字單位還是金額單位都有規(guī)則的序位關(guān)系,因此可以利用自動(dòng)機(jī)對(duì)這類模糊字符進(jìn)行預(yù)測(cè)。

自動(dòng)機(jī)每一次的字符讀取都有確定的轉(zhuǎn)移狀態(tài),當(dāng)字符串中有單個(gè)模糊字符時(shí),模糊字符必然出現(xiàn)在前一狀態(tài)的下一個(gè)轉(zhuǎn)移狀態(tài)中。這時(shí),就可以將下一狀態(tài)的字符集作為該模糊字符的候選集。以字符串“壹仟零叁卍陸仟叁卍捌拾元整”為例,當(dāng)自動(dòng)機(jī)讀到第一個(gè)“卍”字時(shí),自動(dòng)機(jī)處于N1狀態(tài),從自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)換圖可以看出該狀態(tài)的下一狀態(tài)只能是M 和U 2 種情況。當(dāng)下一狀態(tài)為M 時(shí),“元”作為該模糊字符的預(yù)測(cè)候選項(xiàng);當(dāng)下一狀態(tài)為U 時(shí),由于“仟”和“零”字符的出現(xiàn),根據(jù)數(shù)字類一般約束可知,此時(shí)index=3,預(yù)測(cè)候選項(xiàng)為“拾”。同時(shí),由于wan_used=false,根據(jù)數(shù)字類特殊約束可知,“萬(wàn)”也是預(yù)測(cè)候選項(xiàng)。因此,第一個(gè)“卍”字符有3 個(gè)候選項(xiàng){“元”,“拾”,“萬(wàn)”},形成3 條候選路徑。自動(dòng)機(jī)繼續(xù)讀取到字符“仟”時(shí),語(yǔ)法自動(dòng)機(jī)就會(huì)把包含預(yù)測(cè)值“元”和“拾”的路徑剪枝,最終得到唯一的候選項(xiàng)“萬(wàn)”,從而完成一次準(zhǔn)確的預(yù)測(cè)。同理,第二個(gè)模糊字符將被準(zhǔn)確預(yù)測(cè)為“佰”。最終,語(yǔ)法自動(dòng)機(jī)將返回所有模糊字符的預(yù)測(cè)結(jié)果。

4 實(shí)驗(yàn)結(jié)果與分析

本文進(jìn)行2 個(gè)實(shí)驗(yàn):一為驗(yàn)證自動(dòng)機(jī)語(yǔ)法檢查和模糊字符預(yù)測(cè)2 種算法性能的實(shí)驗(yàn),使用的數(shù)據(jù)為大寫金額字符串;二為這2 種算法在手寫票據(jù)大寫金額識(shí)別任務(wù)中的應(yīng)用實(shí)驗(yàn),使用的數(shù)據(jù)為手寫票據(jù)。

4.1 實(shí)驗(yàn)數(shù)據(jù)及評(píng)價(jià)指標(biāo)

本文從中科院手寫漢字?jǐn)?shù)據(jù)集CASIAHWDB1.0-1.2[25]中挑出21 類字符集進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練。其中,訓(xùn)練集每類包含800 張由不同作者手寫的單字符圖片,實(shí)驗(yàn)采用的測(cè)試數(shù)據(jù)是人工標(biāo)注的2 600 張手寫票據(jù)。

實(shí)驗(yàn)中針對(duì)不同的應(yīng)用場(chǎng)景采用不同的評(píng)價(jià)指標(biāo)。在單獨(dú)的模糊字符預(yù)測(cè)實(shí)驗(yàn)中,使用單字符預(yù)測(cè)準(zhǔn)確率(Character Prediction Accuracy,CPA)和字符串預(yù)測(cè)準(zhǔn)確率(String Prediction Accuracy,SPA)作為評(píng)價(jià)指標(biāo)。在識(shí)別票據(jù)中的大寫金額圖像文本時(shí),采用單字符識(shí)別準(zhǔn)確率(Character Recognition Accuracy,CRA)和整條文本識(shí)別準(zhǔn)確率(Line RecognitionAccuracy,LRA)作為評(píng)價(jià)指標(biāo)。CRA 按照識(shí)別結(jié)果和標(biāo)注值的編輯距離進(jìn)行計(jì)算。

4.2 自動(dòng)機(jī)語(yǔ)法檢查和模糊字符預(yù)測(cè)結(jié)果

為了評(píng)估有限狀態(tài)自動(dòng)機(jī)的語(yǔ)法檢查效果,使用2 000 條大寫金額字符串進(jìn)行實(shí)驗(yàn),其中的1 000 條具有語(yǔ)法錯(cuò)誤。實(shí)驗(yàn)結(jié)果表明,語(yǔ)法檢查自動(dòng)機(jī)對(duì)正確字符串的接受率和錯(cuò)誤字符串的拒絕率均為100%,即語(yǔ)法自動(dòng)機(jī)可以對(duì)識(shí)別結(jié)果進(jìn)行非??煽康恼Z(yǔ)法檢查。

在模糊字符預(yù)測(cè)實(shí)驗(yàn)中,使用2 600 條手寫票據(jù)中大寫金額部分的label 作為測(cè)試數(shù)據(jù)來評(píng)估預(yù)測(cè)效果。其中,1 300 條文本隨機(jī)使用模糊字符“卍”替代標(biāo)注字符串中的1 個(gè)字符,剩下的1 300 條隨機(jī)使用2 個(gè)模糊字符“卍”替代標(biāo)注字符串中的2 個(gè)字符,替換位置為非數(shù)字位,由于數(shù)字位的9 個(gè)字符不具備上下文語(yǔ)義,因此本文僅評(píng)估非數(shù)字位的預(yù)測(cè)效果。自動(dòng)機(jī)對(duì)模糊字符的預(yù)測(cè)結(jié)果如表2 所示。

表2 模糊字符預(yù)測(cè)結(jié)果Table 2 Fuzzy characters prediction results %

從實(shí)驗(yàn)結(jié)果可以看出,當(dāng)字符串中僅有1 個(gè)模糊字符時(shí),自動(dòng)機(jī)的預(yù)測(cè)準(zhǔn)確率可以達(dá)到99.5%;當(dāng)字符串中有2 個(gè)位置的模糊字符時(shí),自動(dòng)機(jī)的預(yù)測(cè)準(zhǔn)確率下降至96.0%。由于大寫金額語(yǔ)法的靈活性,同一模糊字符處可能存在多種符合要求的預(yù)測(cè)結(jié)果,因此自動(dòng)機(jī)的字符預(yù)測(cè)率很難達(dá)到100%。但是,作為識(shí)別的后處理步驟,基于自動(dòng)機(jī)的模糊字符預(yù)測(cè)可以改善部分模型識(shí)別錯(cuò)誤的情況,進(jìn)而提高票據(jù)中大寫金額的識(shí)別準(zhǔn)確率。

4.3 票據(jù)識(shí)別結(jié)果

為進(jìn)一步驗(yàn)證自動(dòng)機(jī)模糊字符預(yù)測(cè)的重要性,本節(jié)將進(jìn)行2 個(gè)消融實(shí)驗(yàn),對(duì)2 600 張手寫票據(jù)的大寫部分進(jìn)行識(shí)別。實(shí)驗(yàn)1 為識(shí)別后沒有進(jìn)行模糊字符預(yù)測(cè),實(shí)驗(yàn)2 為識(shí)別后再進(jìn)行模糊字符預(yù)測(cè)。2 個(gè)實(shí)驗(yàn)的結(jié)果如表3 所示。

表3 模糊字符預(yù)測(cè)對(duì)票據(jù)識(shí)別的影響Table 3 Influence of fuzzy characters prediction on bank checks recognition %

從實(shí)驗(yàn)結(jié)果可以看出,將語(yǔ)法自動(dòng)機(jī)應(yīng)用于票據(jù)中大寫金額的識(shí)別任務(wù)時(shí),字符識(shí)別準(zhǔn)確率可達(dá)95.3%,文本行的識(shí)別準(zhǔn)確率達(dá)到91.4%,該結(jié)果也驗(yàn)證了在路徑搜索中結(jié)合前綴語(yǔ)法檢測(cè)自動(dòng)機(jī)可以提高搜索的精度和速度。在加入模糊字符預(yù)測(cè)的操作之后,單字符的識(shí)別準(zhǔn)確率達(dá)到98.2%,相比實(shí)驗(yàn)1提升了2.9 個(gè)百分點(diǎn);整條文本的識(shí)別準(zhǔn)確率達(dá)到96.6%,相比實(shí)驗(yàn)1 提升了5.2 個(gè)百分點(diǎn)。實(shí)驗(yàn)結(jié)果表明,在大寫金額的后續(xù)處理步驟中使用語(yǔ)法自動(dòng)機(jī)對(duì)模糊字符進(jìn)行預(yù)測(cè),可以有效提升識(shí)別準(zhǔn)確率。

5 結(jié)束語(yǔ)

本文采用基于分割的框架對(duì)手寫票據(jù)中的大寫金額進(jìn)行識(shí)別。通過對(duì)字符進(jìn)行分類、定義類與類之間的邏輯關(guān)系,構(gòu)造出可以用于語(yǔ)法檢查的有限狀態(tài)自動(dòng)機(jī)。利用語(yǔ)法自動(dòng)機(jī)在識(shí)別結(jié)果中選擇出符合語(yǔ)法規(guī)則的字符串。在路徑搜索階段采用束搜索的策略,通過前綴語(yǔ)法檢查對(duì)搜索路徑進(jìn)行剪枝,以避免路徑呈指數(shù)級(jí)增長(zhǎng)的問題,從而提高搜索速度。針對(duì)復(fù)寫票據(jù)不清晰、筆畫缺失導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)字符識(shí)別不正確或置信度低的問題,提出一種模糊字符預(yù)測(cè)算法。實(shí)驗(yàn)結(jié)果表明,結(jié)合語(yǔ)法自動(dòng)機(jī)校驗(yàn)和模糊字符預(yù)測(cè)對(duì)單字符進(jìn)行識(shí)別時(shí)準(zhǔn)確率高達(dá)98.2%,對(duì)整條文本進(jìn)行識(shí)別時(shí)準(zhǔn)確率達(dá)到96.6%。但是,本文自動(dòng)機(jī)的模糊字符預(yù)測(cè)僅針對(duì)具有上下文關(guān)系的非數(shù)字位,對(duì)于無上下文關(guān)系的數(shù)字位還無法進(jìn)行預(yù)測(cè)。因此,下一步將使用語(yǔ)法自動(dòng)機(jī)定位模糊字符,根據(jù)偏旁部首或部件信息進(jìn)行位置糾正,以實(shí)現(xiàn)數(shù)字位的模糊字符預(yù)測(cè)。

猜你喜歡
自動(dòng)機(jī)字符串大寫
做一個(gè)大寫的“我”
{1,3,5}-{1,4,5}問題與鄰居自動(dòng)機(jī)
大寫的厲害:“00后”少年自制火箭成功上天
小讀者(2021年4期)2021-06-11 05:42:04
一種基于模糊細(xì)胞自動(dòng)機(jī)的新型疏散模型
“大寫”與“大些”
廣義標(biāo)準(zhǔn)自動(dòng)機(jī)及其商自動(dòng)機(jī)
—個(gè)大寫的pink 該入手的都來了
Coco薇(2016年2期)2016-03-22 02:31:03
一種新的基于對(duì)稱性的字符串相似性處理算法
依據(jù)字符串匹配的中文分詞模型研究
一種針對(duì)Java中字符串的內(nèi)存管理方案
阜新市| 金溪县| 资兴市| 汶川县| 罗山县| 育儿| 仙游县| 琼中| 临颍县| 桐城市| 北流市| 西丰县| 高青县| 金溪县| 获嘉县| 上蔡县| 京山县| 靖安县| 清丰县| 山东省| 利辛县| 新河县| 台北县| 平塘县| 宁明县| 广灵县| 册亨县| 大余县| 维西| 米易县| 晋州市| 三门县| 永德县| 乐东| 彰化市| 潞城市| 扶余县| 孝昌县| 信阳市| 太仓市| 彩票|