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