资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

IOS—方案集成指南(升级)

前言

【本文】方案集成指南适用于需要集成APP方案,实现权威数据源核验自传照片人脸比对仅活体检测这3个业务需求时来参考。百度人脸实名认证APP方案默认开启大数据风控功能,即使用人脸识别V4系列API接口接受SDK端传入本地环境扫描的设备指纹及安全信息,并基于百度海量大数据设备因子,对SDK端进行设备风险识别,辨别是否为⻛险设备、并返回识别结果。此方案可有效防御黑产批量虚拟机、病毒侵入等攻击手段,降低第三方黑产攻破概率,提升业务安全性。

特殊的,如果控制台大数据风控选项设定“关闭”,则需要配合开通人脸识别V3系列API接口实现权威数据源核验自传照片人脸比对仅活体检测这3个业务需求。

1. 文档说明

文档名称 人脸实名认证APP方案 6.3版本集成文档
所属平台 iOS
提交日期 2024-05-14

2. 版本说明

名称 版本号
名镜方案 6.4.0
系统支持 iOS 9.0 +
架构 arm64
IDE Xcode 14+

3. SDK说明

SDK 版本号 说明 类型
BDFaceLogicLayer.framework 1.0.0 名镜服务SDK,必须依赖 静态库
BDFaceBaseKit.framework 6.4.0 人脸采集SDK逻辑层,必须依赖 静态库
IDLFaceSDK.framework 1.0.0 人脸采集SDK算法层,非必须依赖 静态库
AipOcrSdk.framework 1.1.0 OCR识别SDK,非必须 动态库
IdcardQuality.framework 1.0.0 身份证质量控制SDK,非必须 动态库
AipBase.framework 1.0.0 基础工具类SDK,非必须 动态库

4. 运行项目工程

4.1 打开下载的iOS示例工程

如下图所示:

dce93e41650da160ae6547f5ebfb69da.jpg


4.4 确认bundleId等信息是否正确

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

4.4.png


4.5 点击开始身份认证

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

iOS4.5.png

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


5. 集成步骤

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

如下图所示

iOS5.1.png


5.2 将BDFaceLogicLayer.framework、AipBase.framework、 AipOcrSdk.framework和IdcardQuality.framework拖动到目标项目

如下所图示

iOS5.2.png


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

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


5.4 双击CopyFiles

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

iOS5.5.png


如下图所示:

iOS5.6.png


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

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

IOS 5.6.png


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

iOS5.8.png

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


6. 人脸初始化接口(SDK)

设置默认参数(动作活体参数,人脸配置参数,UI参数)

Step 1: 初始化人脸和OCR SDK

- (void)initFaceServiceAndInfoCollectService

Step 2: 初始化人脸SDK,进行参数配置。其中涉及活体方案相关的参数配置示例如下

- (void)initFaceSDK
  /// 采集SDK初始化参数
  [BDFaceBaseKitManager sharedInstance].paramsCustomConfigItem.isLivenessType = YES; //是否开启动作活体
  [BDFaceBaseKitManager sharedInstance].paramsCustomConfigItem.isColorType = YES; //是否开启炫彩活体
 
 //如果想实现更精细的活体方案配置
  @property (nonatomic, assign) int     numOfLiveness;                    //  活体动作池中有几个动作 (动作选取)
  @property (nonatomic, assign) int     actionLiveSelectNum;              //  需要从动作活体动作池中抽取几个动作(动作数量)
  @property (nonatomic, strong) NSMutableArray  *liveActionArray;         //  动作活体列表
  

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

入参说明

参数 类型 说明
controller UIViewController * 当前controller
initFaceBlock Block对象 人脸识别初始化Block
initOcrBlock Block对象 OCR识别初始化Block

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

回调状态码说明

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

具体枚举值如下

