2 iOS SDK Mini OCR使用说明

2.1 准备工作

  • 确认已经获取AppID、AppKey、OCR License(aip.license)。将aip.license放到CWResource.bundle资源包中。

2.2 引入SDK和配置文到工程中

  • 将下面提到的framework和bundle资源添加到项目。

    1. PayEgisOCR.framework
    2. AipBase.framewo
    3. IdcardQuality.framework
    4. CWResource.bundle
  • 在Linked Frameworks and Libraries 添加以下库

    1. Foundation.framework
    2. AipBase.framework
    3. AVFoundation.framework
    4. CoreMedia.framework
    5. PayEgisOCR.framework
    6. IdcardQuality.framework
    7. libstdc++.tbd

  • 在General-> Embeded Binaries 中添加:

  • 修改项目配置

    Other Link flags添加-ObjC


    info.plist 配置

    1. iOS 集成需要在 info.plist 文件中添加“Privacy - Camera Usage Description”字段,客户根据业务需求填写相关说明。
    2. iOS 集成需要在 info.plist 文件中添加“Privacy - Microphone Usage Description”字段,客户根据业务需求填写相关说明。
    3. iOS 集成需要在 info.plist 文件中添加“Privacy - Photo Library Usage Description”字段,客户根据业务需求填写相关说明。
  • 在所需类中导入.h文件
#import <PayEgisOCR/PayEgisAuthentication.h>

2.3 SDK初始化

  方法名为:

- (void) initSDK : (NSMutableDictionary *) context completionBlock:(PayegisAuthInitCompletionBlock)completionBlock

  参数说明:

参数名称 参数类型 描述 备注
context NSMutableDictionary 上下文 初始化参数

  上下文参数说明

参数名称 参数类型 描述 备注
PayegisAuthSDKAppId NSString AppId 申请下发的id
PayegisAuthSDKAppKey NSString AppKey 申请下发的key

参考代码:

PayegisAuthSDK *_sdk = [PayegisAuthSDK shareInstance]; // OCR扫描界面是否支持选择图库图片 //_sdk.isShowAlbum = YES; // 设置OCR返回结果是图片对象还是字典对象 // [_sdk setOCRCallBackImageType:NO]; NSMutableDictionary *context = [NSMutableDictionary dictionaryWithObjectsAndKeys: AppId,PayegisAuthSDKAppId, AppKey,PayegisAuthSDKAppKey,nil]; [_sdk initSDK:context completionBlock:^(NSError *error) { if (!error) { NSLog(@"初始化成功"); } }];

[danger] 注意

OCR扫描界面是否支持选择图库图片,通过isShowAlbum属性控制;

setOCRCallBackImageType 设置OCR扫描返回结果的类型 YES 返回UIImage对象 NO 返回NSDictionary对象,包括裁剪图和原图

2.4 身份证OCR

先使用'openOCR'方法获取身份证正面和反面图像,然后调用'idOCROnly'方法,获取身份证相关信息

  • 身份证OCR扫描获取图片,v3.3.0版本中新增方法,可以无需退出扫描界面直接进行下一面的扫描。可以根据需求选择调用的方法,下面是两个方法的介绍和使用。

1.OCR 扫描(身份证单面扫描)

方法名称为:

- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock

需要以下入参:

参数 参数类型 描述 备注
PECardType NS_ENUM 卡片类型 PECardType_ID_FRONT 身份证正面
PECardType_ID_BACK 身份证反面
PECardType_BANK 银行卡
PECardType_Other 其他类型卡片

参考代码:

WeakSelf(weakSelf) [_sdk openOCR:PECardType_ID_FRONT completionBlock:^(id returnObj) { if ([returnObj isKindOfClass:[NSDictionary class]] ) { NSDictionary *imageDic = (NSDictionary *) returnObj; if (imageDic.allKeys.count > 0) { // 裁剪过后的图 [weakSelf.idCardFrontImgV setImage:imageDic[@"image"]]; weakSelf.frontImg = imageDic[@"image"]; //原图 weakSelf.frontOriginImg = imageDic[@"orign"]; } }else{ if (returnObj != nil) { [weakSelf.idCardFrontImgV setImage:returnObj]; weakSelf.frontImg = returnObj; } } }];

2.OCR 扫描(身份证自动正反面扫描)

方法名称为:

- (void) openOCR:(PECardType) cardType idImgsDictinary:(NSDictionary *) idImgsDictinary completionBlock:(ImageOCROnceBlock) retunBlock

需要以下入参:

参数 参数类型 描述 备注
PECardType NS_ENUM 卡片类型 PECardType_ID_FRONT 身份证正面(先进行正面扫描)
PECardType_ID_BACK 身份证反面(先进行反面扫描)
idImgsDictinary NSDictionary 正反面图片 选填
front 身份证正面图片 back 身份证反面图片

参考代码:

WeakSelf(weakSelf) NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:self.frontImg?self.frontImg:@"",@"front",self.backImg,@"back", nil]; [_sdk openOCR:PECardType_ID_FRONT idImgsDictinary:dic completionBlock:^(id frontObj, id backObj) { if ([frontObj isKindOfClass:[NSDictionary class]] ) { NSDictionary *frontDic = (NSDictionary *) frontObj; if (frontDic.allKeys.count > 0) { [weakSelf.idCardFrontImgV setImage:frontDic[@"image"]]; weakSelf.frontImg = frontDic[@"image"]; // 原图 weakSelf.frontOriginImg = frontDic[@"orign"]; } NSDictionary *backDic = (NSDictionary *) backObj; if (backDic.allKeys.count > 0) { [weakSelf.idCardbackImgV setImage:backDic[@"image"]]; weakSelf.backImg = backDic[@"image"]; // 原图 weakSelf.backOriginImg = backDic[@"orign"]; } }else{ if (frontObj) { [weakSelf.idCardFrontImgV setImage:frontObj]; weakSelf.frontImg = frontObj; } if (backObj) { [weakSelf.idCardbackImgV setImage:backObj]; weakSelf.backImg = backObj; } } }];
  • 获取身份证相关信息

  方法名称为:

- (void) idOCROnly:(UIImage * ) frontImg backImg:(UIImage *) backImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock

  需要以下入参

参数名称 参数类型 描述
frontImg UIImage 身份证正面
backImg UIImage 身份证反面

参考代码:

WeakSelf(weakSelf) [_sdk idOCROnly:self.idCardFrontImgV.image backImg:self.idCardbackImgV.image completionBlock:^(NSDictionary *result, NSError *error) { [weakSelf hideWaiting]; if (error) { NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey]; [weakSelf showError:string]; }else{ [weakSelf.nameView setInfoString:result[@"name"]]; [weakSelf.IDView setInfoString:result[@"cid"]]; [weakSelf.timeView setInfoString:[NSString stringWithFormat:@"%@-%@",result[@"validateFrom"],result[@"validateTo"]]]; } }];
  • result相关身份信息如下:
名称 类型 描述
name NSString 姓名
cid NSString 身份证号
sex NSString 性别
folk NSString 民族
birthday NSString 出生
address NSString 地址
authority NSString 发证机关
validateFrom NSString 有效期开始时间
validateTo String 有效期结束时间

2.5 银行卡OCR

  先使用’openOCR’获取银行卡图片,然后调用’ bankOCROnly’方法,获取银行卡相关信息

  • 银行卡OCR扫描获取图片

  方法名称为:

- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock

  需要以下入参

参数名称 参数类型 描述 备注
PECardType NS_ENUM 卡片类型 PECardType_ID_FRONT 身份证正面
PECardType_ID_BACK 身份证反面
PECardType_BANK 银行卡
PECardType_Other 其他类型卡片

参考代码:

WeakSelf(weakSelf) [_sdk openOCR:PECardType_BANK completionBlock:^(id returnObj) { if ([returnObj isKindOfClass:[NSDictionary class]]) { NSDictionary *bankDic = (NSDictionary *) returnObj; if (bankDic.allKeys.count > 0) { [weakSelf.bankImgV setImage:bankDic[@"image"]]; weakSelf.bankCardImg = bankDic[@"image"]; // 原图 weakSelf.bankCardOriginImg = bankDic[@"orign"]; } }else{ if (returnObj == nil) { return; } weakSelf.bankCardImg = returnObj; [weakSelf.bankImgV setImage:returnObj]; } }];
  • 获取银行卡相关信息

  方法名称为:

- (void) bankOCROnly:( UIImage * _Nonnull) bankImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock

  需要以下入参

参数名称 参数类型 描述
bankImg UIImage 银行卡正面

参考代码:

WeakSelf(weakSelf) [_sdk bankOCROnly:self.bankImgV.image completionBlock:^(NSDictionary *result, NSError *error) { [weakSelf hideWaiting]; if (error) { NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey]; [weakSelf showError:string]; }else{ NSString *cardNO = [self subStringWithNumber:4 str:result[@"cardno"] padding:@" "]; [weakSelf.cardView setInfoString:cardNO]; [weakSelf.bankView setInfoString:result[@"bankname"]]; [weakSelf.typeView setInfoString:result[@"cardtype"]]; } }];
  • result相关银行信息如下:
名称 类型 描述
bankname NSString 发卡行
cardno NSString 银行卡号
cardtype NSString 卡类型

2.6 驾驶证OCR

先使用'openOCR'获取驾驶证图片,然后调用'drivingOCROnly'方法,获取驾驶证相关信息。

  • 驾驶证OCR扫描获取图片 方法名称为:
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock

需要以下入参:

参数 参数类型 描述 备注
PECardType NS_ENUM 卡片类型 PECardType_ID_FRONT 身份证正面
PECardType_ID_BACK 身份证反面
PECardType_BANK 银行卡
PECardType_Other 其他类型卡片

参考代码:

WeakSelf(weakSelf) [_sdk openOCR:PECardType_Other completionBlock:^(id returnObj) { if ([returnObj isKindOfClass:[NSDictionary class]]) { NSDictionary *bankDic = (NSDictionary *) returnObj; if (bankDic.allKeys.count > 0) { [weakSelf.contentIV setImage:bankDic[@"image"]]; weakSelf.contentImg = bankDic[@"image"]; } }else{ if (returnObj == nil) { return; } weakSelf.contentImg = returnObj; [weakSelf.contentIV setImage:returnObj]; } }];
  • 获取驾驶证相关信息 方法名称为:
- (void) drivingOCROnly:(UIImage *) contentImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock

需要以下入参:

参数 参数类型 描述
contentImg UIImage 驾驶证图片

参考代码:

WeakSelf(weakSelf) [_sdk drivingOCROnly:self.contentImg completionBlock:^(NSDictionary *result, NSError *error) { [weakSelf hideWaiting]; if (error) { NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey]; [weakSelf showError:string]; }else{ // 处理结果 [weakSelf ocrOnDrivingLicenseSuccessful:result]; } }]; // 处理结果方法 - (void)ocrOnDrivingLicenseSuccessful:(id)result { NSLog(@"%@", result); NSMutableString *message = [NSMutableString string]; if(result){ [self.nameInfoView setInfoString:result[@"name"]]; [self.sexInfoView setInfoString:result[@"sex"]]; [self.bornInfoView setInfoString:result[@"birthday"]]; [self.countryInfoView setInfoString:result[@"nationality"]]; [self.addressInfoView setInfoString:result[@"address"]]; [self.driveTypeInfoView setInfoString:result[@"type"]]; [self.carNumInfoView setInfoString:result[@"certNo"]]; [self.startDateInfoView setInfoString:result[@"validateFrom"]]; [self.initialDateInfoView setInfoString:result[@"getCertTime"]]; if ([result[@"validateTo"] length]) { [self.effectiveDateInfoView setInfoString:[NSString stringWithFormat:@"%@至%@",result[@"validateTime"],result[@"validateTo"]]]; }else{ [self.effectiveDateInfoView setInfoString:result[@"validateTime"]]; } }else{ [message appendFormat:@"%@", result]; } }
  • result相关驾驶证信息如下:
名称 类型 描述
name NSString 姓名
sex NSString 性别
birthday NSString 出生日期
nationality NSString 国籍
address NSString 住址
type NSString 准驾车型
certNo NSString 证号
validateFrom NSString 有效起始日期
getCertTime NSString 初次领证日期
validateTime NSString 有效日期(如:6年,或者拼接validateTo形成时间区间)
validateTo NSString 有效日期截止时间

2.7 行驶证OCR

先使用'openOCR'获取行驶证图片,然后调用'vehicleOCROnly'方法,获取行驶证相关信息。

  • 行驶证OCR扫描获取图片 方法名称为:
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock

需要以下入参:

参数 参数类型 描述 备注
PECardType NS_ENUM 卡片类型 PECardType_ID_FRONT 身份证正面
PECardType_ID_BACK 身份证反面
PECardType_BANK 银行卡
PECardType_Other 其他类型卡片

参考代码:

WeakSelf(weakSelf) [_sdk openOCR:PECardType_Other completionBlock:^(id returnObj) { if ([returnObj isKindOfClass:[NSDictionary class]]) { NSDictionary *bankDic = (NSDictionary *) returnObj; if (bankDic.allKeys.count > 0) { [weakSelf.contentIV setImage:bankDic[@"image"]]; weakSelf.contentImg = bankDic[@"image"]; } }else{ if (returnObj == nil) { return; } weakSelf.contentImg = returnObj; [weakSelf.contentIV setImage:returnObj]; } }];
  • 获取行驶证相关信息 方法名称为:
- (void) vehicleOCROnly:(UIImage *) contentImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock

需要以下入参:

参数 参数类型 描述
contentImg UIImage 行驶证图片

参考代码:

WeakSelf(weakSelf) [_sdk vehicleOCROnly:self.contentImg completionBlock:^(NSDictionary *result, NSError *error) { [weakSelf hideWaiting]; if (error) { NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey]; [weakSelf showError:string]; }else{ [weakSelf ocrOnVehicleLicenseSuccessful:result]; } }]; // 处理结果方法 - (void)ocrOnVehicleLicenseSuccessful:(id)result { NSLog(@"%@", result); NSMutableString *message = [NSMutableString string]; if(result){ // 所有人、住址、品牌型号、车辆类型、号牌号码、 //发动机号码、使用性质、注册日期、发证日期、车辆识别代码、 [self.nameInfoView setInfoString:result[@"name"]]; [self.addressInfoView setInfoString:result[@"address"]]; [self.brandTyhpeInfoView setInfoString:result[@"brand"]]; [self.carTypeInfoView setInfoString:result[@"carType"]]; [self.numberInfoView setInfoString:result[@"plate"]]; [self.engineNumInfoView setInfoString:result[@"engine"]]; [self.useInfoView setInfoString:result[@"useType"]]; [self.registDateInfoView setInfoString:result[@"registerDate"]]; [self.issueDateInfoView setInfoString:result[@"certDate"]]; [self.idCodeInfoView setInfoString:result[@"nickNo"]]; }else{ [message appendFormat:@"%@", result]; } } }
  • result相关行驶证信息如下:
名称 类型 描述
name NSString 所有人
address NSString 住址
brand NSString 品牌型号
carType NSString 车辆类型
plate NSString 号牌号码
engine NSString 发动机号码
useType NSString 使用性质
registerDate NSString 注册日期
certDate NSString 发证日期
nickNo NSString 车辆识别代码

results matching ""

    No results matching ""

    results matching ""

      No results matching ""