OCR技術概覽

2021-09-27 01:52:22 字數 3258 閱讀 8970

ocr(optical character recognition ) 光學字元識別技術主要分為手寫體識別和印刷體識別兩類 , 印刷體識別比手寫體識別要簡單, 因為印刷體更規範, 字型來自於計算機字型檔, 儘管印刷過程中可能會發生不清晰\粘連, 這些都可以通過一些"腐蝕"/"膨脹"影象處理技術還原, 但是手寫體由於個體差異的存在, 還是非常難的.

從內容角度, 可以分為: 漢字, 英文, 數字和圖畫. 數字最簡單, 英文次之, 漢字比較難.

早期字元模板匹配演算法, 用實現定義的文字/數字模板滑動匹配上的字元, 直接給出識別結果. 這種方法簡單,暴力, 直接.但是對於複雜場景的泛化能力很弱.

特徵設計方法, 利用字元的影象特徵進行特徵提取, 例如結構特徵, 筆畫特徵, 等等, 進行人工設計後, 提取文字特徵, 送入svm中做分類給出識別結果, 這種方法需要大量的人工特徵設計, 而且當字型變化\模糊等複雜條件下泛化能力同樣不行.

深度學習, 特別是卷積神經網路給ocr識別提供了新的思路.

目前非常優秀的模型有哪些?

這裡說的pipeline流程不區分手寫或者印刷體. 對於輸入系統的文字, 例如一段文字的, 或者

預處理 --> 版面分析/行列切割 --> 字元識別 --> 後處理識別矯正

預處理: 文件影象可能是傾斜或者有汙漬的, 需要進行角度矯正, 去噪

opencv輪廓檢測+透視變換+ 二值化

輪廓提取: 適用於車牌, 身份證, 人民幣, 書本, 發票一類的矩形且邊界明顯的物體矯正

直線探測矯正: 適用於文字類的矯正.

透視變換: cnn model(spatial transformer network, stn), 可以有效矯正文字的扭曲/翻轉問題, 配準演算法.stn可以有效地學習從一組點到對應點的變化關係, 可以作為乙個元件和其他模型搭配使用.

版面分析: 判斷頁面上文字的朝向, 做行和列的切割, 把文字按照行切割出來, 然後(按照列)切割出每乙個文字

字元識別和後處理識別矯正: 文字識別演算法模型進行識別, 通常是利用經典的cnn模型(例如vgg, lenet)作為backbone, 配合迴圈神經網路或者結合識別結果, 進行微調/上下關係分析, 連線, 重新送入模型識別, 提高識別正確率.

行列切割:

行列的切割可以用橫向投影和縱向投影獲得. 橫向投影, 是將畫素點的縱座標(y)做histogram, 得到:

很顯然, 從橫向水平投影histgram可以很容易地區分出每一行文字. 縱向豎直投影histogram如下:

縱向投影沒有橫向那麼分割"清晰". 這種情況主要發生在漢字中, 因為英語字母都是連通體, 不像中文的這種框架結構, 特別是左右結構的漢字, 很容易被模型識別為兩個字.

可以說文字的分割對正確的識別非常重要, 甚至是至關重要. 基於深度神經網路的演算法有: yolo/ssd/frcnn演算法等.

識別模型: 以cnn為基礎, 嵌入其他網路, 例如迴圈網路等.

faster rcnn做目標檢測的關鍵步驟有哪些:

2023年的detceting text in natural lmage with connectionist text proposal network一文提出了ctpn網路, 採用了乙個以小的窄矩形檢測框代替大檢測框, 同時針對文字之間間隔的問題, 採用rnn對連續的小檢測框的結果進行判斷, 在ctpn中, 小檢測框在文字上的移動就如同乙個序列, ctpn的雙向lstm(bilstm)模型可以對當前檢測框及其左右兩邊的小檢測框建立聯絡, 可以有效地提高對於文字檢測的精度.

vpr2017的一篇spotlight**《detecting oriented text in natural images by linking segments》介紹以一種可以檢測任意角度文字的檢測演算法,我們一般稱這個演算法為seglink,這篇**既融入ctpn小尺度候選框的思路又加入了ssd演算法的思路,達到了當時自然場景下文字檢測state-of-art的效果。

seglink這種先做分割再合併的思路,增大了文字檢測精度的損失和時間的消耗,cvpr2017有一篇文章提出了乙個能優雅且簡潔地完成多角度文字檢測,這個演算法叫做east,**為《east: an efficient and accurate scene text detector》。

east網路分為特徵提取層+特徵融合層+輸出層三大部分。

特徵提取層: backbone採取pvanet來做特徵提取,接下來送入卷積層,而且後面的卷積層的尺寸依次遞減(size變為上一層的一半),而且卷積核的數量依次遞增(是前一層的2倍)。抽取不同level的feature map,這樣可以得到不同尺度的特徵圖,目的是解決文字行尺度變換劇烈的問題,size大的層可用於**小的文字行,size小的層可用於**大的文字行。

特徵合併層,將抽取的特徵進行merge.這裡合併的規則採用了u-net的方法,合併規則:從特徵提取網路的頂部特徵按照相應的規則向下進行合併,這裡描述可能不太好理解,具體參見下述的網路結構圖。

網路輸出層:網路的最終輸出有5大部分,他們分別是:

基於語義分割的思路做文字檢測的、基於角點檢測做文字檢測、各種方法混合的文字檢測.

主流模型分為兩種: attention ocr(= cnn+ rnn+ attention) 或者crnn(= cnn+rnn+ctc ) . 這兩大方法的主要區別在於最後的輸出層,attention ocr採用的是attention機制, crnn對齊採用的是ctc演算法.

OCR技術初識

ocr英文全稱是optical character recognition,中文叫做光學字元識別。它是利用光學技術和計算機技術把印在或寫在紙上的文字讀取出來,並轉換成一種計算機能夠接受 人又可以理解的格式。這一概念最早於 1929 年由德國科學家 tausheck 提出。資訊資源數位化工作的目標物件...

前端技術概覽

本文描述當前主流的前端框架,語言及技術棧。瀏覽器中的頁面叫web頁面,由於直接面向使用者,所以稱前端,由html css js組合而來,其中 html 是用來描述當前這個頁面的結構,css 用來描述頁面的樣子,js 通常是用來處理這個頁面和使用者的互動。頁面的骨架。為了復用一些樣式,有了css的id...

關於OCR識別技術

1.移動ocr識別技術 android身份證件識別sdk ios身份證件識別sdk 2.伺服器端ocr識別 可在客戶自己的伺服器上部署的識別系統,也增加了資訊的安全和識別的方便性 分為 公共伺服器和私有伺服器 簡單來說,伺服器識別可以將企業所需的軟硬體 資料都放到網路上,在任何時間 地點,使用不同的...