枚举值 对应数字 说明 自查建议
BDFaceLICENSE_NOT_INIT_ERROR 1001 license未初始化 请按照集成文档说明完成SDK初始化
BDFaceLICENSE_DECRYPT_ERROR 1002 license数据解密失败 请检查License文件是否正确
BDFaceLICENSE_INFO_FORMAT_ERROR 1003 license数据格式错误 请检查license文件内容有被修改过
BDFaceLICENSE_KEY_CHECK_ERROR 1004 license-key(api-key)校验错误 请检查工程代码初始化参数中的licenseId,和申请license文件的licenseId是否匹配
BDFaceLICENSE_ALGORITHM_CHECK_ERROR 1005 算法ID校验错误 请提交工单或者线下联系百度产研人员
BDFaceLICENSE_MD5_CHECK_ERROR 1006 MD5校验错误 请检查工程所使用的签名文件,和申请license文件的签名信息是否匹配
BDFaceLICENSE_DEVICE_ID_CHECK_ERROR 1007 设备ID校验错误 采集SDK的授权模式不会出现这个错误码
BDFaceLICENSE_PACKAGE_NAME_CHECK_ERROR 1008 包名(应用名)校验错误 请检查工程代码中的applicationId(包名)和申请license文件的applicationId(包名)是否匹配
BDFaceLICENSE_EXPIRED_TIME_CHECK_ERROR 1009 授权过期时间有问题 请提交工单或者线下联系百度产研人员
BDFaceLICENSE_FUNCTION_CHECK_ERROR 1010 功能未授权 请查看授权文件中是否缺少必要的采集SDK功能声明(funclist参数),例如炫瞳活体
BDFaceLICENSE_TIME_EXPIRED 1011 授权已过期 请查看当前设备时间是否已不在授权文件有效期内
BDFaceLICENSE_LOCAL_FILE_ERROR 1012 本地授权文件读取失败 请检查授权文件名称以及路径
BDFaceLICENSE_REMOTE_DATA_ERROR 1013 远程授权文件拉取失败 本地鉴权失败之后,会远程拉取授权文件;若远程鉴权依然失败,可以关闭网络后重试
BDFaceLICENSE_LOCAL_TIME_ERROR 1014 本地时间校验错误 请检查当前设备时间是否早于实际时间
BDFaceOTHER_ERROR 1015 其他错误 请提交工单或者线下联系百度产研人员
BDFaceILLEGAL_PARAMS 2001 非法的参数 请提交工单或者线下联系百度产研人员
BDFaceMEMORY_ALLOCATION_FAILED 2002 内存分配失败 请提交工单或者线下联系百度产研人员
BDFaceINSTANCE_IS_EMPTY 2003 实例对象为空 请提交工单或者线下联系百度产研人员
BDFaceMODEL_IS_EMPTY 2004 模型内容为空 请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_ABILITY_TYPE 2005 不支持的能力类型 请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_INFER_TYPE 2006 不支持的预测库类型 请提交工单或者线下联系百度产研人员
BDFaceNN_CREATE_FAILED 2007 预测库对象创建失败 请提交工单或者线下联系百度产研人员
BDFaceNN_INIT_FAILED 2009 预测库对象初始化失败 请提交工单或者线下联系百度产研人员
BDFaceABILITY_INIT_FAILED 2010 人脸能力初始化失败 请按照集成文档说明正常完成SDK初始化
BDFaceABILITY_UNLOAD 2011 能力未加载 请确认当前人脸相关资源库是否完整引用
BDFaceABILITY_ALREADY_LOADED 2012 人脸能力已加载 底层已做过滤,无需关注
BDFaceNOT_AUTHORIZED 2013 未授权 检查授权文件是否按照集成文档正常使用
BDFaceABILITY_RUN_EXCEPTION 2014 人脸能力运行异常 请提交工单或者线下联系百度产研人员
BDFaceUNSUPPORT_IMAGE_TYPE 2015 不支持的图像类型 请提交工单或者线下联系百度产研人员
BDFaceIMAGE_TRANSFORM_FAILED 2016 图像转换失败 检查摄像头分辨率,格式要求 %2==0

授权文件相关逻辑

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

如果您下载集成方案的物料为控制台,此处可忽略;鉴权文件配置已自动生效。

