OCR:iOS身份证(正反面)识别及银行卡识别

场景

1、想要实现身份证识别及银行卡识别。

2、不想用第三方(免费识别有上限,要想更多识别需要花钱)只想实现身份证和银行卡识别,没必要花钱。

3、不想用第三方开源框架(OpenCV、TesseractOCRiOS等)集成内存太大,为了这两个功能,没必要app包过于增大。

4、本demo 就简单的搞了一下(通过c++,简单有效的识别身份证及银行卡)。

5、不讲原理,只讲怎样使用demo,不依赖与其他库,直接拷贝。

最终效果

1、身份证:(姓名、性别、民族、出生日期、住址、身份证号码、签发机关、有效期限)并截取到身份证正反面图像。

2、银行卡:(卡号、银行名称)并截取到银行卡图像。

扫描二维码关注公众号,回复: 2928917 查看本文章

使用

1、在你的项目的Info.plist文件中,添加权限描述(Key   Value)

Privacy - Camera Usage Description 是否允许访问相机。

Privacy - Photo Library Usage Description 是否允许访问相册。


2、JYBD_IDCardRecognition 文件夹直接拖入工程中。

3、运行程序

错误一、 ENABLE_BITCODE 错误

解决方法:在TARGETS 中的 Buid Setting 下找到 Enable Bitcode 将其设置为NO; Xcode8 环境下会检测.a 文件, 所以将 Enable Testability 设置为 NO。

错误二、 

Undefined symbols for architecture arm64:
  "_ZIM_SaveImage", referenced from:
      ImgSave(tagIMG, char const*) in libbankcard.a(gjimage.o)
  "_ZIM_LoadImage", referenced from:
      ImgLoad(tagIMG&, char const*) in libbankcard.a(gjimage.o)
  "_ZIM_DoneImage", referenced from:
      ImgLoad(tagIMG&, char const*) in libbankcard.a(gjimage.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决办法:build settings 搜索 ENABLE_TESTABILITY 改为NO

4、 在你的项目中的相应处倒入头文件

#import "JYBDBankCardVC.h"

#import "JYBDIDCardVC.h"

#pragma mark - 身份证扫描

- (IBAction)shoot:(UIButton *)sender {

    __weak __typeof__(self) weakSelf = self;

        JYBDIDCardVC *AVCaptureVC = [[JYBDIDCardVC alloc] init];

    AVCaptureVC.finish = ^(JYBDCardIDInfo *info, UIImage *image)

    {

        IDInfoViewController *infoM = [[IDInfoViewController alloc]init];

        infoM.IDInfo = info;

        infoM.IDImage = image;

        [weakSelf.navigationController pushViewController:infoM animated:YES];

    };

   [self.navigationController pushViewController:AVCaptureVC animated:YES];

}

#pragma mark - 银行卡扫描

- (IBAction)shootAction:(UIButton *)sender {

    __weak __typeof__(self) weakSelf = self;

        JYBDBankCardVC *vc = [[JYBDBankCardVC alloc]init];

    vc.finish = ^(JYBDBankCardInfo *info, UIImage *image) {

       IDInfoViewController *infoM = [[IDInfoViewController alloc]init];

        infoM.cardInfo = info;

        infoM.IDImage = image;

        [weakSelf.navigationController pushViewController:infoM animated:YES];

    };

    [self.navigationController pushViewController:vc animated:YES];

}

4、使用真机,使用真机,使用真机(不支持模拟器)。大功告成。

5、demo 地址:https://github.com/tiantianios/JYBDAVCapture.git

猜你喜欢

转载自blog.csdn.net/tiantianios/article/details/82112660