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