配置授权信息: 导入license文件后,需配置FACE_LICENSE_NAME、FACE_LICENSE_ID等信息:

iOS授权示意.jpeg

具体参数使用请参照示例demo。

license文件使用注意事项:如出现鉴权失败无法调用人脸采集,请检查license id与license文件导入及配置是否正常。

(1)license id需要注意-face-ios后缀是否添加。

(2)如存在多种环境配置,请确保每个环境下的license id与license文件一一对应。tip:license文件存在运行缓存,切换测试环境请清空缓存,删除安装包后重新编译安装。

(3)确保license文件路径访问正常。

(4)如出现网络鉴权失败等提示,说明license文件与FACE_LICENSE_NAME未正确设置,请才考接入demo检查工程环境,确保参数无误。

7. 获取verify_token接口(服务端)

本接口为实名认证APP方案的verify_token获取接口,利用所获取的verify_token进行实名认证流程的有效期为2小时

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/json,通过json格式化请求体。

请求示例

HTTP方法:POST

请求URL: https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/verifyToken/generate

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/json

Body中放置请求参数,参数详情如下:

请求参数

参数 必选 类型 说明
match_source int 方案类型(比对源);0:实名认证(权威数据源);1:人脸比对(上传照片);2:仅活体检测。
plan_id string 方案的id信息,请在人脸实名认证控制台查看创建的APP方案ID信息
  • 请求示例

    {
    "match_source": 0, //以权威数据源核验场景为例,需要传入0
    "plan_id": 16144,
    }

返回参数

  • 返回结果
字段 必选 类型 说明
success boolean 返回请求是否成功信息。
若请求成功返回ture;
请求失败则返回false
result object 请求结果
+verify_token string 请求获取的verify_token
  • 返回示例

    {
        "success": true,
        "result": {
            "verify_token": "Yz9rWITm4vak16PBAh5x8oG7"
        },
        "log_id": "1814798895"
    }

8. 人脸实名认证实现方式

实现方式请参考如下时许图

实名认证交互.png

8.1 指定用户信息上报接口(服务端)

本接口用于,控制台APP方案中选择身份信息录入方式为业务调用时传入,需要先调用此接口输入指定用户的姓名+身份证号信息,再继续请求 人脸权威数据源核验接口(SDK)

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/json,通过json格式化请求体。

请求示例

HTTP方法:POST

请求URL:https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/idcard/submit

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/json

Body中放置请求参数,参数详情如下:

参数 必选 类型
verify_token string 通过access_token获取的verify_token
id_name string 指定输入用户的姓名信息
id_no string 指定输入用户的身份证件号信息
certificate_type int 证件类型:
0 大陆居民二代身份证
4 港澳台居民居住证
  • 请求示例:
{
    "verify_token": "2sF3nE5mXOHkx2aQwWG4n5WI",
    "id_name": "张三",
    "id_no": "500***********3390",
    "certificate_type": 0            // 证件类型:0:大陆居民二代身份证,4:港澳台居民居住证
}

返回参数

  • 返回结果
字段 必选 类型 说明
success boolean 返回请求是否成功信息。
若请求成功返回ture;
请求失败则返回false
result int 请求结果,返回固定结果1,可忽略
log_id string 本次查询接口请求的logid
  • 返回示例

    {
        "success": true,
        "result": 1,
        "log_id": "1244068892"
    }

8.2 人脸权威数据源核验接口(SDK)

基于姓名、身份证号、当前SDK获取的人脸图片,与公安权威数据源进行对比,并得出比对分数,并基于此进行业务判断是否为同一人。包含活体检测、质量检测、实名认证功能,可通过传入参数进行控制,如您的业务场景核心为实名认证,无需重复请求 7.4 人脸活体检测 接口。

返回值 API 描述
void startFaceVerify(Context context, Map params, FaceServiceCallbck FaceServiceCallbck) SDK核验接口

入参params (HashMap类型) key值列表如下:

