209
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
百度人脸识别使用指南-人脸实名认证APP端iOS方案集成指南

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/200G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>



点击这里点击这里申请百度智能云特邀VIP帐号,立即体验人脸识别>>>

百度人脸识别使用指南-人脸实名认证APP端iOS方案集成指南

1. 文档说明

文档名称人脸实名认证APP方案 6.1版本集成文档
所属平台iOS
提交日期2023-5-29


2. 版本说明

名称版本号
名镜方案6.1.0
系统支持iOS 9.0 +
IDEXcode 13.1+


3. SDK说明

SDK版本号说明类型
BDFaceBaseKit.framework6.1.0人脸采集SDK静态库
AipOcrSdk.framework1.1.0OCR识别SDK动态库
AipBase.framework1.0.0基础工具类SDK动态库
IdcardQuality.framework1.0.0身份证质量控制SDK动态库
BDFaceLogicLayer.framework1.0.0名镜服务SDK静态库


4. 运行项目工程

4.1 打开下载的iOS示例工程

如下图所示:

iOS4.1.png


4.2 使用如下链接请求百度Token

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】 注意:上述百度云应用的AK和百度云应用的SK,应当替换为您自己名下的AK和SK。 详细获取资料,请参考:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu 最终获取到的token应如下图所示:

image.png


4.3 全局搜索关键词: #warning developer

注意:这种方式只是调试阶段的代码,上线代码不可用如下方式,而应该每次都重写获取,因为token会在一定时间内变化)可以找到如下,被注释的代码 /// self.accessToken = @"";如下图所示

iOS4.3.png

【重要】这里这种写法仅仅用于测试功能,正式上线,token不能写成固定值,需要每次都请求。为了安全期间,建议将请求放到自己服务器上,做一层转发,而不是将AK,SK写在端上来请求。

打开这个注释,将上述token内容写入:例: self.accessToken = @"25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074"; 代码如下图所示:

4.3.2.png


4.4 确认bundleId等信息是否正确

连接真机进行运行,之后可以看到如下界面:

4.4.png


4.5 点击开始身份认证

测试示例工程是否跑通,之后扫码身份证或输入身份证信息后,点击进行身份核验,验证成功可以看到如下界面:

iOS4.5.png

上图为示例工程运行成功,之后可以将示例工程代码集成到目标项目中。


5. 集成步骤

5.1 将BDFaceSDK文件夹下所有文件拖动到目标项目中

如下图所示

iOS5.1.png


5.2 将AipBase.framework, AipOcrSdk.framework和IdcardQuality.framework DebugFramework.framework拖动到目标项目

如下所图示

iOS5.2.png


5.3 将BDFaceSDK文件夹(如下图所示的文件夹)整体拖入到目标代码中;

iOS5.3.png


5.4 在Build Phases中点击下面的+号

选择NewCopyFilePhases,添加一个CopyFiles(可重新命名为Embed)


5.5 双击CopyFiles

改为Embed Frameworks,同时Destination改为framework,之后将AipBase.framework、AipOcrSdk.framework和IdcardQuality.framework 拖动到下面

iOS5.5.png


如下图所示:

iOS5.6.png


5.7 确认添加的库文件设置正确

如下图所示,点击general, 这三个库需要为Do Not Embed:BDFaceBaseKit.framework, BDFaceLogicLayer.framework,CoreTelephony.framework.

iOS5.7.png


5.8 info.plist 文件中添加以下key(获取相机和照片权限)

iOS5.8.png

最后之后可以将人脸核验示例工程代码代码结合自身工程项目,将相关代码集成到目标工程中。


6. 授权文件、加密文件

人脸识别授权文件(idl-license.face-ios),图片加密文件(idl-key.face-ios),OCR身份证识别授权文件(aip.license),从console平台下载完iOS项目,这些文件即包括在下载的示例项目中,不需要特殊处理,按上面第5.3步整体拖入目标项目中即可。


7. 人脸相关接口

