周翔 劉楊
(深圳市標(biāo)準(zhǔn)技術(shù)研究院 廣東深圳 518000)
隨著中國經(jīng)濟(jì)的發(fā)展和經(jīng)濟(jì)社會合規(guī)程度的不斷提升,人口的流動范圍越來越廣,具有統(tǒng)一社會信用代碼的系列證件成為機(jī)構(gòu)資質(zhì)審查的重要依據(jù),但人工錄入證件信息存在成本較高、速度慢、即時性差等問題,因此自動證件識別成為經(jīng)濟(jì)社會運(yùn)行中重要的基本模塊,也具有廣泛的應(yīng)用場景,比如商家資質(zhì)審查和企業(yè)金融服務(wù)等。該文分析了多種證件信息的采集需求,結(jié)合最新的光學(xué)字符識別、深度學(xué)習(xí)框架與技術(shù),設(shè)計了一套基于CRF模型與多規(guī)則集成的證件信息識別策略,相比于當(dāng)前市場上的通用接口,其效果更好。
OCR在20世紀(jì)初提出后[1],經(jīng)過長期穩(wěn)定的發(fā)展,已成為一個高成熟度的領(lǐng)域。OCR主要有統(tǒng)計特征的方法、結(jié)構(gòu)特征方法和神經(jīng)網(wǎng)絡(luò)的方法這3 種主要的技術(shù)途徑。
(1)統(tǒng)計特征方法主動選取優(yōu)質(zhì)特征構(gòu)建特征向量,這些特征一般是字符集合中普遍的、變化不大的、分類模型支持度高的特征。其中常見有平面位置、雙向投影和變換特征等[1]。
(2)結(jié)構(gòu)特征方法則是基于字符內(nèi)部的結(jié)構(gòu)。字符結(jié)構(gòu)子集的選取隨著識別思路變化而隨之調(diào)整。選取層級可以在字根或者是筆劃維度上,也可以選取更小粒度上的筆段。在不同粒度上抽取的結(jié)構(gòu)信息一般命名為子模式、部件或者是基元,基元根據(jù)特定的規(guī)則構(gòu)成序列成為特征信息。這種方法本質(zhì)上是識別基元結(jié)構(gòu)空間內(nèi)的字符[2]。
目前,基于神經(jīng)網(wǎng)絡(luò)的方法是OCR技術(shù)途徑中的主流策略,人工神經(jīng)網(wǎng)絡(luò)(Artificial Nueral Network,ANN)應(yīng)用廣泛。輸入特征向量后,ANN作為分類單元輸出結(jié)果。輸入特征向量由于問題理解水平不足或適配的方法不同,常常存在內(nèi)部信息冗余或矛盾的情況。通過多次迭代,ANN可以自動優(yōu)化特征向量,清洗特征信息同時優(yōu)化分類效果。另外,由于當(dāng)前的ANN主要采用分布式網(wǎng)絡(luò),其自身特征保證了天然的并行效率,求解速度在大規(guī)模數(shù)據(jù)上有相當(dāng)?shù)谋WC。該文所采取的基礎(chǔ)框架就是基于深度人工神經(jīng)網(wǎng)絡(luò)的。
該研究基于飛槳框架來進(jìn)行OCR 工程,飛槳(PaddlePaddle)是百度公司推出的產(chǎn)業(yè)級深度學(xué)習(xí)平臺,集成了相關(guān)框架、多類型輔助組件等。深度學(xué)習(xí)是目前人工神經(jīng)網(wǎng)絡(luò)的主流發(fā)展方向,以多層感知機(jī)為基礎(chǔ),在大樣本環(huán)境下表現(xiàn)出較好的性能,因此成為學(xué)界和產(chǎn)業(yè)界的主要應(yīng)用方向,經(jīng)歷多年的快速發(fā)展目前已經(jīng)進(jìn)入高度商業(yè)化的深度學(xué)習(xí)平臺階段,由大平臺普遍支持多樣的上層應(yīng)用。該文使用其OCR 工具庫PaddleOCR,使用不同粒度和層次的模型對輸入證件圖片文件進(jìn)行解析識別文字,達(dá)到了工業(yè)級效果。
該文信息抽取任務(wù)的本質(zhì)就是在給定的長序列文本中提取特定模式的關(guān)鍵信息,在OCR 的基礎(chǔ)之上,首先使用模板為中心的信息抽取方法。在證件信息識別這一特定領(lǐng)域中,信息抽取單元所得到的輸入信息通常具有相當(dāng)固定的格式,特別是在給定某一特定證件類型例如營業(yè)執(zhí)照時,信息抽取模塊的輸入文本重復(fù)率高且固定不變的形式。在此領(lǐng)域設(shè)定下,信息抽取任務(wù)可以定義為一個模板填充任務(wù)。其目的是在結(jié)構(gòu)相似度極高的文本中發(fā)掘多次反復(fù)出現(xiàn)的模式,并用適用于不同文本的可變材料將此模式實例化。模式中固定不變的部分可以視為模板干,而隨著不同證件實例進(jìn)行變化的信息可視為模板的枝葉,又稱為待填充的槽位。填充到槽位里的信息可以是從原始文本中直接抽取出來的信息,也可以是經(jīng)特定推理單元處理后的預(yù)先定義的概念類。因此,該信息抽取任務(wù)的基本步驟主要是規(guī)則模板構(gòu)建、結(jié)合模板抽取事實文本以及抽取結(jié)果的結(jié)構(gòu)化。規(guī)則模板的構(gòu)建過程主要通過專家設(shè)計、行業(yè)調(diào)研、文本統(tǒng)計與可視化和探針實驗進(jìn)行,同時將不同的標(biāo)點進(jìn)行分類,根據(jù)為不同分隔符設(shè)計不同的決策流程,挖掘基于符號和文本描述的模式。具體而言,規(guī)則模式的挖掘主要由3個部分構(gòu)成,即:槽前模式挖掘、填充文本模式挖掘以及槽后模式挖掘。槽前模式描述待寫入槽位置之前的文本的基本模式,槽后模式描述待寫入槽位置之后的文本的模式,填充文本模式則用于描述填充目標(biāo)的基本結(jié)構(gòu)。多個子結(jié)構(gòu)構(gòu)成模式串或列表,從前向后方向匹配,最終把全部匹配成功的目標(biāo)槽位結(jié)果寫入特定證件信息的結(jié)構(gòu)化表格。在計算模板結(jié)構(gòu)的同時,對常見的OCR誤例和混淆輸出進(jìn)行統(tǒng)計和識別,通過編寫常見規(guī)則干預(yù)計算過程,降低臟數(shù)據(jù)噪聲對計算結(jié)果的影響。
文本抽取就是從文字識別結(jié)果中抽取出需要的字段或要素。該文采用深度學(xué)習(xí)模型混合規(guī)則集成的策略,對從圖像中識別出的文字進(jìn)行信息抽取?,F(xiàn)階段對非結(jié)構(gòu)化文本的信息抽取通常轉(zhuǎn)化為序列標(biāo)注任務(wù),主要以基于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN 深度學(xué)習(xí)方法為主。該方法有基于字和基于詞兩種,均難以同時具備語義信息豐富度高與未登錄詞數(shù)量少的優(yōu)點。為有效識別證件信息文字中的字段信息,對部分時間和單位信息精準(zhǔn)分類,該文使用一種基于字詞協(xié)同的深度學(xué)習(xí)序列標(biāo)注模型與梯度提升決策樹模型相結(jié)合的信息抽取方法,即利用字詞協(xié)同的雙向LSTM-CRF 模型對文本進(jìn)行初步解析,在此基礎(chǔ)上使用集成學(xué)習(xí)實現(xiàn)對時間和單位信息的分類矯正。
序列標(biāo)注可以由隱馬爾可夫(HMM)以及最大熵等模型實現(xiàn)。解決序列標(biāo)注問題,目前最有效、最廣泛的方法是條件隨機(jī)場(Conditional Random Fields),在NLP經(jīng)典任務(wù)上效果很好。CRF可以由HMM來推出,非常適合于序列標(biāo)注類型的任務(wù),輸入和輸出形式都是序列的情況下也可以被視作一種Seq2Seq 模型,一般指的是線性鏈CRF,其本質(zhì)是針對序列類型數(shù)據(jù)的對數(shù)線性模型。條件隨機(jī)場是馬爾可夫網(wǎng)絡(luò)的變體,具體而言,CRF 是在輸入隨機(jī)變量X 確定情況下的輸出隨機(jī)變量Y的馬爾可夫隨機(jī)場。其操作方法大致分為特征函數(shù)構(gòu)建、特定數(shù)據(jù)調(diào)優(yōu)參數(shù)和利用模型預(yù)測標(biāo)注或概率這3個步驟。在第一步驟和第二步驟的模型訓(xùn)練過程中,由于線性鏈條CRF 本質(zhì)上是對數(shù)線性模型,所有可用于優(yōu)化對數(shù)線性模型的方法都可以進(jìn)行遷移應(yīng)用,例如擬牛頓下降方法、最大似然估計方法、梯度下降方法、改進(jìn)的迭代尺度方法、牛頓迭代方法等。在確定模型應(yīng)用預(yù)測時,CRF 模型和預(yù)測思路于HMM模型一致,在輸入的新的序列中通過計算概率最大的思路尋找一條輸出隱狀態(tài)序列?;贑RF在性能和效果方面的優(yōu)勢,該文的文本抽取也使用CRF。
該文同時使用LSTM 模型來提高抽取效果。RNN擅長處理序列數(shù)據(jù),對序列變化的數(shù)據(jù)解析能力更強(qiáng)。RNN 能很好地處理單個令牌的含義由于其語境會有所變化的情況。但相關(guān)背景和當(dāng)前位置的距離過大時,RNN無法連接距離過遠(yuǎn)的信息。長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)在RNN 基礎(chǔ)上進(jìn)行了調(diào)整,在長序列調(diào)節(jié)下能夠很好地應(yīng)對梯度消失和爆炸,比普通RNN 在更長的序列中有更好的表現(xiàn)。RNN 的標(biāo)準(zhǔn)模式是鏈?zhǔn)降闹貜?fù)模塊。在其標(biāo)準(zhǔn)結(jié)構(gòu)中,重復(fù)模塊的內(nèi)部構(gòu)成極為簡單,比如:由單個tanh層構(gòu)成模塊。LSTM的結(jié)構(gòu)邏輯與之相同,但其重復(fù)模塊的內(nèi)部構(gòu)成不同。其內(nèi)部重復(fù)模塊并非單調(diào)的神經(jīng)網(wǎng)絡(luò)層,在模塊中有4種單元交互。LSTM網(wǎng)絡(luò)的核心是細(xì)胞狀態(tài),在水平方向進(jìn)行操作。LSTM線性特征的交互較少,因此神經(jīng)網(wǎng)絡(luò)內(nèi)部蘊(yùn)含的信息更容易保持穩(wěn)態(tài)、波動更小。通過不同的“門”單元,LSTM 可以對細(xì)胞狀態(tài)內(nèi)部蘊(yùn)含的信息進(jìn)行增加或刪減。門本質(zhì)上是一種過濾函數(shù),有選擇地讓不同的信息通過本結(jié)構(gòu)。一個Sigmoid層的產(chǎn)出比例,用于控制每個輸入可通過門的程度。LSTM通過3種類型的門來操作細(xì)胞狀態(tài)。首先,LSTM決定需要被刪除的狀態(tài)信息。這個決定是依靠遺忘門來實現(xiàn)的,輸入是h(t-1)與x(t),sigmoid對其操作之后產(chǎn)生一個0~1間的數(shù)值,描述其移除或者保留的程度。遺忘門操作之后,LSTM通過一個兩步步驟決定何種細(xì)胞狀態(tài)被加入,即sigmoid層得到的更新比例與tanh層的輸出C相乘,操作后得到所需的輸入值。將舊的細(xì)胞狀態(tài)C(t-1)與ft 相乘,通過遺忘門,加上輸入門的結(jié)果就得到了新的細(xì)胞狀態(tài)。最后,輸出門仍然首先使用sigmoid 層細(xì)胞狀態(tài)的輸出位置。之后細(xì)胞狀態(tài)使用tanh函數(shù)歸一化輸出值,與sigmoid輸出相乘后,最終結(jié)果添加進(jìn)隱藏狀態(tài)[3]。
相比于傳統(tǒng)的Elman-RNN 和Jordan-RNN,LSTM長距離信息處理能力更為強(qiáng)大,緩解了長序列條件下的梯度問題。在序列標(biāo)注任務(wù)中,多采用CRF 層取代雙向LSTM的softmax輸出層,其中雙向LSTM并不會直接輸出模型預(yù)測的標(biāo)簽,而是將待標(biāo)記對象對應(yīng)所有備選標(biāo)簽的概率輸出至CRF 層,采用全局歸一化的方法,在整個句子級別進(jìn)行建模。有效解決了原有模型的標(biāo)記偏置問題。對于給定一條非結(jié)構(gòu)化文本序列X,假設(shè)其所對應(yīng)的標(biāo)簽序列即網(wǎng)絡(luò)輸出的目標(biāo)序列為y,則可以計算雙向LSTM 層的輸出分值、整個網(wǎng)絡(luò)得到的目標(biāo)序列y 的概率,使得對數(shù)概率達(dá)到極大值而得到序列結(jié)果[4]。
將CRF和雙向LSTM結(jié)合后,模型由輸入層、隱含層和CRF回歸層構(gòu)成。第一層實現(xiàn)文本數(shù)據(jù)向計算機(jī)可處理的向量矩陣的轉(zhuǎn)換。該層通過Glove工具,基于訓(xùn)練好的模型將基于字的直接向量表示的高維稀疏向量轉(zhuǎn)變?yōu)榭捎嬎阍~間關(guān)系的低維稠密向量。第二層是隱藏層(BiLSTM層),實現(xiàn)對文本語句特征的提取。該層由兩個LSTM層組成,根據(jù)處理向量序列次序不同分為向前展開的層和向后展開的層,前者用于抽取上文信息,后者用于從相反方向提取下文蘊(yùn)含的信息。第三層是輸出層,在BiLSTM網(wǎng)絡(luò)的輸出層中為每一個輸入的數(shù)據(jù)打一個標(biāo)簽的預(yù)測分值,接著在輸出層的后面添加CRF層,用于通過序列標(biāo)注增肌文本的相關(guān)程度。在此三層網(wǎng)絡(luò)模型的基礎(chǔ)上,該文結(jié)合多重Regex策略,編寫針對性regex和大類泛化regex對模型進(jìn)行外部知識融合,在醫(yī)療機(jī)構(gòu)執(zhí)業(yè)許可、民辦學(xué)校辦學(xué)許可、營業(yè)執(zhí)照、各類型法人登記、外國企業(yè)常駐代表機(jī)構(gòu)登記、各類型單位登記、統(tǒng)一信用代碼證書等多類證書證件識別任務(wù)上取得了超越目前商業(yè)識別接口的效果。
集成學(xué)習(xí)(Ensemble learning)作為機(jī)器學(xué)習(xí)的分支通過對多個子學(xué)習(xí)器(也稱為基分類器)進(jìn)行集成操作(Ensemble),通過特定的學(xué)習(xí)算法集成得到整體學(xué)習(xí)器,其效果通常比單個子學(xué)習(xí)器好。Boosting是集成的一種思路。Boosting本質(zhì)上是分類算法,通過訓(xùn)練強(qiáng)化弱分類器以提升效果。
Boosting將多個子分類器線性組合,該文選取梯度提升策略進(jìn)行集成。XGBoost(極限梯度提升)將較為廣泛使用的GBDT 策略進(jìn)行了改進(jìn),有多種優(yōu)點。首先,XGBoost 實現(xiàn)正則化提升,在處理過擬合問題方面性能較好。其次,XGBoost 納入了二階導(dǎo)數(shù)進(jìn)行優(yōu)化過程,大幅度提升了最優(yōu)解求解效率。另外,XBGoost可以自動化地處理缺失值。同時,XGBoost 靈活性很強(qiáng),優(yōu)化策略和評價策略的用戶自定義程度高。
大多數(shù)證件信息的含有更多的時間和地點信息,為了減少模型對時間等字段的識別偏好,糾正模型將機(jī)構(gòu)信息識別時間信息[5-6],該文使用基于機(jī)器學(xué)習(xí)的分類方法對時間和單位信息再矯正,使用基于XGBoost的證件信息再分類方法,以序列標(biāo)注模型識別出的時間、機(jī)構(gòu)名稱、性質(zhì)、地址、負(fù)責(zé)人、發(fā)證單位6 類信息,作為最小分類單位,提取待分類對象的語言學(xué)特征,使用XGBoost判斷該信息所屬類別,以期對不常見及一些極端樣本處理能力較強(qiáng)。
該文使用的雙向LSTM結(jié)合CRF的模型,在抽取結(jié)果上達(dá)到了最前沿的效果,結(jié)合基于集成學(xué)習(xí)的分類矯正策略與Regex融合,在醫(yī)療機(jī)構(gòu)執(zhí)業(yè)許可證以及營業(yè)執(zhí)照等10個典型證件的識別任務(wù)上取得了超越商業(yè)級接口的效果,在多種領(lǐng)域具有廣泛的應(yīng)用前景,如企業(yè)信息采編過程自動化,應(yīng)用于企業(yè)銀行開戶、抵押貸款等金融服務(wù)場景,大幅度提升信息錄入效率,應(yīng)用于平臺式商業(yè)模式,實現(xiàn)商戶信息增刪自動化等。