参数 类型 说明 必选
verify_token String 需要APP服务端通过AK、SK获取access_token,参考 https://ai.baidu.com/docs#/Auth/top,然后通过access_token获取verify_token 【此处需要注意】verify_token有效期两个小时,建议每次调用接口重新获取verify_token
plan_id String 在控制台配置的方案Id
certificate_type int 证件类型;0:中国居民二代身份证,1:港澳台来往内地通行证,2:外国人永久居留证,3:定居国外的中国公民护照,4:港澳台居民居住证。默认为0
match_source int 方案类型(比对源);0:实名认证(权威数据源);1:人脸比对(上传照片);2:仅活体检测;这里默认传入0

onCallback回调说明

参数 类型 含义
resultCode int 错误码 0为成功,其他为失败,详情参考resultCode错误码说明
resultMap HashMap 回调结果Map 详情见下表

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
data String 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考 人脸实名认证V4人脸实名认证V3 接口文档
  • 返回示例

    {
          "log_id" = 1790733326441590614;
          result =         {
              "error_code" = 0;
              "liveness_score" = 1; //活体检测分数
              "log_id" = 1790733326441590614; //日志ID
              "risk_level" = 3;//开启大数据风控时返回的风险标签,3或4为正常
              "risk_tag" =             (//开启大数据风控时返回的风险标签,仅在risk_level为1或2时返回,代表高危风险等级
              );
              score = "95.43000000000001"; //实名认证分数,代表人脸相似度
              "verify_log_id" = 1790733326441590614; //日志ID
              "verify_status" = 0; //认证状态
          };
          success = 1;
    }

9. 人脸对比(自传照片)实现方式

实现方式请参考如下时许图

比对交互.png

9.1 对比图片上传接口(服务端)

本接口适用于人脸比对(自传照片)业务场景,为了保证用户信息安全,您需要提前通过服务端请求本接口来上报比对人脸信息。

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/json,通过json格式化请求体。

请求示例

HTTP方法:POST

请求URL: https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/uploadMatchImage

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/json

Body中放置请求参数,参数详情如下:

参数 必选 类型
verify_token string 通过access_token获取的verify_token
image string 图片base64字符串,编码后的图片大小不超过10M,图片分辨率小于1920*1080
quality_control string NONE”、“LOW”、“NORMAL”、“HIGH”;
质量控制参数,未主动传入时默认为“NONE”
liveness_control string NONE”、“LOW”、“NORMAL”、“HIGH”;
活体控制参数,未主动传入时默认为“NONE”
  • 请求示例:

    {
      "verify_token": "2sF3nE5mXOHkx2aQwWG4n5WI",
      "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/",
      "quality_control" : "LOW",
      "liveness_control" : "LOW",
    }

返回参数

  • 返回结果
字段 必选 类型 说明
success boolean 返回请求是否成功信息。
若请求成功返回ture;
请求失败则返回false
log_id string logid
result object 返回结果
  • 返回示例

    {
      "success": true,
      "result": null,
      "log_id": "1329130892"
    }

9.2 人脸对比(SDK)

包含活体检测、质量检测、人脸1:1识别功能,可通过传入参数进行控制,如您的业务场景核心为人脸对比(自传照片),无需重复请求 7.4 人脸活体检测 接口。

返回值 API 描述
void startFaceVerify(Context context, FaceServiceCallbck FaceServiceCallbck) SDK核验接口

入参params (HashMap类型) key值列表如下:

参数 类型 说明 必选
verify_token String 需要APP服务端通过AK、SK获取access_token,参考 https://ai.baidu.com/docs#/Auth/top,然后通过access_token获取verify_token 【此处需要注意】verify_token有效期两个小时,建议每次调用接口重新获取verify_token
image String 进行人脸比对的图片
match_source int 方案类型(比对源);0:实名认证(权威数据源);1:人脸比对(上传照片);2:仅活体检测;这里默认传入1

