IOS身分証明書の識別(OCRソース)の詳細及び実例コード


IOS身分証の識別(OCRソース)の詳細
最近のプロジェクトは身分証明書で識別して、ギズブでデモトを検索しました。Googleでコードをいっぱい探しました。証明書の写真を識別できますが、全部包装しました。以下のコードは本人が直接測定して使えます。さらに知能の識別を探しています。興味があれば、加入してください。
ここでは二つのオープンソースライブラリを使いました。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;

//                 

cv::findContours(resultImage, contours, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));

//         

std::vectorrects;cv::Rect numberRect = cv::Rect(0,0,0,0); std::vector>::const_iterator itContours = contours.begin();

for ( ; itContours != contours.end(); ++itContours) {

cv::Rect rect = cv::boundingRect(*itContours);

rects.push_back(rect);

NSLog(@"     :x=%d,y=%d,width=%d,height%d",rect.x,rect.y,rect.width,rect.height);

//    :                   ,               

    if (rect.width > numberRect.width && rect.width > rect.height * 5 && rect.height > 200 && rect.height < 300) {

    numberRect = rect;

    }

}

//      ,            ,       、       

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

UIImage *numberImage = MatToUIImage(resultImage);

読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。