OCR(Optical Character Recognition,光學(xué)字符識別)的概念早于1920年代便被提出,一直是模式識別領(lǐng)域中重要的研究方向。隨著電子設(shè)備的快速更新迭代,以及移動互聯(lián)網(wǎng)的快速發(fā)展,OCR有了更為廣泛應(yīng)用,從以前的掃描字符識別,到現(xiàn)在場景識別。
隨著深度學(xué)習(xí)的崛起,基于這一技術(shù)的OCR識別框架以另外一種新的思路迅速突破了原有的技術(shù)瓶頸(如文字定位、二值化和文字分割等),并已在工業(yè)界得到廣泛應(yīng)用。
傳統(tǒng)OCR技術(shù)框架主要分為五個步驟:
第一步:文本定位,接著進(jìn)行傾斜文本矯正;
第二步:分割出單字后,并對單字識別;
第三步:基于統(tǒng)計模型(如隱馬爾科夫鏈,HMM)進(jìn)行語義糾錯。
按處理方式劃分為三個階段:預(yù)處理階段、識別階段和后處理階段。其中關(guān)鍵在于預(yù)處理階段,預(yù)處理階段的質(zhì)量直接決定了最終的識別效果,因此這里詳細(xì)介紹下預(yù)處理階段。
預(yù)處理階段中包含了三步:
1、定位圖片中的文字區(qū)域,而文字檢測主要基于連通域分析的方法,主要是利用文字顏色、亮度、邊緣信息進(jìn)行聚類的方式來快速分離文字區(qū)域與非文字區(qū)域,較為流行的兩個算法分別是:
最大極值穩(wěn)定區(qū)域(MSER)算法及筆畫寬度變換(SWT)算法,而在自然場景中因受到光照強度、圖片拍攝質(zhì)量和類文字背景的干擾,使得檢測結(jié)果中包含非常多的非文字區(qū)域,而目前從候選區(qū)域區(qū)分出真正文字區(qū)域主要兩種方法,用規(guī)則判斷或輕量級的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行區(qū)分;
2、文本區(qū)域圖像矯正,主要基于旋轉(zhuǎn)變換和仿射變換;
3、行列分割提取出單字,這一步利用文字在行列間存在間隙的特征,通過二值化并在投影后找出行列分割點,當(dāng)在文字與背景的區(qū)分度較好時,效果很好,而拍攝的圖片中光照、攝像質(zhì)量的影響,并且文字背景難以區(qū)分時,常造成錯誤分割的情況。
目標(biāo)物體定位并矯正。基于現(xiàn)有的先驗信息,定位最后的方法為采用模板關(guān)鍵點特征匹配的方法,并利用模板上特征點及目標(biāo)圖像特征點坐標(biāo)之間的關(guān)系進(jìn)行透視變換,以定位目標(biāo)物體。接著,基于四角的坐標(biāo),進(jìn)行旋轉(zhuǎn)、仿射、尺寸的變換,并提取出目標(biāo)物體的俯視圖。
因文字位置相對固定,接著便分割出文字區(qū)域,二值化后,行列分割出單個字符。這里的技術(shù)難點在于二值化,二值化效果的好壞直接影響字符分割,并最終影響識別結(jié)果。受光照和拍攝質(zhì)量的影響,全局二值化難以設(shè)置統(tǒng)一的閾值,而自適應(yīng)二值化算法易受到陰影及模糊邊界的干擾。所以在這邊嘗試過許多方法,測試下來未發(fā)現(xiàn)在任何情形下效果都滿足要求的方法。
分割出單字后接著用分類器進(jìn)行識別,并在這步基于統(tǒng)計上的先驗信息定義了一個簡單的優(yōu)化函數(shù),可看做1-gram語言模型。先驗信息為:2400(總共660273)漢字的使用頻率之和為99%以上。定義的優(yōu)化函數(shù)為:
傳統(tǒng)OCR冗長的處理流程以及大量人工規(guī)則的存在,使得每步的錯誤不斷累積,而使得最終識別結(jié)果難以滿足實際需求。接下來討論基于深度學(xué)習(xí)的OCR。
基于深度學(xué)習(xí)的OCR識別框架
目前,從技術(shù)流程上來說,主要分為兩步,首先是檢測出圖像中的文本行,接著進(jìn)行序列識別。可見,基于深度學(xué)習(xí)的OCR識別框架相比于傳統(tǒng)OCR識別框架,減少了三個步驟,降低了因誤差累積對最終識別結(jié)果的影響。
文本行檢測,其又可分為水平行文字檢測算法與傾斜文字行檢測算法。這里主要介紹下Tian提出算法CTPN。主要思路是將文本行識別看做一個序列識別問題,不同于一般的目標(biāo)檢測問題,引入RNN來利用上下文的信息。
具體流程為:
1、用VGG16的5個卷積層得到特征圖(feature map,W*H*C);
2、 在Conv5的feature map的每個位置上取3*3*C的窗口的特征,這些特征將用于預(yù)測該位置k個anchor(anchor的定義和Faster RCNN類似)對應(yīng)的類別信息,位置信息;
3、將每一行的所有窗口對應(yīng)的3*3*C的特征(W*3*3*C)輸入到RNN(BLSTM)中,得到W*256的輸出;
4、將RNN的W*256輸入到512維的fc層;
5、fc層特征輸入到三個分類或者回歸層中。第二個2k scores 表示的是k個anchor的類別信息(是字符或不是字符)。第一個2k vertical coordinate和第三個k side-refinement是用來回歸k個anchor的位置信息。2k vertical coordinate表示的是bounding box的高度和中心的y軸坐標(biāo)(可以決定上下邊界),k個side-refinement表示的bounding box的水平平移量。
這邊注意,只用了3個參數(shù)表示回歸的bounding box,因為這里默認(rèn)了每個anchor的width是16,且不再變化(VGG16的conv5的stride是16)?;貧w出來的box如Fig.1中那些紅色的細(xì)長矩形,它們的寬度是一定的;
6、用簡單的文本線構(gòu)造算法,把分類得到的文字的proposal(圖Fig.1(b)中的細(xì)長的矩形)合并成文本線。
聯(lián)系我們:
聯(lián)系人:段先生 15050120083
關(guān)注我們:雙宇智能
※聲明:本文內(nèi)容來源于百度文庫,如涉及作品版權(quán)問題,請及時聯(lián)系我們,我們將刪除內(nèi)容以保證您的權(quán)益。