onCallback回调说明

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

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
data String 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考 人脸对比V4人脸对比V3 接口文档
  • 返回示例

     {
         "log_id" = 1791019418961135843;
      result =     {
          "error_code" = 0;
          "log_id" = 1791019418961135843; //日志ID
          "risk_level" = 3; //开启大数据风控时返回的风险标签,3或4为正常
          "risk_tag" =         (  //开启大数据风控时返回的风险标签,仅在risk_level为1或2时返回,代表高危风险等级
          );
          score = "90.90355"; //人脸比对分数,代表人脸相似度
          "verify_log_id" = 1791019418961135843;
      };
      success = 1;
    }

10. 人脸活体检测实现方式

实现方式请参考如下时许图

活体交互.png

10.1 活体检测(SDK)

包含本地活体加云端活体,本地活体分静默活体、炫瞳活体、动作活体三种,云端活体可以判断图片中的人脸是否为二次翻拍以及是否为合成图攻击。实现二次验证采集图片是否存在假体攻击破绽的情况。
如您的业务场景核心为人脸实名认证(权威源),请直接参考 7. 人脸实名认证实现方式

返回值 API 描述
void startFaceVerify(Context context, Map params, FaceServiceCallbck FaceServiceCallbck) SDK核验接口

入参params (HashMap类型) key值列表如下:

参数 类型 说明 必选
verify_token String 需要APP服务端通过AK、SK获取access_token,参考 https://ai.baidu.com/docs#/Auth/top,然后通过access_token获取verify_token 【此处需要注意】verify_token有效期两个小时,建议每次调用接口重新获取verify_token
match_source int 方案类型(比对源);0:实名认证(权威数据源);1:人脸比对(上传照片);2:仅活体检测;这里默认传入2.

onCallback回调说明

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

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
data String 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考 在线图片活体检测V4在线图片活体检测V3接口

  • 返回示例

      {
          "log_id" = 1790736656874173862;
          result =         {
              "error_code" = 0;
              "liveness_score" = 1; //活体分数
              "log_id" = 1790736656874173862; //日志ID
              "risk_level" = 3; //开启大数据风控时返回的风险标签,3或4为正常
              "risk_tag" =             (//开启大数据风控时返回的风险标签,仅在risk_level为1或2时返回,代表高危风险等级
              );
              score = 1; //透传活体分数
              "verify_log_id" = 1790736656874173862;//日志ID
          };
          success = 1;
      };

11. 验证后查询接口

11.1 获取认证人脸接口(服务端)

本接口返回进行人脸实名认证过程中进行认证的最终采集的人脸信息。根据Verify_token返回的结果信息会在云端保留3天,您可根据需要在此期间进行调取查询。

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/json,通过json格式化请求体。

请求示例

HTTP方法:POST

请求URL: https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/result/simple

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/json

Body中放置请求参数,参数详情如下:

参数
verify_token 通过access_token获取的verify_token
  • 请求示例:
{
  "verify_token" : "cIupeyP51sn28XzxGVTfYqoN"
}

返回参数

  • 返回结果
字段 必选 类型 说明
success boolean 返回请求是否成功信息。
若请求成功返回ture;
请求失败则返回false
result object 请求结果
+image string 返回采集的用户人脸信息
  • 返回示例

    {
        "success": true,
        "result": {
            "image":"https://brain.baidu.com/solution/faceprint/image/query?verify_token=xxxxxx"
        },
        "log_id": "1054986003"
    }

    br

11.2 核验及计费信息获取(服务端)

根据Verify_token返回的信息会在云端保留3天,您可根据需要在此期间进行调取查询。

调用方式

请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

POST中Body的参数,按照下方请求参数说明选择即可。

提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

在线调试

您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

请求说明

注意事项

  • 请求体格式化:Content-Type为application/json,通过json格式化请求体。

请求示例

HTTP方法:POST

请求URL: https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/result/getall

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header:

参数
Content-Type application/json

Body中放置请求参数,参数详情如下:

参数
verify_token 通过access_token获取的verify_token

请求示例:

{
  "verify_token" : "cIupeyP51sn28XzxGVTfYqoN"
}

返回参数

  • 返回结果
