https://tech.meituan.com/deep_learning_ocr.html
背景
計算機視覺是利用攝像機和電腦代替人眼,使得計算機擁有類似於人類的對目標進行檢測、識別、理解、跟蹤、判別決策的功能。以美團業務為例,在商家上單、團單展示、消費評價等多個環節都會涉及計算機視覺的應用,包括文字識別、圖片分類、目標檢測和圖像質量評價等方向。本文將通過以OCR(光學字符識別)的場景來介紹深度學習在計算機視覺中的應用。
基於深度學習的OCR
文字是不可或缺的視覺信息來源。相對於圖像/視頻中的其他內容,文字往往包含更強的語義信息,因此對圖像中的文字提取和識別具有重大意義。OCR在美團業務中主要起着兩方面作用。一方面是輔助錄入,比如在移動支付環節通過對銀行卡卡號的拍照識別以實現自動綁卡,輔助運營錄入菜單中菜品信息,在配送環節通過對商家小票的識別以實現調度核單,如圖1所示。另一方面是審核校驗,比如在商家資質審核環節對商家上傳的身份證、營業執照和餐飲許可證等證件照片進行信息提取和核驗以確保該商家的合法性,機器過濾商家上單和用戶評價環節產生的包含違禁詞的圖片。

OCR技術發展歷程
傳統的OCR基於圖像處理(二值化、連通域分析、投影分析等)和統計機器學習(Adaboost、SVM),過去20年間在印刷體和掃描文檔上取得了不錯的效果。傳統的印刷體OCR解決方案整體流程如圖2所示。

從輸入圖像到給出識別結果經歷了圖像預處理、文字行提取和文字行識別三個階段。其中文字行提取的相關步驟(版面分析、行切分)會涉及大量的先驗規則,而文字行識別主要基於傳統的機器學習方法。隨着移動設備的普及,對拍攝圖像中的文字提取和識別成為主流需求,同時對場景中文字的識別需求越來越突出。因此,相比於印刷體場景,拍照文字的識別將面臨以下三方面挑戰:
- 成像復雜。噪聲、模糊、光線變化、形變。
- 文字復雜。字體、字號、色彩、磨損、筆畫寬度任意、方向任意。
- 場景復雜。版面缺失、背景干擾。
對於上述挑戰,傳統的OCR解決方案存在着以下不足:
- 通過版面分析(連通域分析)和行切分(投影分析)來生成文本行,要求版面結構有較強的規則性且前背景可分性強(例如黑白文檔圖像、車牌),無法處理前背景復雜的隨意文字(例如場景文字、菜單、廣告文字等)。另外,二值化操作本身對圖像成像條件和背景要求比較苛刻。
- 通過人工設計邊緣方向特征(例如方向梯度直方圖)來訓練字符識別模型,在字體變化、模糊或背景干擾時,此類單一的特征的泛化能力迅速下降。
- 過度依賴於字符切分的結果,在字符扭曲、粘連、噪聲干擾的情況下,切分的錯誤傳播尤其突出。
- 盡管圖像預處理模塊可有效改善輸入圖像的質量,但多個獨立的校正模塊的串聯必然帶來誤差傳遞。另外由於各模塊優化目標獨立,它們無法融合到統一的框架中進行。
為了解決上述問題,現有技術在以下三方面進行了改進。
1.文字行提取
傳統OCR(如圖3所示)采取自上而下的切分式,但它只適用於版面規則背景簡單的情況。該領域還有另外兩類思路。
- 自底向上的生成式方法。該類方法通過連通域分析或最大穩定極值區域(MSER)等方法提取候選區域,然后通過文字/非文字的分類器進行區域篩選,對篩選后的區域進行合並生成文字行,再進行文字行級別的過濾,如圖3所示。該類方法的不足是,一方面流程冗長導致的超參數過多,另一方面無法利用全局信息。

