-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
ocr識別原理及算法(ocr識別過程)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于ocr識別原理及算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網頁版、PC客戶端
創(chuàng)意嶺作為行業(yè)內優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、發(fā)票ocr識別技術原理是什么?
比如云脈OCR票據識別技術,基于成熟的光學字符識別(OCR)技術,通過創(chuàng)建票據的模板將票據圖片分解成多個不同類型的元素,然后逐個對元素進行識別,最后分別將數(shù)據提取出來;廈門云脈還支持ocr票據識別sdk個性化定制,可根據用戶實際應用場景進行定制.....
二、OCR技術淺析
姓名:吳兆陽 學號:14020199009
轉自機器人學習研究會
嵌牛導讀:OCR(Optical Character Recognition,光學字符識別)的概念早于1920年代便被提出,一直是模式識別領域中重要的研究方向。近年來,隨著移動設備的快速更新迭代,以及移動互聯(lián)網的快速發(fā)展,使得OCR有更為廣泛的應用場景,從以往的掃描文件的字符識別,到現(xiàn)在應用到自然場景中圖片文字的識別,如識別身份證、銀行卡、門牌、票據及各類網絡圖片中的文字。
嵌牛鼻子:ORC技術
嵌牛提問:什么是ORC,如何使用?
嵌牛正文:
以深度學習興起的時間為分割點,直至近五年之前,業(yè)界最為廣泛使用的仍然是傳統(tǒng)的OCR識別技術框架,而隨著深度學習的崛起,基于這一技術的OCR識別框架以另外一種新的思路迅速突破了原有的技術瓶頸(如文字定位、二值化和文字分割等),并已在工業(yè)界得到廣泛應用。
筆者針對業(yè)務中的身份證照片文字識別需求分別嘗試了傳統(tǒng)OCR識別框架及基于深度學習的OCR識別框架。下面就以身份證文字識別為例分別簡要介紹兩種識別框架。
傳統(tǒng)OCR技術框架
如上圖所示,傳統(tǒng)OCR技術框架主要分為五個步驟:
首先文本定位,接著進行傾斜文本矯正,之后分割出單字后,并對單字識別,最后基于統(tǒng)計模型(如隱馬爾科夫鏈,HMM)進行語義糾錯??砂刺幚矸绞絼澐譃槿齻€階段:預處理階段、識別階段和后處理階段。其中關鍵在于預處理階段,預處理階段的質量直接決定了最終的識別效果,因此這里詳細介紹下預處理階段。
預處理階段中包含了三步:
定位圖片中的文字區(qū)域,而文字檢測主要基于連通域分析的方法,主要思想是利用文字顏色、亮度、邊緣信息進行聚類的方式來快速分離文字區(qū)域與非文字區(qū)域,較為流行的兩個算法分別是:最大極值穩(wěn)定區(qū)域(MSER)算法及筆畫寬度變換(SWT)算法,而在自然場景中因受到光照強度、圖片拍攝質量和類文字背景的干擾,使得檢測結果中包含非常多的非文字區(qū)域,而目前從候選區(qū)域區(qū)分出真正文字區(qū)域主要兩種方法,用規(guī)則判斷或輕量級的神經網絡模型進行區(qū)分;
文本區(qū)域圖像矯正,主要基于旋轉變換和仿射變換;
行列分割提取出單字,這一步利用文字在行列間存在間隙的特征,通過二值化并在投影后找出行列分割點,當在文字與背景的區(qū)分度較好時,效果很好,而拍攝的圖片中光照、攝像質量的影響,并且文字背景難以區(qū)分時,常造成錯誤分割的情況。
下面介紹基于傳統(tǒng)OCR框架處理身份證文字識別:
身份證識別技術流程與上述框架稍微有所差異。對該問題,已知先驗信息:a.證件長寬固定;b.字體及大小一致;c.文本相對于證件位置固定;d.存在固定文字。因此,處理該問題的思路為:先定位目標物體(證件),矯正后提取文字進行識別,最后進行語義糾錯,如下圖:
目標物體定位并矯正?;诂F(xiàn)有的先驗信息,定位最后的方法為采用模板關鍵點特征匹配的方法,并利用模板上特征點及目標圖像特征點坐標之間的關系進行透視變換,以定位目標物體,如下圖所示。接著,基于四角的坐標,進行旋轉、仿射、尺寸的變換,并提取出目標物體的俯視圖。
因文字位置相對固定,接著便分割出文字區(qū)域,二值化后,行列分割出單個字符。這里的技術難點在于二值化,二值化效果的好壞直接影響字符分割,并最終影響識別結果。受光照和拍攝質量的影響,全局二值化難以設置統(tǒng)一的閾值,而自適應二值化算法易受到陰影及模糊邊界的干擾。所以在這邊嘗試過許多方法,測試下來未發(fā)現(xiàn)在任何情形下效果都滿足要求的方法。
分割出單字后接著用分類器進行識別,并在這步基于統(tǒng)計上的先驗信息定義了一個簡單的優(yōu)化函數(shù),可看做1-gram語言模型。先驗信息為:2400(總共660273)漢字的使用頻率之和為99%以上。定義的優(yōu)化函數(shù)為:
式中,Pi為該字出現(xiàn)的概率,confi為置信度值。
下圖給出了示例:
因上述的優(yōu)化過程中假定各狀態(tài)相互獨立并與上一狀態(tài)沒有聯(lián)系,故不可避免存在語義上的錯誤。而如何基于現(xiàn)有的輸出序列,對序列進行語義上的修正,那么最直觀的想法就是用隱馬爾可夫模型(Hidden Markov Model,HMM)解決這個問題,其基于觀察序列,求出最優(yōu)隱序列。其可以抽象為如下圖的過程。在給定O序列情況下,通過維特比算法,找出最優(yōu)序列S:
傳統(tǒng)OCR冗長的處理流程以及大量人工規(guī)則的存在,使得每步的錯誤不斷累積,而使得最終識別結果難以滿足實際需求。接下來討論基于深度學習的OCR。
基于深度學習的OCR識別框架
目前,從技術流程上來說,主要分為兩步,首先是檢測出圖像中的文本行,接著進行序列識別。 可見,基于深度學習的OCR識別框架相比于傳統(tǒng)OCR識別框架,減少了三個步驟,降低了因誤差累積對最終識別結果的影響。
文本行檢測,其又可分為水平行文字檢測算法與傾斜文字行檢測算法。這里主要介紹下Tian提出算法CTPN,其算法框架如下圖。主要思路是將文本行識別看做一個序列識別問題,不同于一般的目標檢測問題,引入RNN來利用上下文的信息。
具體流程為:
用VGG16的5個卷積層得到特征圖(feature map,W*H*C);
在Conv5的feature map的每個位置上取3*3*C的窗口的特征,這些特征將用于預測該位置k個anchor(anchor的定義和Faster RCNN類似)對應的類別信息,位置信息;
將每一行的所有窗口對應的3*3*C的特征(W*3*3*C)輸入到RNN(BLSTM)中,得到W*256的輸出;
將RNN的W*256輸入到512維的fc層;
fc層特征輸入到三個分類或者回歸層中。第二個2k scores 表示的是k個anchor的類別信息(是字符或不是字符)。第一個2k vertical coordinate和第三個k side-refinement是用來回歸k個anchor的位置信息。2k vertical coordinate表示的是bounding box的高度和中心的y軸坐標(可以決定上下邊界),k個side-refinement表示的bounding box的水平平移量。這邊注意,只用了3個參數(shù)表示回歸的bounding box,因為這里默認了每個anchor的width是16,且不再變化(VGG16的conv5的stride是16)?;貧w出來的box如Fig.1中那些紅色的細長矩形,它們的寬度是一定的;
用簡單的文本線構造算法,把分類得到的文字的proposal(圖Fig.1(b)中的細長的矩形)合并成文本線。
上圖為給出基于CTPN的例子,框線部分是算法識別出的文字行,可見在圖片光照不均、人工合成及文字背景對比不明顯的情形下均有很好的效果。 相比于傳統(tǒng)文字定位方法,具有更好的魯棒性及明顯的優(yōu)勢。
文字行識別。近兩年比較受關注的主要有兩種,一種是CNN+RNN+CTC的方法,另外一種是用attention model+CNN+RNN的方法。這里主要介紹下CNN+RNN+CTC,算法框架由圖給出。分為三層,CNN層、RNN層及解碼(transcription)層。在CNN層,用于提取圖像特征,利用Map-to-Sequence表示成特征向量;在RNN層,用雙向LSTM識別特征向量,得到每列特征的概率分布;在解碼層,利用CTC和前向后向算法求解最優(yōu)的label序列。因此,該方法能夠識別不定長的文字行。
兩個例子:
Out:遼寧省長??h廣鹿鄉(xiāng)沙尖
Out:河南省鄧州市九龍鄉(xiāng)姚營
三、RCNN + CTC 文本識別原理
對于 OCR 任務來說,目的是為了將圖像中的文字識別出來,近幾年的研究主要包含以下幾個步驟:
目前研究主要集中在文字檢測和文字識別兩個任務,本文只介紹文字識別任務中的一種模型,即 CRNN+CTC Loss 方案;另外一種方案是基于 Attention 機制。主要區(qū)別在于(后續(xù)重點介紹 CTC):
CRNN 網絡結構如圖 2-1 所示,輸入為經過文字檢測的文本框(小圖),輸出為具體的文字內容 “state”,從下往上的結構依次為:卷積層、循環(huán)層和翻譯層。
卷積層:使用深度 CNN 進行圖像的局部特征提取。如圖 2-2 所示,整個 CRNN 網絡的層級以及參數(shù)設置。
注意: 卷積核的大小是 3x3,步長 s 和 padding 都為 1,則證明卷積層在不改變圖像的尺寸大小情況下進行特征提??;池化層有四個,大小分別為 2x2、2x2、1x2、1x2,則對于圖像的高度減半 16 倍,寬度減半 4 倍。然后再經過最后的 Conv 層,例如:圖像的輸入尺寸為 (channel, height, width) = (1, 32, 160),CNN 的輸出尺寸為 (512,1,40)。
經過 CNN 層的特征圖(512,1,40)是不能直接送給 LSTM 進行訓練的,通過對特征圖中的 40 作為特征向量的序列數(shù),每列包含 512 維特征,構成了 40x512 大小的維度矩陣,輸入到 LSTM 網絡中。論文 [5] 中提到:
使用雙向的 LSTM 進行時序特征的提取,通過上一步,輸入到 LSTM 的特征大小為(40x512),每個 LSTM 的時間步為 40,每個時間點的特征維度為 512。LSTM 網絡的目標:預測每個時間步的字符內容,即輸出為所有字符的 softmax 概率分布,然后將這個后驗概率矩陣傳入 CTC 層。
總結為:
對于 LSTM,正常使用多分類的交叉熵進行訓練,完成參數(shù)更新,則每一時間步的輸出對應一個字符,也就意味著訓練時候每張樣本圖片都需要標記出每個字符在圖片中的位置。但是實際上是不可能實現(xiàn)的,所以 CTC 提出一種對不需要對齊的 Loss 計算方法,用于訓練網絡,被廣泛應用于文本行識別和語音識別中。
對于輸入 X 和 輸出標簽 Y 長度都不一致且變換的情況,CTC 提供解決方案為:對于一個給定的輸入序列 X ,CTC 給出所有可能的輸出分布 Y。根據這個分布,我們可以輸出最可能的結果或者給出某個輸出的概率。
RNN 進行時序分類時,不可避免出現(xiàn)冗余信息,如圖 3-1 所示,5 個時間步分別被識別為 [a,a,a,b,b],然后將重復的字符合并為 “ab”,但是對于如 book 等字符,合并字符后變成了 bok ,顯然不行,所以 CTC 使用 blank 機制解決這個問題。
定義一條路徑 的輸出概率為:
其中, 代表 時間步為 t 時刻的輸出概率,使用連乘的方式得出整條路徑的概率值。但是存在多條路徑經過上一步的合并冗余機制得到相同的路徑結果,如(“a-a-a-b-b”和“aa-aa-a-b-b-”通過合并序列之后都為“aaabb”),所以定義:
其中, 代表合并之后的路徑,由所有合并之后的相同路徑求和所得。常規(guī)解法是將所有的合法路徑輸出概率,然后進行求和,但是實際上路徑組合數(shù)量非常大,無法逐條求和直接計算 。
借用概率圖 HMM 的 “向前-向后” 算法計算:
訓練的目的在于最大化概率 ,使用對數(shù)似然法定義損失函數(shù)為:
遞推公式為:
對于遞推公式的解釋說明,可以看到 X 軸代表時間步,z 軸代表輸出的字符串,輸出標簽為“ZOO”:
上圖主要分為以下兩種情況:
遞推公式為,解釋見前向:
得到了前向和后向概率,將其概率相乘再經過轉化,就可以計算 的概率,公式如下:
對于 來說,可以表示為每個時間步輸出 label 的概率之和,因為上面的公式都是在 這一點進行前向和后向概率的計算。
為計算每個時刻每個因素的梯度: 觀察公式 7 中右端求各項,僅有 的項包含 ,其他項的偏導都為 0,不用考慮,于是有:
公式 8 中,分子第一項是因為 中包含為兩個 乘積項(即 ),其他均為與 無關的常數(shù)。 中可能包含多個 字符,它們計算的梯度要進行累加,因此,最后的梯度計算結果為:
通過對對數(shù)似然進行求導,梯度計算如下:
其中, 通過前向計算可得,就是最后輸出為 "-" 或者最后一個 的前向概率值: 。其中,由于某時刻某因素的前向和后向概率都已經求出,都為常數(shù),故此梯度計算完成,通過優(yōu)化算法進行參數(shù)調整即可。
預測就是找到概率值最大的路徑,目前存在兩種方案:一是 Greedy Search,二是 Beam Search。
四、OCR圖像文字識別圖像分割算法
對于文字ocr中的分割步驟應用的算法一般是個綜合體,不是像你說的單一某種算法可完成的
比如不粘連的 可以用連通檢測分割, 粘連的一般會用投影分割加驗知,粘連厲害的可以用像滴水法等
以上就是關于ocr識別原理及算法相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀:
potatochat蘋果下載(potatochat蘋果下載不了)
杭州人才補貼等待兌付要多久(杭州人才補貼等待兌付要多久才能到賬)