字段 必选 类型 说明
success boolean 返回请求是否成功信息。
若请求成功返回ture;
请求失败则返回false
log_id string 本次查询接口请求的logid
result object 结果信息
+verify_count int 当前verify_token对应的核验次数,核验次数为几,后面就有几个对象数组
如方案配置为“认证未通过时URL失效”,则该verify_token核验次数为1;
如方案配置为“认证未通过时URL不失效”,则该verify_token对应的核验次数可能大于1(用户核验失败后多次重试)
+ocr_charge_count int 身份证识别OCR接口的计费次数
+match_charge_count int 人脸对比接口的计费次数
+verify_charge_count int 人脸实名认证接口的计费次数
+verify_result object[] 核验结果信息,verify_count的值为几,就返回几个该对象
++order int 代表本次核验结果在verify_token所有核验次数中的顺序,按时间先后排序,第一次核验返回值为 1,第二次核验返回值为 2,以此类推
++is_verify_passed boolean 本次核验是否通过
核验成功返回true
核验失败返回false
++code string 本次核验的错误码
核验成功时返回 0
核验失败返回非0错误码
++message string 本次核验的错误信息
核验成功时返回“核验成功”
核验失败时返回具体错误原因,如“身份证姓名不匹配”
++verify_time string 本次核验完成的时间点,包含年月日、时分秒,如“2023-6-20 18:00:00”
++is_charged boolean 本次核验是否计费
计费返回true
不计费返回false
++charge_type string 计费类型:verify(人脸实名认证)、match(人脸对比)、live(在线图片活体)
++charge_time string 本次计费的时间点,如不计费则该字段为空,包含年月日、时分秒,如“2023-6-20 18:00:00”
++is_ocr_charge boolean 身份证识别OCR是否计费
计费返回true
不计费返回false
++ocr_charge_time string ocr 收费时间点,如不收费则该字段为空,包含年月日、时分秒,如“2023-6-20 18:00:00”
++ocr_count int ocr次数
++verify_detail object 核验的详细信息
+++face_image string 本次核验流程中采集的人脸最佳质量图下载url
+++verify_log_id string 本次核验流程中请求的人脸实名认证(方案配置权威数据源比对)、人脸对比(方案配置自建人脸库比对)、在线图片活体(仅活体检测)后端接口logid,支持在记录查询平台中通过logid查询到3天内的记录。
少数核验失败情况下,实际并未发生上述俩接口的请求,则该字段为空,如:用户拒绝摄像头授权且不允许降级
+++score float 人脸相似度得分,大于等于方案设置阈值为同一人;当身份证姓名不匹配或活体不通过时,该项为空
+++threshold float 本次核验时,所使用的方案配置相似度阈值
+++liveness_score float 活体检测得分,注:预留功能字段,当前返回为0
+++spoofing_score float 方案配置使用合成图功能,将返回合成图得分,注:预留功能字段,当前返回为0
+++risk_level string 安全风控等级
方案配置启用安全风控,将返回该字段
值为1或2时表示触发了安全风险,值为3或4时无风险
+++risk_tag string 安全风控标签
方案配置启用安全风控,将返回该字段
当risk_level值为1或2时,返回具体风险类型,risk_level值为3或4时,为空
+++is_demote boolean H5方案相关,可忽略
++idcard_confirm object 用户手动输入或二次确认的身份证信息
+++name string 姓名
+++idcard_number string 证件号
+++idcard_type string 证件类型,大陆居民二代身份证返回0
++idcard_ocr_result object OCR采集的身份证信息,当方案配置使用OCR采集证件照时返回该参数
++idcard_images object 返回采集的身份证图片信息
当人脸实名认证控制台设置为使用OCR识别时返回此参数信息
  • 返回示例
{
    "success": true,
    "result": {
        "verify_count": 1,
        "ocr_charge_count": 0,
        "match_charge_count": 0,
        "verify_charge_count": 1,
        "verify_result": [
            {
                "order": 1,
                "code": "0",
                "message": "核验成功",
                "is_verify_passed": true,
                "verify_time": "2024-04-02 16:15:01",
                "is_charged": true,
                "charge_type": "verify",
                "charge_time": "2024-04-02 16:15:01",
                "is_ocr_charge": false,
                "ocr_count": 0,
                "ocr_charge_time": null,
                "verify_detail": {
                    "score": 84.4000015258789,
                    "threshold": 80.0,
                    "app": true,
                    "face_image": "https://bj.bcebos.com/v1/mingjing-qa/hb/h5-video-temp/temp/202404/16130/ZWCCBxXUz48Q9wuR/Igi1n0SpQRtzm9ySWLQwdwvn-00.jpg?authorization=bce-auth-v1%2F89e9208d0d5a497cbc8922a4d74d4f71%2F2024-04-02T08%3A19%3A23Z%2F86400%2F%2Fb3abf9eef0b7f897ccf0350d7d59bbfd4498ab214ef73d437a45e319e5028688",
                    "verify_log_id": "1775074433891895605",
                    "liveness_score": 0.99999183,
                    "spoofing_score": null,
                    "risk_level": null,
                    "risk_tag": null,
                    "is_demote": false
                },
                "idcard_confirm": {
                    "name": "李跃坤",
                    "idcard_number": "140522199804101534",
                    "idcard_type": "0",
                    "idcard_ocr_result": null,
                    "idcard_images": null
                }
            }
        ]
    },
    "log_id": "1775075543214005842"
}

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

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

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

