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