- 基於滑動窗口的方法。該類方法利用通用目標檢測的思路來提取文字行信息,利用訓練得到的文字行/詞語/字符級別的分類器來進行全圖搜索。原始的基於滑動窗口方法通過訓練文字/背景二分類檢測器,直接對輸入圖像進行多尺度的窗口掃描。檢測器可以是傳統機器學習模型(Adaboost、Random Ferns),也可以是深度卷積神經網絡。
為了提升效率,DeepText、TextBoxes等方法先提取候選區域再進行區域回歸和分類,同時該類方法可進行端到端訓練,但對多角度和極端寬高比的文字區域召回低。
2.傳統單字識別引擎→基於深度學習的單字識別引擎
由於單字識別引擎的訓練是一個典型的圖像分類問題,而卷積神經網絡在描述圖像的高層語義方面優勢明顯,所以主流方法是基於卷積神經網絡的圖像分類模型。實踐中的關鍵點在於如何設計網絡結構和合成訓練數據。對於網絡結構,我們可以借鑒手寫識別領域相關網絡結構,也可采用OCR領域取得出色效果的Maxout網絡結構,如圖4所示。對於數據合成,需考慮字體、形變、模糊、噪聲、背景變化等因素。

表1給出了卷積神經網絡的特征學習和傳統特征的性能比較,可以看出通過卷積神經網絡學習得到的特征鑒別能力更強。

3.文字行識別流程
傳統OCR將文字行識別划分為字符切分和單字符識別兩個獨立的步驟,盡管通過訓練基於卷積神經網絡的單字符識別引擎可以有效提升字符識別率,但切分對於字符粘連、模糊和形變的情況的容錯性較差,而且切分錯誤對於識別是不可修復的。因此在該框架下,文本行識別的准確率主要受限於字符切分。假設已訓練單字符識別引擎的准確率p=99%,字符切分准確率為q= 95%,則對於一段長度為L的文字行,其識別的平均准確率為P= (pq)的L次方,其中L=10時,P=54.1%。
由於獨立優化字符切分提升空間有限,因此有相關方法試圖聯合優化切分和識別兩個任務。現有技術主要可分為基於切分的方法(Segmentation-Based)和不依賴切分的方法(Segmentation-
Free)兩類方法。
- 基於切分的方法
該類方法還是保留主動切分的步驟,但引入了動態合並機制,通過識別置信度等信息來指導切分,如圖5所示。

過切分模塊將文字行在垂直於基線方向上分割成碎片,使得其中每個碎片至多包含一個字符。通常來說,過切分模塊會將字符分割為多個連續筆划。過切分可以采用基於規則或機器學習的方法。規則方法主要是直接在圖像二值化的結果上進行連通域分析和投影分析來確定候補切點位置,通過調整參數可以控制粒度來使得字符盡可能被切碎。基於規則的方法實現簡單,但在成像/背景復雜的條件下其效果不好。機器學習方法通過離線訓練鑒別切點的二類分類器,然后基於該分類器在文字行圖像上進行滑窗檢測。
動態合並模塊將相鄰的筆划根據識別結果組合成可能的字符區域,最優組合方式即對應最佳切分路徑和識別結果。直觀來看,尋找最優組合方式可轉換為路徑搜索問題,對應有深度優先和廣度優先兩種搜索策略。深度優先策略在每一步選擇擴展當前最優的狀態,因此全局來看它是次優策略,不適合過長的文字行。廣度優先策略在每一步會對當前多個狀態同時進行擴展,比如在語音識別領域廣泛應用的Viterbi解碼和Beam Search。但考慮到性能,Beam Search通常會引入剪枝操作來控制路徑長度,剪枝策略包含限制擴展的狀態數(比如,每一步只擴展TopN的狀態)和加入狀態約束(比如,合並后字符形狀)等。
由於動態合並會產生多個候選路徑,所以需要設計合適的評價函數來進行路徑選擇。評價函數的設計主要從路徑結構損失和路徑識別打分兩方面出發。路徑結構損失主要從字符形狀特征方面衡量切分路徑的合理性,路徑識別打分則對應於特定切分路徑下的單字平均識別置信度和語言模型分。
該方案試圖將字符切分和單字符識別融合在同一個框架下解決,但由於過分割是獨立的步驟,因此沒有從本質上實現端到端學習。
- 不依賴切分的方法
該類方法完全跨越了字符切分,通過滑動窗口或序列建模直接對文字行進行識別。
滑窗識別借鑒了滑動窗口檢測的思路,基於離線訓練的單字識別引擎,對文字行圖像從左到右進行多尺度掃描,以特定窗口為中心進行識別。在路徑決策上可采用貪心策略或非極大值抑制(NMS)策略來得到最終的識別路徑。圖6給出了滑窗識別的示意流程。可見滑窗識別存在兩個問題:滑動步長的粒度過細則計算代價大,過粗則上下文信息易丟失;無論采用何種路徑決策方案,它們對單字識別的置信度依賴較高。