入参说明

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

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

12.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识别接口

参数值列表如下:

参数 类型 说明 必选
config BDAipOCRConfig 用于设置OCR页面相关UI
getImageAction Block 获取到的图片信息回调
success Block 获取身份信息成功回调
failure Block 获取身份信息失败回调

config配置说明

属性 类型 说明
titleViewBgColor UIColor OCR页面导航栏背景色,默认为白色
pageTitle NSString OCR标题内容,默认为"身份信息采集"
pageTitleTextColor UIColor OCR标题颜色,默认为黑色
topTipText NSString OCR顶部扫描文字,默认为"请将您本人的\n身份证人像面放入框内"
topTipTextColor UIColor OCR 顶部文字颜色,默认为白色

权限

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

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

  • 运行示例工程代码

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

iOS10.1.png

  • 删除库文件:AipOcrSdk.framework,AipBase.framework,IdcardQuality.framework**
  • 全局搜索与AipOcrSDK/AipOcrSdk.h

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

  • 全局搜索 -(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];
    };}
  • 编译运行代码首页并将身份证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];}
  • 将userOCR的值设置为0

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

iOS10.6.png

运行工程

常见问题

verify_token的详细说明

(1)access_token 有效期为 30 天,重复生成 access_token 的话,对之前的不影响,依旧能使用;access_token 与verify_token 是包含关系,即 verify_token 是由 access_token生成的,如果一个 verify_token 是和一个不匹配的 access_token 使用,会提示“Token无效或者已过期”

(2)verify_token 的核验有效期为 2 小时,在有效期内可以进行了核验动作,如果超过了 2 小时没有使用该 token 进行核验的话会提示“Token无效或者已过期”

(3) verify_token 核验完毕后(核验成功,或设置了认证未通过时URL失效),无法再进行核验,如果再次进行核验,会提示“Token无效或者已过期”

(4) verify_token 核验完毕后(核验成功,或设置了认证未通过时URL失效),支持对后验接口的查询,有效期均为 3 天,3 天后再次查询后验接口,会提示“Token无效或者已过期”

获取认证人脸、查询认证结果、核验及计费信息获取接口持续返回错误码18,提示openapi限制,且有返回logid

答:检查APP方案依赖的“人脸实名认证V3/V4”、“人脸对比V3/V4”、“在线图片活体检测V3/V4” 三项付费接口,是否有免费额度,或者直接开通后付费,以消除该报错提示。开通后,再进行重试。

上一篇
Android—方案集成指南(升级)
下一篇
SDK合规使用指南