傳統OCR識別綜述

      網友投稿 1613 2022-05-30

      傳統OCR識別綜述

      1????? 引言

      1.1????? 什么是OCR

      計算機文字識別,俗稱光學字符識別,英文全稱是Optical Charater Recognition(簡稱OCR),它是利用光學技術和計算機技術把印刷在或者寫在圖紙上的文字以文本形式提取出來,并轉換成一種計算機能夠接受、人又可以理解的格式。OCR技術是實現文字快速錄入的一項關鍵技術。在信息社會時代,每天會產生大量的票據、表單、證件數據,這些數據要電子化,需要利用OCR技術進行提取錄入。在深度學習沒有全面推廣之前,大部分OCR識別都是基于傳統的方法進行檢測識別。在背景單一、數據場景簡單的情況下,傳統OCR一般都能達到好的效果,但在一些場景復雜、干擾多的情況下,識別效果不好,這個時候深度學習OCR就能體現出巨大的優勢。

      1.2????? 傳統OCR與深度學習OCR

      傳統OCR基于圖像處理(二值化、連通域分析、投影分析等)和統計機器學習(Adaboot、SVM),提取圖片上的文本內容;用到的計算機視覺算法庫主要有OpenCV、Halcon、VisionPro等,出于開源、多語言支持和方便易用的考慮,我們通常采用OpenCV進行開發。

      深度學習OCR是利用模型算法能力,替換傳統的手動方法,自動檢測出文本的類別及位置信息,根據相應位置文本信息自動識別文本內容,一般用到的模型算法:

      檢測算法:FasterRCNN、CTPN、FCN等

      識別算法:CRNN、CRNN+CTC、seq2seq-attention等

      2????? 傳統OCR識別流程

      傳統OCR技術框架主要分為五個步驟(如圖所示):

      按處理方式劃分為三個階段:預處理階段、識別階段和后處理階段。首先文本定位,接著進行傾斜文本矯正,分割出單字后,使用人工特征HOG或者CNN特征,結合分類模型對單字進行識別,最后基于統計語言模型(如隱馬爾科夫鏈,HMM)或者規則進行語義糾錯。其中關鍵在于預處理階段,預處理階段的質量直接決定了最終的識別效果。

      3????? 傳統矯正算法

      在將圖片輸入檢測之前會首先去對原圖進行一次圖片矯正操作,確保圖片文字是水平方向,提高文本檢測的準確性。圖像矯正的方法一般有兩種:水平矯正,透視矯正,如果原始圖像沒有太大透視變形的情況,只是圖像發生了角度旋轉,則推薦使用水平矯正方法;如果圖像存在透視變形,則推薦使用透視矯正方法。

      3.1????? 水平矯正

      進行識別的圖像大部分是卡證、票據、表單類數據,這類數據有些是有明顯的輪廓邊緣,有些沒有明顯的輪廓邊緣,比如:文檔型的圖像,背景都是白色的,針對這種圖像的話可以根據文本的邊緣輪廓信息進行霍夫曼直線檢測,然后進行角度檢測旋轉。有些具有明顯的邊界輪廓矩形的卡證類,可以先檢測出最大輪廓然后根據輪廓角度直接旋轉即可。

      3.1.1??????? 霍夫曼直線矯正

      圖片灰度化轉為單通道圖后,先使用Canny算子進行邊緣檢測,讓圖形的邊緣信息凸顯出來;再使用霍夫曼變換檢測所有可能的直線;然后統計所有直線與水平方向角度并計算平均值;最后根據平均角度對原圖以中心點為旋轉點進行旋轉矯正。

      矯正效果如下:

      3.1.2??????? 輪廓矯正

      首先將圖片灰度化去除噪聲,進行自適應二值化,然后用形態學閉操作將斷開的連成塊,最后通過輪廓查找角度,關鍵操作包含以下兩個方面:

      1、??找到最大面積的最小外接矩形,返回最小外接矩形的角度

      2、??找到所有輪廓的最小外接矩形,返回所有外接矩形的平均角度

      具體流程如下:

      傳統OCR識別綜述

      最大輪廓矯正:

      3.2????? 透視矯正

      3.2.1??????? 背景

      現在移動設備越來越普及情況下,印刷類型圖片占比呈下降趨勢,主流圖片獲取都是通過移動設備獲得,但是通過移動設備獲取錄入圖片質量,很容易受到當時的光線、角度等影響。有些圖片可能存在一定的扭曲變形,直接對這些圖片進行文本檢測,檢測出來的文本會存在一定的漏框少框。為了減少文本漏框少框現象,需在對圖片進行文本檢測前,先對圖片進行透視變換矯正圖片。

      3.2.2??????? 矯正原理

      首先進行圖片灰度化,去除噪聲,稍微膨脹操作,使得輪廓信息更突出,同時使斷裂的輪廓連接起來,再使用邊緣檢測算法檢測邊緣信息;基于邊緣輪廓信息,查找最大面積的邊緣輪廓,因為一般最大邊緣輪廓就是我們感興趣區域;得到最大輪廓邊緣后,使用擬合四邊形的方法,找到分散在感興趣區域的角點位置,然后根據左上,右下角點位置關系,找到角點的順序,最后根據角點與目標點的透視映射關系,進行透視變換矯正,得到結果。

      矯正結果如下:

      4????? 傳統文本檢測算法

      4.1????? 連通域檢測文本

      傳統圖形學方法提取文本位置,一般可以分為兩個部分,第一個是連通域的提取,第二個是文字連通域的判別。其中,將圖像二值化后,通過連通域提取環節會將所有的連通域找出來作為候選集,然后根據啟發式規則算法判斷提取的連通域是否是文字連通域。流程如圖所示:

      當然在文本檢測前會有一系列的預處理操作:二值化、版式分析、表格背景和文字區域形態學分離等,預處理后的結果如下圖所示:

      根據預處理后的文本塊,進行輪廓檢測,然后使用輪廓的最大外接矩形作為文本塊的文本檢測區域。

      4.2????? MSER檢測文本

      MSER的處理過程:對一幅灰度圖像取不同的閾值進行二值化處理,閾值從0至255遞增,這個遞增的過程就好比是一片土地上的水面不斷上升,隨著水位的不斷上升,一些較低的區域就會逐漸被淹沒,從天空鳥瞰,大地變為陸地、水域兩部分,并且水域部分在不斷擴大。在這個“漫水”的過程中,圖像中的某些連通區域變化很小,甚至沒有變化,則該區域就被稱為最大穩定極值區域。在一幅有文字的圖像上,文字區域由于顏色(灰度值)是一致的,因此在水平面(閾值)持續增長的過程中,一開始不會被“淹沒”,直到閾值增加到文字本身的灰度值時才會被“淹沒”。該算法可以用來粗略地定位出圖像中的文字區域位置。

      大致流程如下:

      5????? ??傳統字符切割算法

      在深度學習序列化模型還未興起的時候,傳統文本識別還不能直接對文本行直接進行文字識別,因為詞與詞的組合、詞組與詞組的組合無法枚舉窮盡,對這些詞組直接分類基本不可能。相對于詞語、詞組,字符的個數可以窮盡,如果把文本識別當做單個字符的識別組合,那么任務就簡單很多,因此傳統的文本識別都是基于單字符的識別。傳統字符分割的流程大致如下圖所示:

      上述文本檢測算法,首先檢測出文本行,然后利用連通域、垂直投影或者其他算法,對文本行中的單個字符進行字符分割。

      5.1????? 連通域輪廓切割

      每個文本行切片的局部圖中,單個字符都是一個個獨立的對象存在,如果能找到單個獨立對象的輪廓信息,那么他的最小外接矩形也能通過一些opencv的函數獲取得到;基于連通域的大致流程原理如下:

      首先將文本切片二值化,使用opencv的findContours找到可能的單字符輪廓,然后根據經驗規則過濾掉一些噪聲,最后對輪廓的外接矩形使用NMS過濾些重復框,得到最終的單字符檢測框。

      處理流程如下:

      1)二值化:

      2)過濾噪聲點:

      3)NMS過濾:

      5.2????? 垂直投影切割

      文本行的局部圖像中,除了文字像素外就是背景像素,單個字符文字區域內的像素在每列的分布和周圍的像素分布有差異,字符與字符之間的空隙像素一般比較少,而在文字內像素分布比較多。基于這樣的規律,我們將文本行切片二值化變成黑底白字,統計每列中白色像素的個數,得到每列的白色像素的分布,然后根據規律找到黑白像素在列的范圍尺度下的分割間隔點,最后根據分割間隔點對文本行進行單字符分割,得到最終結果,此過程處理字符分割的技術稱之為垂直投影法字符分割,流程如下圖所示:

      處理流程如下:

      統計每列白色像素個數和畫出垂直投影分布

      字符分割間隔點修補過濾字符分割過程中存在字符粘連或者字符斷裂情況,這樣情況的發生是因為,粘連的部分白色像素個數明顯高于其他分割點,被當成一個字符處理了。為了能正確分割出字符粘連情況,需要借助額外信息,比如平均字符寬度之類的信息,去裁剪分割點。字符斷裂情況是由于有些中文字符具有偏旁部首或者去噪聲、腐蝕的太厲害造成有些字符被弄成了兩個或者多個;為了能正確分割字符,可以借助平均寬度處理。

      1)????? 字符粘連

      2)????? 字符斷裂

      6????? 傳統文本識別算法

      在傳統OCR文字識別領域,是將文本行的字符識別看成一個多標簽任務學習的過程,也就是多分類問題。中文領域字符識別類別大概有5800,包括常見漢字、標點符號、特殊字符等。英文領域字符識別類別大概有100多種,包括大小寫英文、標點符號、特殊字符等。字符分類一般分為:印刷體字符分類和手寫體字符分類。印刷體字符分類在特定場景已經可以達到很高的精度,然而在復雜場景中精度仍然比較低,通過數據增強(膨脹、腐蝕等操作)只能解決部分難題。手寫體識別在OCR領域一直是技術難題,不僅僅是在傳統OCR文字識別領域,深度學習也很難解決,因為每個人的手寫字符風格不一,很難統一標準。

      6.1????? 識別原理

      在字符分類之前,我們首先將字符切片歸一化成統一尺寸,參考經典手寫字符分類尺寸大小28x28,統一尺寸后根據圖像的常見算法去提取特征,比如hog、sift等;最后分類器選擇支持向量機、邏輯回歸、決策樹等,模型訓練完成可以集成端到端進行預測識別。大致流程如下:

      6.2????? 識別流程

      使用HOG特征+SVM分類算法去識別單字符,該算法組合已經在經典的手寫字符分類中得到了很好的驗證。字符之間的差異主要是形狀上的差異,而HOG能在光照不變性情況下,將圖片的局部形狀特征提取出來,同時SVM算法在小樣本高維度情況下,具有一定優勢,具體流程如下:

      7????? 總結

      傳統OCR發展至今,已經解決了大部分簡單場景,并且取得很好效果,但是在一些復雜場景,傳統OCR面臨了巨大的挑戰,精度很難滿足實際應用需求。雖然基于深度學習的OCR表現相較于傳統方法更為出色,但是深度學習技術仍需要在OCR領域進行特化,而其中的關鍵正是傳統OCR方法的精髓。因此我們仍需要從傳統方法中汲取經驗,使其與深度學習有機結合進一步提升OCR的性能表現。另一方面,作為深度學習的推動力,數據起到了至關重要的作用,因此收集廣泛而優質的數據也是現階段OCR性能的重要舉措之一。

      文字識別 OCR 深度學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel表格中將條件格式匯總有什么技巧
      下一篇:AI學習入門之初識自然語言處理
      相關文章
      亚洲卡一卡2卡三卡4卡无卡三| 亚洲日韩小电影在线观看| 亚洲av日韩av高潮潮喷无码 | 亚洲精品无码AV中文字幕电影网站| 亚洲免费福利在线视频| 国产精品亚洲片在线va| 亚洲日本在线播放| 亚洲国产日韩在线成人蜜芽| 日产亚洲一区二区三区| 久久精品国产亚洲av麻豆小说| 亚洲天堂在线播放| 亚洲激情电影在线| 亚洲一区二区三区久久| 亚洲人成电影网站| 在线综合亚洲中文精品| 亚洲中文无码亚洲人成影院| 亚洲日本VA中文字幕久久道具| 亚洲精品一卡2卡3卡四卡乱码| 亚洲一区二区无码偷拍| 亚洲av无码专区在线观看下载 | 亚洲成a∨人片在无码2023| 亚洲AV无码一区二区三区电影 | 亚洲 国产 图片| 国产日产亚洲系列最新| 亚洲中久无码永久在线观看同 | 亚洲综合色丁香婷婷六月图片| 在线观看日本亚洲一区| 亚洲欧洲精品成人久久曰| 亚洲日韩精品无码AV海量| 婷婷亚洲综合一区二区| 国产亚洲精品国看不卡| 日本亚洲成高清一区二区三区| 亚洲第一成年男人的天堂| 亚洲美女精品视频| 在线精品亚洲一区二区| 大胆亚洲人体视频| 亚洲中文字幕无码日韩| 亚洲三级电影网址| 国产精品亚洲精品青青青| 亚洲av无码一区二区三区四区| 亚洲精品专区在线观看|