OCR技術簡介

光學字符識別(Optical Character Recognition, OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。亦即將圖像中的文字進行識別,並以文本的形式返回。

OCR的應用場景

根據識別場景,可大致將OCR分爲識別特定場景的專用OCR和識別多種場景的通用OCR。比如現今方興未艾的證件識別和車牌識別就是專用OCR的典型實例。通用OCR可以用於更復雜的場景,也具有更大的應用潛力。但由於通用圖片的場景不固定,文字佈局多樣,因此難度更高。根據所識別圖片的內容,可將場景分爲清晰且具有固定模式的簡單場景和更爲複雜的自然場景。自然場景文本識別的難度極高,原因包括:圖片背景極爲豐富,經常面臨低亮度、低對比度、光照不均、透視變形和殘缺遮擋等問題,而且文本的佈局可能存在扭曲、褶皺、換向等問題,其中的文字也可能字體多樣、字號字重顏色不一的問題。因此自然場景中的文字識別技術,也經常被單列爲場景文字識別技術(Scene Text Recognition, STR),相關內容可回顧往期SigAI的文章。

OCR的技術路線

典型的OCR的技術路線如下圖所示

其中影響識別準確率的技術瓶頸是文字檢測和文本識別,而這兩部分也是OCR技術的重中之重。

在傳統OCR技術中,圖像預處理通常是針對圖像的成像問題進行修正。常見的預處理過程包括:幾何變換(透視、扭曲、旋轉等)、畸變校正、去除模糊、圖像增強和光線校正等

文字檢測即檢測文本的所在位置和範圍及其佈局。通常也包括版面分析和文字行檢測等。文字檢測主要解決的問題是哪裏有文字,文字的範圍有多大。

文本識別是在文本檢測的基礎上,對文本內容進行識別,將圖像中的文本信息轉化爲文本信息。文字識別主要解決的問題是每個文字是什麼。識別出的文本通常需要再次覈對以保證其正確性。文本校正也被認爲屬於這一環節。而其中當識別的內容是由詞庫中的詞彙組成時,我們稱作有詞典識別(Lexicon-based),反之稱作無詞典識別(Lexicon-free)

圖像預處理

傳統OCR基於數字圖像處理和傳統機器學習等方法對圖像進行處理和特徵提取。常用的二值化處理有利於增強簡單場景的文本信息,但對於複雜背景二值化的收效甚微。

傳統方法上採用HoG對圖像進行特徵提取,然而HoG對於圖像模糊、扭曲等問題魯棒性很差,對於複雜場景泛化能力不佳。由於深度學習的飛速發展,現在普遍使用基於CNN的神經網絡作爲特徵提取手段。得益於CNN強大的學習能力,配合大量的數據可以增強特徵提取的魯棒性,面臨模糊、扭曲、畸變、複雜背景和光線不清等圖像問題均可以表現良好的魯棒性。[1]

基於CNN(LeNet-5)的文字識別[1]

文字檢測

對於文字檢測任務,很自然地可以想到套用圖像檢測的方法來框選出圖像中的文本區域。常見的一些物體檢測方法如下:

Faster R-CNN Faster R-CNN採用輔助生成樣本的RPN(Region Proposal Networks)網絡,將算法結構分爲兩個部分,先由RPN 網絡判斷候選框是否爲目標,再經分類定位的多任務損失判斷目標類型,整個網絡流程都能共享卷積神經網絡提取的的特徵信息,節約計算成本,且解決Fast R-CNN 算法生成正負樣本候選框速度慢的問題,同時避免候選框提取過多導致算法準確率下降。對於受限場景的文字檢測,Faster R-CNN的表現較爲出色。可以通過多次檢測確定不同粒度的文本區域。[2]

Faster R-CNN的網絡結構[2]

FCN 相較於Faster R-CNN 算法只能計算ROI pooling 層之前的卷積網絡特徵參數,R-FCN 算法提出一種位置敏感分佈的卷積網絡代替ROI pooling 層之後的全連接網絡,解決了Faster R-CNN 由於ROI Pooling 層後面的結構需要對每一個樣本區域跑一次而耗時比較大的問題,使得特徵共享在整個網絡內得以實現,解決物體分類要求有平移不變性和物體檢測要求有平移變化的矛盾,但是沒有考慮到候選區域的全局信息和語義信息。[3]所以當面對自然場景的通用OCR,適於多尺度檢測的FCN較之Faster R-CNN有着更好的表現。當採用FCN時,輸出的掩膜可以作爲前景文字的二值圖像進行輸出。

FCN的網絡結構[3]

但是與其他日常場景的物體檢測所不同的是,文字圖像的分佈更接近於均勻分佈而非正態分佈,即文字總體的均值圖像並不能體現文字這一抽象概念的特徵。除此之外,文字的長寬比與物體的長寬比不同,導致候選錨定框不適用;文字的方向仍然不能確定,對非垂直的文字方向表現佳;自然場景中常出現一些結構與文字非常接近,導致假陽性率升高。因此需要對現有模型進行調整。

一種常見的做法是調整候選錨定框,例如

RRPN (Rotation Region Proposal Networks)在faster R-CNN的基礎上,將垂直的候選錨定框進行旋轉滿足非垂直文本的檢測,這樣一來就可以滿足非垂直文字的檢測需求。[4]

RRPN的網絡結構[4]

TextBoxes是基於SSD改進的一個算法。調整了錨定框的長寬比,以適應文字的高長寬比。輸出層也利用了利用非標準的卷積核。更適應文字細長的寬高比這一特點。[5]而

TextBoxes的網絡結構[5]

DMPNet (Deep Matching Prior Network)採用非矩形四邊形的候選錨定框進行檢測。通過Monte-Carlo方法計算標註區域與矩形候選框和旋轉候選框的重合度後重新計算頂點座標,得到非矩形四邊形的頂點座標。[6]

DMPNet生成候選錨定框的示意圖[6]

另一種改進的方法是通過自底向頂的方法,檢測細粒度文本後將其連接成更粗粒度的文本

CTPN(Connectionist Text Proposal Network)是目前應用最廣的文本檢測模型之一。其基本假設是單個字符相較於異質化程度更高的文本行更容易被檢測,因此先對單個字符進行類似R-CNN的檢測。之後又在檢測網絡中加入了雙向LSTM,使檢測結果形成序列提供了文本的上下文特徵,便可以將多個字符進行合併得到文本行。[7]

CTPN的網絡結構[7]

SegLink則是在SSD的啓發下得出的。採用臨近連接的方法對上下文進行連接。並且通過將連接參數的學習整合進了神經網絡的學習過程,使得模型更容易訓練。[8]

SegLink的網絡結構[8]

有一些研究引入了注意力機制,如下圖模型採用Dense Attention模型來對圖像的權重進行評估。這樣有利於將前景圖像和背景圖像分離,對於文本內容較之背景圖像有着更高的注意力,使檢測結果更準確。[9]

基於注意力機制文本檢測的網絡結構[9]

文本識別

文本識別在傳統技術中採用模板匹配的方式進行分類。但是對於文字行,只能通過識別出每一個字符來確定最終文字行從內容。因此可以對文字行進行字符切分,以得到單個文字。這種方式中,過分割-動態規劃是最常見的切分方法。由於單個字符可能會由於切分位置的原因產生多個識別結果,例如“如”字在切分不當時會被切分成“女_口”,因此需要對候選字符進行過分割,使其足夠破碎,之後通過動態規劃合併分割碎片,得到最優組合,這一過程需要人工設計損失函數。還有另一種方法是通過滑動窗口對每一個可能的字符進行匹配,這種方法的準確率依賴於滑動窗口的滑動窗尺寸,如果滑動窗尺寸過大會造成信息丟失,而太小則會使計算力需求大幅增加。

以上的傳統方法通過識別每個單字符以實現全文的識別,這一過程導致了上下文信息的丟失,對於單個字符有較高的識別正確率,其條目識別正確率也難以保證。以身份證識別爲例,識別18位的身份號的場景下,即使單字符識別正確率高達99%,其條目正確率只能到0.9918=83%,如果切分也存在1%的損失(即正確率99%),條目正確率則只有(0.99*0.99)18=70%。

因此引入上下文的信息,成爲了提升條目準確率的關鍵。從深度學習的角度出發,要引入上下文這樣的序列信息,RNN和LSTM等依賴於時序關係的神經網絡是最理想的選擇。

CNN+Softmax CNN+RNN+CTC CNN+RNN+Attention機制

幾種典型的文本識別網絡結構

常見的一種做法是利用CRNN模型。以CNN特徵作爲輸入,雙向LSTM進行序列處理使得文字識別的效率大幅提升,也提升了模型的泛化能力。先由分類方法得到特徵圖,之後通過CTC對結果進行翻譯得到輸出結果。[10]

CRNN的網絡結構[10]

另一種方法是引入注意力機制。以CNN特徵作爲輸入,通過注意力模型對RNN的狀態和上一狀態的注意力權重計算出新一狀態的注意力權重。之後將CNN特徵和權重輸入RNN,通過編碼和解碼得到結果。[11]

Attention OCR的網絡結構[11]

端到端的OCR

與檢測-識別的多階段OCR不同,深度學習使端到端的OCR成爲可能,將文本的檢測和識別統一到同一個工作流中。目前比較受到矚目的一種端到端框架叫做FOTS(Fast Oriented Text Spotting)。FOTS的檢測任務和識別任務共享卷積特徵圖。一方面利用卷積特徵進行檢測,另一方面引入了RoIRotate,一種用於提取定向文本區域的算符。得到文本候選特徵後,將其輸入到RNN編碼器和CTC解碼器中進行識別。同時,由於所有算符都是可微的,因此端到端的網絡訓練成爲可能。由於簡化了工作流,網絡可以在極低運算開銷下進行驗證,達到實時速度。[12]

FOTS的總體結構[12]

總結

儘管基於深度學習的OCR表現相較於傳統方法更爲出色,但是深度學習技術仍需要在OCR領域進行特化,而其中的關鍵正式傳統OCR方法的精髓。因此我們仍需要從傳統方法中汲取經驗,使其與深度學習有機結合進一步提升OCR的性能表現。另一方面,作爲深度學習的推動力,數據起到了至關重要的作用,因此收集廣泛而優質的數據也是現階段OCR性能的重要舉措之一。

參考文獻

[1] Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998,86(11):2278-2324.

[2] Ren S, Girshick R, Girshick R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Trans Pattern Anal Mach Intell, 2015,39(6):1137-1149.

[3] Lin T Y, Dollar P, Girshick R, et al. Feature Pyramid Networks for Object Detection[J]. 2016:936-944.

[4] Ma J, Shao W, Ye H, et al. Arbitrary-Oriented Scene Text Detection via Rotation Proposals[J]. IEEE Transactions on Multimedia, 2017,PP(99):1.

[5] Liao M, Shi B, Bai X, et al. TextBoxes: A Fast Text Detector with a Single Deep Neural Network[J]. 2016.

[6] Liu Y, Jin L. Deep Matching Prior Network: Toward Tighter Multi-oriented Text Detection[C]//: IEEE Conference on Computer Vision and Pattern Recognition, 2017.

[7] Tian Z, Huang W, He T, et al. Detecting Text in Natural Image with Connectionist Text Proposal Network[C]//: European Conference on Computer Vision, 2016.

[8] Shi B, Bai X, Belongie S. Detecting Oriented Text in Natural Images by Linking Segments[J]. 2017:3482-3490.

[9] Gao Y, Chen Y, Wang J, et al. Reading Scene Text with Attention Convolutional Sequence Modeling[J]. 2017.

[10] Shi B, Bai X, Yao C. An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2016,39(11):2298-2304.

[11] Wojna Z, Gorban A N, Lee D S, et al. Attention-Based Extraction of Structured Information from Street View Imagery[J]. 2017:844-850.

[12] Liu X, Liang D, Yan S, et al. FOTS: Fast Oriented Text Spotting with a Unified Network[J]. 2018.

推薦閱讀

[1]機器學習-波瀾壯闊40年【獲取碼】SIGAI0413.

[2]學好機器學習需要哪些數學知識?【獲取碼】SIGAI0417.

[3] 人臉識別算法演化史【獲取碼】SIGAI0420.

[4]基於深度學習的目標檢測算法綜述 【獲取碼】SIGAI0424.

[5]卷積神經網絡爲什麼能夠稱霸計算機視覺領域?【獲取碼】SIGAI0426.

[6] 用一張圖理解SVM的脈絡【獲取碼】SIGAI0428.

[7] 人臉檢測算法綜述【獲取碼】SIGAI0503.

[8] 理解神經網絡的激活函數 【獲取碼】SIGAI2018.5.5.

[9] 深度卷積神經網絡演化歷史及結構改進脈絡-40頁長文全面解讀【獲取碼】SIGAI0508.

[10] 理解梯度下降法【獲取碼】SIGAI0511.

[11] 循環神經網絡綜述—語音識別與自然語言處理的利器【獲取碼】SIGAI0515

[12] 理解凸優化 【獲取碼】 SIGAI0518

[13] 【實驗】理解SVM的核函數和參數 【獲取碼】SIGAI0522

[14]【SIGAI綜述】行人檢測算法 【獲取碼】SIGAI0525

[15] 機器學習在自動駕駛中的應用—以百度阿波羅平臺爲例(上)【獲取碼】SIGAI0529

[16]理解牛頓法【獲取碼】SIGAI0531

[17] 【羣話題精華】5月集錦—機器學習和深度學習中一些值得思考的問題【獲取碼】SIGAI 0601

[18] 大話Adaboost算法 【獲取碼】SIGAI0602

[19] FlowNet到FlowNet2.0:基於卷積神經網絡的光流預測算法【獲取碼】SIGAI0604

[20] 理解主成分分析(PCA)【獲取碼】SIGAI0606

[21] 人體骨骼關鍵點檢測綜述 【獲取碼】SIGAI0608

[22]理解決策樹 【獲取碼】SIGAI0611

[23] 用一句話總結常用的機器學習算法【獲取碼】SIGAI0611

[24] 目標檢測算法之YOLO 【獲取碼】SIGAI0615

[25] 理解過擬合 【獲取碼】SIGAI0618

[26]理解計算:從√2到AlphaGo ——第1季 從√2談起 【獲取碼】SIGAI0620

[27] 場景文本檢測——CTPN算法介紹 【獲取碼】SIGAI0622

[28] 卷積神經網絡的壓縮和加速 【獲取碼】SIGAI0625

[29] k近鄰算法 【獲取碼】SIGAI0627

[30]自然場景文本檢測識別技術綜述 【獲取碼】SIGAI0627

[31] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0704

[32] 機器學習算法地圖【獲取碼】SIGAI0706

[33] 反向傳播算法推導-全連接神經網絡【獲取碼】SIGAI0709

[34] 生成式對抗網絡模型綜述【獲取碼】SIGAI0709.

[35]怎樣成爲一名優秀的算法工程師【獲取碼】SIGAI0711.

[36] 理解計算:從根號2到AlphaGo——第三季 神經網絡的數學模型【獲取碼】SIGAI0716

[37]【技術短文】人臉檢測算法之S3FD 【獲取碼】SIGAI0716

[38] 基於深度負相關學習的人羣計數方法【獲取碼】SIGAI0718

[39] 流形學習概述【獲取碼】SIGAI0723

[40] 關於感受野的總結 【獲取碼】SIGAI0723

[41] 隨機森林概述 【獲取碼】SIGAI0725

[42] 基於內容的圖像檢索技術綜述——傳統經典方法【獲取碼】SIGAI0727

[43] 神經網絡的激活函數總結【獲取碼】SIGAI0730

[44] 機器學習和深度學習中值得弄清楚的一些問題【獲取碼】SIGAI0802

[45] 基於深度神經網絡的自動問答系統概述【獲取碼】SIGAI0803

[46] 反向傳播算法推導——卷積神經網絡 【獲取碼】SIGAI0806

[47] 機器學習與深度學習核心知識點總結 寫在校園招聘即將開始時 【獲取 碼】SIGAI0808

[48] 理解Spatial Transformer Networks【獲取碼】SIGAI0810

[49]AI時代大點兵-國內外知名AI公司2018年最新盤點【獲取碼】SIGAI0813

[50] 理解計算:從√2到AlphaGo ——第2季 神經計算的歷史背景 【獲取碼】SIGAI0815

[51] 基於內容的圖像檢索技術綜述--CNN方法 【獲取碼】SIGAI0817

[52]文本表示簡介 【獲取碼】SIGAI0820

[53]機器學習中的最優化算法總結【獲取碼】SIGAI0822

[54]【AI就業面面觀】如何選擇適合自己的舞臺?【獲取碼】SIGAI0823

[55]濃縮就是精華-SIGAI機器學習藍寶書【獲取碼】SIGAI0824

[56]DenseNet詳解【獲取碼】SIGAI0827

[57]AI時代大點兵國內外知名AI公司2018年最新盤點【完整版】【獲取碼】SIGAI0829

[58]理解Adaboost算法【獲取碼】SIGAI0831

[59]深入淺出聚類算法 【獲取碼】SIGAI0903

[60]機器學習發展歷史回顧【獲取碼】SIGAI0905

[61] 網絡表徵學習綜述【獲取碼】SIGAI0907

[62] 視覺多目標跟蹤算法綜述(上) 【獲取碼】SIGAI0910

[63] 計算機視覺技術self-attention最新進展 【獲取碼】SIGAI0912

[64] 理解Logistic迴歸 【獲取碼】SIGAI0914

[65] 機器學習中的目標函數總結 【獲取碼】SIGAI0917

[66] 人臉識別中的活體檢測算法綜述【獲取碼】SIGAI0919

[67] 機器學習與深度學習常見面試題(上)【獲取碼】SIGAI0921

[68] 淺談動作識別TSN,TRN,ECO 【獲取碼】SIGAI0924

原創聲明:本文爲 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章