序列學習起源於手寫識別、語音識別領域,因為這類問題的共同特點是需要對時序數據進行建模。盡管文字行圖像是二維的,但如果把從左到右的掃描動作類比為時序,文字行識別從本質上也可歸為這類問題。通過端到端的學習,摒棄矯正/切分/字符識別等中間步驟,以此提升序列學習的效果,這已經成為當前研究的熱點。
基於現有技術和美團業務涉及的OCR場景,我們在文字檢測和文字行識別采用如圖7所示的深度學習框架。

后面將分別介紹文字檢測和文字行識別這兩部分的具體方案。
基於深度學習的文字檢測
對於美團的OCR場景,根據版面是否有先驗信息(卡片的矩形區域、證件的關鍵字段標識)以及文字自身的復雜性(如水平文字、多角度),圖像可划分為受控場景(如身份證、營業執照、銀行卡)和非受控場景(如菜單、門頭圖),如圖8所示。

考慮到這兩類場景的特點不同,我們借鑒不同的檢測框架。由於受控場景文字諸多約束條件可將問題簡化,因此利用在通用目標檢測領域廣泛應用的Faster R-CNN框架進行檢測。而對於非受控場景文字,由於形變和筆畫寬度不一致等原因,目標輪廓不具備良好的閉合邊界,我們需要借助圖像語義分割來標記文字區域與背景區域。
1.受控場景的文字檢測
對於受控場景(如身份證),我們將文字檢測轉換為對關鍵字目標(如姓名、身份證號、地址)或關鍵條目(如銀行卡號)的檢測問題。基於Faster R-CNN的關鍵字檢測流程如圖9所示。為了保證回歸框的定位精度,同時提升運算速度,我們對原有框架和訓練方式進行了微調。
- 考慮到關鍵字或關鍵條目的類內變化有限,網絡結構只采用了3個卷積層。
- 訓練過程中提高正樣本的重疊率閾值。
- 根據關鍵字或關鍵條目的寬高比范圍來適配RPN層Anchor的寬高比。

Faster R-CNN框架由RPN(候選區域生成網絡)和RCN(區域分類網絡)兩個子網絡組成。RPN通過監督學習的方法提取候選區域,給出的是無標簽的區域和粗定位結果。RCN引入類別概念,同時進行候選區域的分類和位置回歸,給出精細定位結果。訓練時兩個子網絡通過端到端的方式聯合優化。圖10以銀行卡卡號識別為例,給出了RPN層和RCN層的輸出。

對於人手持證件場景,由於證件目標在圖像中所占比例過小,直接提取微小候選目標會導致一定的定位精度損失。為了保證高召回和高定位精度,可采用由粗到精的策略進行檢測。首先定位卡片所在區域位置,然后在卡片區域范圍內進行關鍵字檢測,而區域定位也可采用Faster R-CNN框架,如圖11所示。

