身份证 OCR

2024.11.20 10:20:47

    平台支持(兼容性)

    条目 说明
    适配版本 iOS8以上
    开发环境 Xcode 11.4

    环境准备

    CocoaPods 安装教程

    资源引入/集成

    通过 CocoaPods 自动集成

    podfile 里面添加以下代码:

     source 'https://github.com/CocoaPods/Specs.git' // 指定下载源
     
    # 以下两种版本选择方式示例
    
    # 集成最新版SDK:
    pod 'NTESOcrSDK'
    
    # 集成指定SDK,具体版本号可先执行 pod search NTESOcrSDK,根据返回的版本信息自行决定:
    pod 'NTESOcrSDK', '~> 1.1.0'
    
    • 保存并执行 pod install 即可,若未执行 pod repo update,请执行pod install --repo-update

    手动集成

    • 1、添加易盾SDK,将压缩包中所有资源添加到工程中(请勾选Copy items if needed选项)
    • 2、添加依赖库,在项目设置target -> 选项卡General ->Linked Frameworks and Libraries添加如下依赖库,如果已存在如下的系统framework,则忽略:
      • AVFoundation.framework
      • CoreMedia.framework
      • AssetsLibrary.framework
      • CoreData.framework

    项目开发配置

    • 1、在Xcode中找到TARGETS-->Build Setting-->Linking-->Other Linker Flags在这个选项中需要添加 -ObjC
    • 2、将引入SDK头文件的.m文件重命名为.mm文件 或者 在Xcode中找到TARGETS-->Build Setting-->Apple Clang - Language-->Compile Source As在这个选项中选择 Objective-C++
    • 3、在 info.plist 里增加相机权限
    <!-- 相册 -->   
    <key>NSPhotoLibraryUsageDescription</key>   
    <string>App需要您的同意,才能访问相册</string>   
    <!-- 相机 -->   
    <key>NSCameraUsageDescription</key>   
    <string>App需要您的同意,才能访问相机</string> 
    

    调用示例

    @property (nonatomic, strong) NTESLiveDetectManager *detector;
    
    /// 初始化
    self.manager = [[NTESOcrSdkManager alloc] initWithImageView:imageView scanRect:CGRectMake((SCREEN_WIDTH - 360 * KWidthScale)/2, 240, 360 * KWidthScale, 227 * KHeightScale)];
    
    /// 开始身份证识别
    [self.manager startDetectWithBusinessID:@"yourbusinessid" cardReverseType:(NTESCardReverseType)self.detectType completionHandler:^(NTESOcrStatus status, NSDictionary * _Nullable params) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf showToastWithLiveDetectStatus:status params:params];
        });
    }];
    

    SDK 方法说明

    1 初始化

    在项目需要使用 SDK 的文件中先引入 #import <NTESOcrSdk/NTESOcrSdk.h> 然后再初始化的 SDK,如下:

    @property (nonatomic, strong) NTESOcrSdkManager *detector;
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.manager = [[NTESOcrSdkManager alloc] initWithImageView:imageView scanRect:CGRectMake((SCREEN_WIDTH - 360 * KWidthScale)/2, 240, 360 * KWidthScale, 227 * KHeightScale)];
    }
    

    参数说明:

    参数 类型 是否必填 默认值 描述
    imageView UIImageView 传入放置 OCR 的imageView对象
    scanRect CGRect 身份证扫描框相对于传入放置检测的imageView对象的坐标

    2 开始身份证识别

    代码说明:

    [self.manager startDetectWithBusinessID:@"易盾分配的业务ID" cardReverseType:NTESCardReverseTypeFront completionHandler:^(NTESOcrStatus status, NSDictionary * _Nullable params) {
        
    }
    
    • 参数说明:

      参数 类型 是否必填 默认值 描述
      businessID NSString 易盾分配的业务id
      cardReverseType enum NTESCardReverseTypeFront 身份证检测的方向。传入NTESCardReverseTypeFront表示正面检测,NTESCardReverseTypeBack表示国徽面检测
    • completionHandler 回调参数说明

      回调字段 类型 描述
      status enum
      NTESOcrBusinessIdAvailable 业务ID可用

      NTESOcrBusinessIdInvalid 业务ID不可用

      NTESOcrCheckPass 身份证检测通过

      NTESOcrCheckNotPass 身份证检测不通过

      NTESOcrGetConfTimeout 身份证测获取配置信息超时

      NTESOcrOperationTimeout 操作超时,用户未在规定时间内完成动作

      NTESOcrNonGateway 网络未连接

      NTESOcrSDKError SDK内部发生错误

      NTESOcrCameraNotAvailable App未获取相机权限
      params NSDictionary @"imageFilePath":"身份证图片路径"

    3 停止身份证检测

    代码说明:

    [self.detector stopDetect];
    

    4 设置检测的超时时间

    代码说明:

    [self.detector setTimeoutInterval:timeoutInterval];
    

    参数说明:

    类型 是否必填 默认值 描述
    NSTimeInterval 120 请传入1-1800范围内的时间值,单位s
    在线咨询 电话咨询:95163223 免费试用