7.1 初始化接口

初始化接口调用 用于初始化人脸识别和OCR识别

API描述
-(instancetype)initWithController:(UIViewController * _Nonnull)controller face:(void(^)(void))initFaceBlock ocr:(void(^)(void))initOcrBlock传入当前controller,并初始化人脸和ocrSDK

入参说明

参数类型说明
controllerUIViewController *当前controller
initFaceBlockBlock对象人脸识别初始化Block
initOcrBlockBlock对象OCR识别初始化Block

initFaceBlock中,使用以下函数进行人脸SDK初始化 -(void)initCollectWithLicenseID:(NSString )licenseID andLocalLicenceName:(NSString )licenseName andExtradata:(NSDictionary *)extradata callback:(FaceSDKInitResultBlock )block;

回调状态码说明

参数类型说明
BDFaceInitRemindCode枚举初始化人脸的状态码,1000为成功,其他为失败,详情参考如下错误码说明

具体枚举值如下

枚举值对应数字说明自查建议
BDFaceInitOK1000初始化成功
BDFaceLICENSE_NOT_INIT_ERROR1001license未初始化请按照集成文档说明完成SDK初始化
BDFaceLICENSE_DECRYPT_ERROR1002license数据解密失败请检查License文件是否正确
BDFaceLICENSE_INFO_FORMAT_ERROR1003license数据格式错误请检查license文件内容有被修改过
BDFaceLICENSE_KEY_CHECK_ERROR1004license-key(api-key)校验错误请检查工程代码初始化参数中的licenseId,和申请license文件的licenseId是否匹配
BDFaceLICENSE_ALGORITHM_CHECK_ERROR1005算法ID校验错误请提交工单或者线下联系百度产研人员
BDFaceLICENSE_MD5_CHECK_ERROR1006MD5校验错误请检查工程所使用的签名文件,和申请license文件的签名信息是否匹配
BDFaceLICENSE_DEVICE_ID_CHECK_ERROR1007设备ID校验错误采集SDK的授权模式不会出现这个错误码
BDFaceLICENSE_PACKAGE_NAME_CHECK_ERROR1008包名(应用名)校验错误请检查工程代码中的applicationId(包名)和申请license文件的applicationId(包名)是否匹配
BDFaceLICENSE_EXPIRED_TIME_CHECK_ERROR1009授权过期时间有问题请提交工单或者线下联系百度产研人员
BDFaceLICENSE_FUNCTION_CHECK_ERROR1010功能未授权请查看授权文件中是否缺少必要的采集SDK功能声明(funclist参数),例如炫瞳活体
BDFaceLICENSE_TIME_EXPIRED1011授权已过期请查看当前设备时间是否已不在授权文件有效期内
BDFaceLICENSE_LOCAL_FILE_ERROR1012本地授权文件读取失败请检查授权文件名称以及路径
BDFaceLICENSE_REMOTE_DATA_ERROR1013远程授权文件拉取失败本地鉴权失败之后,会远程拉取授权文件;若远程鉴权依然失败,可以关闭网络后重试
BDFaceLICENSE_LOCAL_TIME_ERROR1014本地时间校验错误请检查当前设备时间是否早于实际时间
BDFaceOTHER_ERROR1015其他错误请提交工单或者线下联系百度产研人员
BDFaceILLEGAL_PARAMS2001非法的参数请提交工单或者线下联系百度产研人员
BDFaceMEMORY_ALLOCATION_FAILED2002内存分配失败请提交工单或者线下联系百度产研人员
BDFaceINSTANCE_IS_EMPTY2003实例对象为空请提交工单或者线下联系百度产研人员
BDFaceMODEL_IS_EMPTY2004模型内容为空请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_ABILITY_TYPE2005不支持的能力类型请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_INFER_TYPE2006不支持的预测库类型请提交工单或者线下联系百度产研人员
BDFaceNN_CREATE_FAILED2007预测库对象创建失败请提交工单或者线下联系百度产研人员
BDFaceNN_INIT_FAILED2009预测库对象初始化失败请提交工单或者线下联系百度产研人员
BDFaceABILITY_INIT_FAILED2010人脸能力初始化失败请按照集成文档说明正常完成SDK初始化
BDFaceABILITY_UNLOAD2011能力未加载请确认当前人脸相关资源库是否完整引用
BDFaceABILITY_ALREADY_LOADED2012人脸能力已加载底层已做过滤,无需关注
BDFaceNOT_AUTHORIZED2013未授权检查授权文件是否按照集成文档正常使用
BDFaceABILITY_RUN_EXCEPTION2014人脸能力运行异常请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_IMAGE_TYPE2015不支持的图像类型请提交工单或者线下联系百度产研人员
BDFaceIMAGE_TRANSFORM_FAILED2016图像转换失败检查摄像头分辨率,格式要求 %2==0