- 非受控場景的文字檢測
對於菜單、門頭圖等非受控場景,由於文字行本身的多角度且字符的筆畫寬度變化大,該場景下的文字行定位任務挑戰很大。由於通用目標檢測方法的定位粒度是回歸框級,此方法適用於剛體這類有良好閉合邊界的物體。然而文字往往由一系列松散的筆畫構成,尤其對於任意方向或筆畫寬度的文字,僅以回歸框結果作為定位結果會有較大偏差。另外剛體檢測的要求相對較低,即便只定位到部分主體(如定位結果與真值的重疊率是50%),也不會對剛體識別產生重大影響,而這樣的定位誤差對於文字識別則很可能是致命的。
為了實現足夠精細的定位,我們利用語義分割中常用的全卷積網絡(FCN)來進行像素級別的文字/背景標注,整體流程如圖12所示。

多尺度全卷積網絡通過對多個階段的反卷積結果的融合,實現了全局特征和局部特征的聯合,進而達到了由粗到精的像素級別標注,適應於任意非受控場景(門頭圖、菜單圖片)。
基於多尺度全卷積網絡得到的像素級標注,通過連通域分析技術可得到一系列連通區域(筆划信息)。但由於無法確定哪些連通域屬於同一文字行,因此需要借助單鏈聚類技術來進行文字行提取。至於聚類涉及的距離度量,主要從連通域間的距離、形狀、顏色的相似度等方面提取特征,並通過度量學習自適應地得到特征權重和閾值,如圖13所示。

圖14分別給出了在菜單和門頭圖場景中的全卷積網絡定位效果。第二列為全卷積網絡的像素級標注結果,第三列為最終文字檢測結果。可以看出,全卷積網絡可以較好地應對復雜版面或多角度文字定位。

基於序列學習的文字識別
我們將整行文字識別問題歸結為一個序列學習問題。利用基於雙向長短期記憶神經網絡(Bi-directional Long Short-term Memory,BLSTM)的遞歸神經網絡作為序列學習器,來有效建模序列內部關系。為了引入更有效的輸入特征,我們采用卷積神經網絡模型來進行特征提取,以描述圖像的高層語義。此外在損失函數的設計方面,考慮到輸出序列與輸入特征幀序列無法對齊,我們直接使用結構化的Loss(序列對序列的損失),另外引入了背景(Blank)類別以吸收相鄰字符的混淆性。
整體網絡結構分為三層:卷積層、遞歸層和翻譯層,如圖15所示。其中卷積層提取特征;遞歸層既學習特征序列中字符特征的先后關系,又學習字符的先后關系;翻譯層實現對時間序列分類結果的解碼。

對於輸入的固定高度h0= 36的圖像(寬度任意,如W0 = 248),我們通過CNN網絡結構提取特征,得到9×62×128的特征圖,可將其看作一個長度為62的時間序列輸入到RNN層。RNN層有400個隱藏節點,其中每個隱藏節點的輸入是9×128維的特征,是對圖像局部區域的描述。考慮到對應於某個時刻特征的圖像區域,它與其前后內容都具有較強的相關性,所以我們一般采用雙向RNN網絡,如圖16所示。

雙向RNN后接一個全連接層,輸入為RNN層(在某個時刻)輸出的特征圖,輸出為該位置是背景、字符表中文字的概率。全連接層后接CTC(聯結主義時間分類器)作為損失函數。在訓練時,根據每個時刻對應的文字、背景概率分布,得到真值字符串在圖像中出現的概率P(ground truth),將-log(P(ground truth))作為損失函數。在測試時,CTC可以看作一個解碼器,將每一時刻的預測結果(當前時刻的最大后驗概率對應的字符)聯合起來,然后去掉空白和重復的模式,就形成了最終的序列預測結果,如圖17所示。

從圖17中也可以看出,對應輸入序列中的每個字符,LSTM輸出層都會產生明顯的尖峰,盡管該尖峰未必對應字符的中心位置。換句話說,引入CTC機制后,我們不需要考慮每個字符出現的具體位置,只需關注整個圖像序列對應的文字內容,最終實現深度學習的端到端訓練與預測。
由於序列學習框架對訓練樣本的數量和分布要求較高,我們采用了真實樣本+合成樣本的方式。真實樣本以美團業務來源(例如,菜單、身份證、營業執照)為主,合成樣本則考慮了字體、形變、模糊、噪聲、背景等因素。
基於上述序列學習框架,我們給出了在不同場景下的文字行識別結果,如圖18所示。其中前兩行的圖片為驗證碼場景,第三行為銀行卡,第四行為資質證件,第五行為門頭圖,第六行為菜單。可以看到,識別模型對於文字形變、粘連、成像的模糊和光線變化、背景的復雜等都有較好的健壯性。

