iOS身份證識別(OCR原始碼)

2021-09-12 15:37:06 字數 1342 閱讀 8909

最近專案用到身份證識別,在github上搜了一堆demo,在google上找了一堆**,有能識別出證件照的,但是都是打包成.a的靜態庫,沒有原始碼,我努力吃了幾天書,有了一點研究成果,現在貼出來與大家分享,要是有更好的方法,希望大神指正,共同**解決方案。(以下**本人親測可用,正在進一步探索智慧型識別,如有興趣,**入)

這裡用到了兩個開源庫:opencv、tesseractocrios,兩個語言包chi_sim、eng。身份證識別的流程主要有:灰度化,閥值二值化,腐蝕,輪廓檢測,取出身份證號碼區域,tesseractocr識別文字。

身份證識別核心原始碼:

uiimage * image = [uiimage imagenamed:@「abc.png」];

//將uiimage轉換成matcv::mat resultimage;

uiimagetomat(image, resultimage);

//轉為灰度圖

cvtcolor(resultimage, resultimage, 6);

//利用閾值二值化

cv::threshold(resultimage, resultimage, 100, 255, cv_thresh_binary);

//腐蝕,填充(腐蝕是讓黑色點變大)

cv::mat erodeelement = getstructuringelement(cv::morph_rect, cv::size(140,140));

cv::erode(resultimage, resultimage, erodeelement);

//輪廊檢測std::vector> contours;

//定義乙個容器來儲存所有檢測到的輪廊

//取出身份證號碼區域

std::vectorrects;cv::rect numberrect = cv::rect(0,0,0,0); std::vector>::const_iterator itcontours = contours.begin();

for ( ; itcontours != contours.end(); ++itcontours) //定位成功成功,去原圖擷取身份證號碼區域,並轉換成灰度圖、進行二值化處理

cv::mat matimage;

uiimagetomat(image, matimage);

resultimage = matimage(numberrect);

cvtcolor(resultimage, resultimage, cv::color_bgr2gray);

cv::threshold(resultimage, resultimage, 80, 255, cv_thresh_binary);

//將mat轉換成uiimage

身份證OCR識別

本文章 於自己的學習影象處理以及識別過程中的一些經驗,開發了乙個ocr識別身份證程式,此程式雖不夠完美但有一定的參考價值,csdn上本人也將提供源 對身份證ocr識別整個過程的乙個梳理。程式依賴庫,opencv3.20 tesseract ocr識別。大致過程 1,修剪統一化影象 900 600 或...

OCR身份證識別功能

我們來理解下這個類函式的運作機制,藉此聯想下tesseract引擎的實現原理。機制如下 1.呼叫init 方法,即對引擎初始化 2.呼叫setimage 方法,設定圖形流的資訊 3.通過getutf8text 方法獲得text資訊 4.呼叫recognizedtext類,判斷text的正確性,然後輸...

身份證識別OCR行業技術

某近日去了一趟國家圖書館,體驗了一把身份證識別。話說來也是很巧,自動辦讀書卡的地方人很多,我想蒙混進到圖書室內,怎麼也是漫無目的的看書唄。自信滿滿地就進去了,果斷地被攔住了 刷卡!沒有怎麼辦,刷臉行不?現在不也流行人臉識別嗎!刷身份證!恰巧帶了身份證,放在他那個身份證讀卡器上,滴滴兩聲,進去吧!可以...