7.2 人脸实名认证接口(有源)

基于姓名、身份证号、当前SDK获取的人脸图片,与公安权威数据源进行对比,并得出比对分数,并基于此进行业务判断是否为同一人。
此处最终采集到的数据经过加密处理,需要配合开放平台人脸实名认证V4接口使用,包含活体检测、质量检测、实名认证功能,可通过传入参数进行控制,如您的业务场景核心为实名认证,无需重复请求7.3活体检测接口(startFaceLiveness)。

:如果配置APP方案时,身份信息录入的方式选择【业务调用时传入身份信息】,那么通过APP服务端接口获取姓名和证件号后,将获取到的姓名和证件号赋值给name和idcard_number字段即可。

API描述
-(void)startRecognize:(NSDictionary )dic callBack:(void(^)(int resultCode, NSDictionary resultDic))callBack;实名认证接口

入参dic (NSDictionary类型) key值列表如下:

参数Value类型说明必选
BDFaceLogicServiceTokenKeyNSString访问Token,需要APP服务端通过AK、SK获取
BDFaceLogicServiceNameKeyNSString在控制台配置的方案Id
BDFaceLogicServiceCardNumberKeyNSNumber姓名
BDFaceLogicServiceCardTypeKeyNSString证件类型(默认为0)0:中国居民二代身份证,1:港澳台来往内陆通行证,2:外国人永久居留证,3:定居海外的中国公民护照,4:港澳台居民居住证
BDFaceLogicServicePlanIdKeyNSString方案ID
BDFaceLogicServiceOnlineQualityControlKeyNSString质量控制参数 LOW:宽松 NORMAL:正常
BDFaceLogicServiceLivenessQualityControlKeyNSString活体控制参数 LOW:宽松 NORMAL:正常 HIGH:严格

回调说明

参数类型含义
resultCodeint错误码0为成功,其他为失败,详情参考回调code错误码说明
resultDicNSDictionary回调结果详情见下表

resultDic key值列表说明:

Key值类型含义
BDFaceLogicServiceReturnKeyForResultMsgNSStringcode对应的错误码,详情见code错误码说明
BDFaceLogicServiceReturnKeyForResultDataDictionary服务端返回结果,错误码为0时此字段存在内容,可以参考人脸实名认证V4接口文档。

resultCode和resultMsg对应情况如下:

resultCoderesultMsg自查建议
1成功采集流程正常返回结果
-101已有采集流程运行中前面有人脸流程还未结束,建议排查是否存在未关闭的采集流程的页面进程
-102采集流程取消用户自行取消采集流程,调用cancel接口触发
-103安全SDK未初始化未成功启动安全SDK(指的是采集SDK内部封装的安全模块),初始化配置尽可能早
-105安全SDK未加载未成功启动安全SDK(指的是采集SDK内部封装的安全模块),初始化配置尽可能早
-106网络错误检查网络环境
-201风控验证失败是否越狱设备
-301云端验证异常云端错误,检查加解密相关信息
-302摄像头未授权请检查摄像头权限
-303视频录制错误是否授权视频/音频
-305在线筛选图片异常没有成功拿到图片,检查白盒、licenseid是否正确
-401超时,用户取消采集流程非预期用户行为导致的总流程超时,可通过设置延长超时时间限制
-402炫瞳异常炫瞳打光颜色与模型输出不匹配
-403活体分数异常活体分数不在正常范围,可能是受到活体攻击异常导致,建议在安全人脸环境下重新采集
-404活体分数异常活体分数不在正常范围,可能是受到活体攻击异常导致,建议在安全人脸环境下重新采集
-405动作活体分数过低动作活体图片分数过低
-1001网络异常检查网络是否畅通
-1002accessToken参数不合法accessToken参数为空
-1003姓名参数不合法请检查参数是否为空或格式不规范
-1004证件号参数不合法请检查参数是否为空或格式不规范


7.3 活体检测接口

包含本地活体加云端活体,本地活体分静默活体、炫瞳活体、动作活体三种,云端活体可以判断图片中的人脸是否为二次翻拍以及是否为合成图攻击。
此处最终采集到的数据经过加密处理,需要配合开放平台在线图片活体V4接口使用,实现二次验证采集图片是否存在假体攻击破绽的情况。
如您的业务场景核心为人脸实名认证,请直接请求7.2 实名认证接口

API描述
-(void)startRecognizeToCheckLive:(NSDictionary )dic callBack:(void(^)(int resultCode, NSDictionary resultDic))callBack;活体检测接口

入参dic (NSDictionary类型) key值列表如下:

参数类型说明必选
BDFaceLogicServiceTokenKeyNSString访问Token,需要APP服务端通过AK、SK获取access_token

回调说明

参数类型含义
resultCodeint错误码0为成功,其他为失败,详情参考实名认证resultCode错误码说明
resultDicNSDictionary回调结果详情见下表

callback key值列表说明:

Key值类型含义
BDFaceLogicServiceReturnKeyForResultMsgNSStringcode对应的错误码,详情见code错误码说明
BDFaceLogicServiceReturnKeyForResultDataDictionary服务端返回结果,错误码为0时此字段存在内容,可以参考在线图片活体V4接口文档。


7.4 人脸采集及人脸比对接口(无源)

包含本地质量和本地活体,本地质量可以确保采集到的人脸图像符合各条件校验(满足姿态角、光照、模糊度、遮挡等校验),本地活体分静默活体、炫瞳活体、动作活体三种。
此处最终采集到的数据经过加密处理,需要配合开放平台人脸对比V4接口使用,包含活体检测、质量检测、人脸1:1识别功能,可通过传入参数进行控制,如您的业务场景核心为实名认证,无需重复请求7.3活体检测接口(startFaceLiveness)。

返回值API描述
-(void)startFaceCollect:(void(^)(int resultCode, NSDictionary *resultDic))callBack;人脸采集接口

回调说明

参数类型含义
resultCodeint错误码0为成功,其他为失败,详情参考实名认证code错误码说明
resultDicNSDictionary回调结果详情见下表

resultDic key值列表说明:

Key值类型含义
resultMsgString详情见code错误码说明
sKeyString安全相关:sKey
xDeviceIdString安全相关:xDeviceId
dataString安全相关数据


7.5 人脸相关配置

人脸相关配置来自于百度云控制台下发的console_config.json文件,详细参考BDConfigFileParser类,不设置,将使用默认值。


8. OCR身份证识别相关接口

8.1 OCR身份证识别初始化接口

API描述
-(void) authWithLicenseFileData: (NSData *)licenseFileContent;将aip.license文件的NSData数据传入OCR SDK进行初始化和鉴权

入参说明

参数类型含义
licenseFileContentNSData将aip.license文件读出来,转发NSData类型

注:如果aip.license文件鉴权文件正确,那么可以使用OCR识别成功识别身份证信息。

8.2 OCR身份证识别接口