基於上述試驗,與傳統OCR相比,我們在多種場景的文字識別上都有較大幅度的性能提升,如圖19所示。

與傳統OCR相比,基於深度學習的OCR在識別率方面有了大幅上升。但對於特定的應用場景(營業執照、菜單、銀行卡等),條目准確率還有待提升。一方面需要融合基於深度學習的文字檢測與傳統版面分析技術,以進一步提升限制場景下的檢測性能。另一方面需要豐富真實訓練樣本和語言模型,以提升文字識別准確率。
參考文獻
[1] H. Chen, S. S. Tsai, G. Schroth, D. M. Chen, R. Grzeszczuk, and B. Girod. “Robust text detection in natural images with edge-enhanced maximally stable extremal regions.” ICIP 2011.
[2] Z Zhong,LJin,SZhang,ZFeng.“DeepText: A Unified Framework for Text Proposal Generation and Text Detection in Natural Images”. Architecture Science 2015.
[3] Minghui Liao, Baoguang Shi, Xiang Bai, Xinggang Wang, Wenyu Liu. “TextBoxes: A Fast Text Detector with a Single Deep Neural Network”. AAAI 2017.
[4] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn.“Towards real-time object detection with region proposal networks.” NIPS 2015.
[5] Graves, A.; Fernandez, S.; Gomez, F.; and Schmidhuber, J. “Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks.” ICML 2006.
[6] R Girshick,JDonahue,TDarrell,JMalik. “Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation.” CVPR 2014.
[7] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. “You only look once: Unified, real-time object detection”. CVPR 2016.
[8] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. Reed. “SSD: Single shot multibox detector”. ECCV 2016.
[9] “Object detection with discriminatively trained part-based models”. TPAMI 2010.
[10] Robust Real-time Object Detection. Paul Viola, Michael Jones. IJCV 2004.
[11] N. Markus, M. Frljak, I. S. Pandzic, J. Ahlberg and R. Forchheimer. “Object Detection with Pixel Intensity Comparisons Organized in Decision Trees”. CoRR 2014.
[12] Shengcai Liao, Anil K. Jain, and Stan Z. Li. “A Fast and Accurate Unconstrained Face Detector,” TPAMI 2015.
[13] Dong Chen, ShaoQingRen, Jian Sun. “Joint Cascade Face Detection and Alignment”, ECCV 2014.
[14] Haoxiang Li, Zhe Lin, XiaohuiShen, Jonathan Brandt, Gang Hua. “A convolutional neural network cascade for face detection”, CVPR.2015.
[15] Lichao Huang, Yi Yang, Yafeng Deng, Yinan Yu.“DenseBox: Unifying Landmark Localization with End to End Object Detection” CVPR 2015.
[16] Taigman Y, Yang M, Ranzato M A, et al. Deepface: Closing the gap to human-level performance in face verification.CVPR 2014.
[17] Sun Y, Wang X, Tang X. Deep learning face representation from predicting 10,000 classes.CVPR 2014.
[18] Sun Y, Chen Y, Wang X, et al. Deep learning face representation by joint identification-verification.NIPS. 2014.
[19] FaceNet: A Unified Embedding for Face Recognition and Clustering. CVPR 2015.
[20] A Discriminative Feature Learning Approach for Deep Face Recognition. ECCV 2016.
[21] Rethinking the Inception Architecture for Computer Vision. CVPR 2016.
[22] Alex Krizhevsky, IlyaSutskever, Geoffrey E. Hinton. “ImageNet Classification with Deep Convolutional Neural Networks”. 2014.
[23] Murray, N., Marchesotti, L., Perronnin, F. “Ava: A large-scale database for aesthetic visual analysis”. CVPR 2012.