1. 程式人生 > >機器視覺學習系列四:身份證識別

機器視覺學習系列四:身份證識別

專案背景:基於手機平臺,識別身份證編號、姓名、年齡、地址,性別等;

具體實施方案:

1、基於身份證分類器檢測身份證的位置,關於身份證分類器,採用的是HAAR+adaboost演算法進行訓練;

2、在已經檢測到的候選身份證區域裡,進行垂直邊緣檢測;

3、形態學執行,連線垂直邊緣;

3、去除干擾連通區域,主要基於連通區域的長寬比,面積,質心相對位置,去除典型的非編號區域;

4、選擇質心縱座標最大的連通區域作為編號數字區域;

5、垂直投影,進行編號的數字分割;

6、基於分割的數字位置,綜合判斷該區域是不是真正的身份證編號區域,如果是,說明當前候選區域是真正的身份證,否則,說明當前區域是誤檢區域 ;

7、基於所有的數字中心,通過最小二乘直線擬合,進行身份證的傾斜校正;

8、按照身份證的固定佈局規則,獲得剩下各個元素的位置,即姓名、性別、地址等;

9、基於垂直投影方法,獲取各個元素的單個字元位置;

10、數字識別,採用最簡單的模板匹配演算法;

11、漢字識別,基於tessract庫,但是直接使用該庫,識別率很低,只要60%左右,本專案進行了漢字增強處理,主要是外部做一些預處理,比如去除一些干擾,把一些粘連區域分開等,然後在使用tessract庫,漢字識別率顯著提高;

12、android平臺移植,關於opencv的android開發,可以直接參考opencv相關歷程,tessract這一塊,有一個分支哭可以直接在android上跑,不過不能做到隨心的去修改呼叫,本專案使用的是tessract的原始碼,通過NDK,自己編譯的,呵呵,花了很長時間的嘗試,最終搞定;

實驗結果:針對清晰的身份證影象,同時傾斜角度在正負10度以內的,數字 識別率99%,漢字識別率在92%以上;


不足:地址裡的數字和漢字有時很難區域開來,造成一定的錯誤識別,美中不足啊,