[171106] 基於 Python OpenCV 圖像處理和機器學習的光學字元識別(OCR)

原創內容,禁止轉載!


導讀:這是 Python OpenCV 圖像處理 專欄的第6篇文章,主要介紹了使用 Python OpenCV 圖像處理進行字元(大寫字母和數字)識別的思想、方法。關於 Python OpenCV 處理的基礎知識,可以參考這篇文章 [171102] Python3 OpenCV3 圖像處理基礎(Python3 + Numpy + Matplotlib + OpenCV3 + ...)。更多文章,請查看 [171101] Python OpenCV 圖像處理專欄目錄。


OCR(Optical character recognition) 光學字元識別,是對掃描文檔、文本或場景文字照片等進行處理,其中的字元的操作。OCR廣泛應用於銀行卡號識別、身份證號識別、快遞單號識別、掃描文檔字元識別、驗證碼識別、文本電子化等場景。OCR是一個多學科交叉領域,涉及到計算機視覺(圖像處理)、模式識別、機器學習和神經網路等方面知識。這裡介紹一種簡單的基於 Python OpenCV 圖像處理和機器學習的大寫字母和數字字元識別。希望從對OCR由感性認識加深到理性認識,為進一步使用深度學習等進行字元識別儲備基礎。

OCR(Optical character recognition) 光學字元識別,是對掃描文檔、文本或場景文字照片等進行處理,其中的字元的操作。OCR廣泛應用於車牌識別、銀行卡號識別、身份證號識別、快遞單號識別、掃描文檔字元識別、驗證碼識別、文本電子化等場景。OCR是一個多學科交叉領域,涉及到計算機視覺(圖像處理)、模式識別、機器學習和神經網路等方面知識。這裡介紹一種簡單的基於 Python OpenCV 圖像處理和機器學習的大寫字母和數字字元識別。希望從對OCR由感性認識加深到理性認識,為進一步使用深度學習等進行字元識別儲備基礎。


光學字元識別的主要技術

1. 預處理

(1) 傾斜矯正(deskew)當掃描文本沒有很好的對齊是,需要進行一定角度的旋轉,使得處理後的字元水平或垂直對齊。(2) 去除雜點(despeckle)使用濾波或其他方法,平滑圖像抑制雜訊,盡量去除雜點。(3) 二值化(binarisation)二值化就是將多通道圖或灰度圖按照一定操作進行處理,得到黑白二值圖像。二值化的結果對後續字元識別結果有著直接影響。(4) 版面分析(layout analysis)識別段落(paragraphs)、文字塊(text blocks)等,使後續進行分塊分區域進行處理。(5) 檢測行和單詞(line and word detection)對於單獨文字塊,檢測文本行和單詞,估計文本行的基線(baseline),必要時分割單詞(seperate words)。(6) 字元分離(isolation)分割(split)與合併(merge):將多個字元分割成單獨的字元,並在必要時合併被誤拆分字元。(7) 歸一化字元(normalization)將分離的字元歸一化到固定尺寸(如8x12)。

2. 字元識別

法一:模板匹配(template matching)即計算分離字元塊圖像和標準字元塊圖像的相關係數,但是這個方法太古老了,在字元形狀"幾乎一致"的情況下有效。法二:字體特徵提取和模式識別(feature extraction and pattern recognition)使用好的特徵(而不是原始數據)可以使計算更有效率,使用模式識別的方法使得識別更加準確。(1) 提取特徵從字元塊中提取出合適的能很好表徵字元類別(也就是能很好表示字元到底是哪個)的特徵,如占空比、重心、水平垂直分布、筆畫的方向、筆畫交叉點、筆畫閉環、HOGs、LBP等特徵,並將其表示成向量來代替字元圖塊。(2) 訓練模型對已標註的字元塊,提取特徵後,使用K近鄰(KNN)、支撐向量機(Support Vector Machine)、多層感知器(MLP)、人工神經網路(ANN)、卷積神經網路(CNN)等方法訓練得到字元模型。(3) 識別對待識別的字元塊,提取特徵後,送入模型解算得到識別結果。

3. 後處理

對於識別得到的字元,如果按照字元頻率、單詞上下文等進行校正。這部分就比較高級了,需要更專業的領域知識來輔助。


完結,手動撒花~

參考:

1. ORC: https://en.wikipedia.org/wiki/Optical_character_recognition

推薦閱讀:

50行代碼實現人臉檢測
1.9【OpenCV圖像處理】平滑模糊濾波
最近在搞Kinect的指尖識別,手指都可以畫出來了,有什麼方法可以將每隻手指對應的名稱識別出來啊?
[171103] 基於縮略圖哈希值比較的圖像相似性檢索
元旦贈書 | 18本紙質書:OpenCV、Python和機器學習,總有一本適合你

TAG:OpenCV | OCR光学字符识别 | 计算机视觉 |