支持对二代居民身份证字段进行结构化识别,包括姓名、性别,调用参考OCR身份证识别接口文档。

返回值API描述
UIViewController-(UIViewController )startOcrRecognize:(BDAipOCRConfig )config didGetImage:(void(^)(UIImage image))getImageAction success:(void(^)(NSDictionary result))success failure:(void (^)(NSError *error))failure;OCR识别接口

参数值列表如下:

参数类型说明必选
configBDAipOCRConfig用于设置OCR页面相关UI
getImageActionBlock获取到的图片信息回调
successBlock获取身份信息成功回调
failureBlock获取身份信息失败回调

config配置说明

属性类型说明
titleViewBgColorUIColorOCR页面导航栏背景色,默认为白色
pageTitleNSStringOCR标题内容,默认为"身份信息采集"
pageTitleTextColorUIColorOCR标题颜色,默认为黑色
topTipTextNSStringOCR顶部扫描文字,默认为"请将您本人的\n身份证人像面放入框内"
topTipTextColorUIColorOCR 顶部文字颜色,默认为白色


9. 权限

名称用途
Privacy - Camera Usage Description获取相机权限,需要使用相机做人脸识别和OCR识别
Privacy - Photo Library Additions Usage DescriptioniOS 11及以后保存照片到相册权限,OCR识别需要从相册选择照片
Privacy - Photo Library Usage Description使用相册权限,OCR识别需要从相册选择照片
Privacy - Microphone Usage Description人脸识别视频录制功能会使用该权限


10. 只使用人脸采集功能,不使用OCR

10.1 运行示例工程代码

点击开始身份核验,走完所有流程,可以出现如下界面:

iOS10.1.png

10.2 删除库文件:AipOcrSdk.framework,AipBase.framework,IdcardQuality.framework

10.3 全局搜索与AipOcrSDK/AipOcrSdk.h

找到后并删除项目中所有引入对应SDK的代码,也可以注释,在删除后可能导致编译不通过,可以根据报错部分保证正常功能不受影响的同时进行相应的代码注释。

10.4 全局搜索 -(void) startOCRSdk 并注释该函数

注意:其他编译报错部分调用的地方也需要注释或删除

// 打开相机扫描
     - (void)startOCRSdk {
    [self configCallback];
    // 身份证识别
    [AipCaptureCardVC clearIdCard];
    BDAipOCRConfig *config = [[BDAipOCRConfig alloc] init];
    AipNavigationController *detectNavi = [AipCaptureCardVC viewControllerToDetectIdCard:config
                                                 handler:^(UIImage *image) {
        _idCardImage = image;
        [[AipOcrService shardService] detectIdCardFrontFromImage:image
                                                     withOptions:nil
                                                  successHandler:^(id result) {
            _successHandler(result);
        } failHandler:_failHandler];
    }];
    UIViewController *detectRoot = [[UIViewController alloc] init];
    detectRoot.view.backgroundColor = [UIColor whiteColor];
    detectRoot.view.clipsToBounds = YES;
    [detectRoot addChildViewController:detectNavi];
    [detectRoot.view addSubview:detectNavi.view];

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

    _vc = detectRoot;
    __weak typeof(detectRoot) weakDetectRoot = detectRoot;
    detectNavi.captureController.backAction = ^{
        [weakDetectRoot.navigationController popViewControllerAnimated:YES];
    };}

10.5 .编译运行代码首页并将身份证OCR功能关闭或者使用代码

// 身份证获取方式   1 OCR扫描    0  手动输入  2代码传
    + (int)useOCR {
    BDConfigDataService *service = [self sharedInstance];
    NSNumber *value = service.sharedDic[BDConfigDataServiceKeyForSettingOcr];
    if (value) {
        return value.intValue;
    }
    return [[BDConfigFileParser sharedInstance] useOCR];}

10.6 将userOCR的值设置为0

保证程序只能手动输入身份信息来调用人脸,此部分功能模块不使用也可以对应删除。

iOS10.6.png

运行工程


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!