云扣-开发者平台
登录   注册
登录recog
用户名
密 码
验证码
验证码 换一张
忘记密码? | 立即注册
创建应用需先绑定您的手机,
以便出现任何产品或技术问题时我们能够及时联系
开发者云扣将严格保护开发者的隐私
数据字典
通用部分
平台简述

本文档主要对recog 云平台API接口进行说明,方便SDK的接入, 目前API暂时只支持可见光人脸识别,其它识别会在后续版本中支持

术语与定义

1、特征结构
一个能够描述生物特征的特征组合体,此特征结构会在客户不断的身份认证中发生内容更新,但是结构不会变化。
2、认证
比较提交的生物特征样本和引用对象总体的一对多的过程,确定提交的生物特征样本和引用对象总体中的参考模板是否匹配, 来确定所匹配的模板的注册者的身份。
3、验证
比较一个提交的生物特征样本和一个生物特征参考模板,来确定提交的生物特征样本和参考模板是否匹配的一比一的过程。
4、活体识别
通过人机交互识别技术、频阈技术来对个体进行分析,从而能够给出当前个体是照片、 视频流、三维模型、真皮面具和真人的过程;针对的仅是人脸识别。
5、阈值
建立相似度或相关性(即分数)的预定义值,用于认定一个生物特征样本和一个生物特征参考模板是否匹配。
6、 生物特征
基于行为和生物特征的自动个体识别。
7、生物特征传感器
用来从个体采集原始生物特征样本的设备。
8、生物特征模板
适合于存储的生物特征样本或者生物特征样本的集合,作为后续匹配的参考。

符号与缩略语
缩写、术语 解 释
Recog云扣生物识别认证云平台
FMR认假率/错误匹配率(False Match Rate)
FNMR拒真率(False Non-Match Rate)
EER相等错误率(Equal Error Rate)
BSP 生物特征服务提供者(Biometric Service Provider)
AE认证的加密(Authenticated Encryption)
DSA数据签名算法
HMAC基于哈希的消息认证码
IV初始向量(Initialization Vector)
MD5消息摘要5(Message Digest 5)
PKCS公钥密钥标准(Public Key Cryptography Standards)
SHA安全哈希算法(Secure Hash Algorithm)
UUID通用唯一标识符,(Universally Unique Identifier (UUID))
通用调用

提供开放式rest风格的http web调用。每个调用都要首先获取一个云平台API key的许可及对应的secret key 签名调用示例,比如要创建一个组,则如下方式(示例为get方式 ,post方式同样适用)

http调用如下: /Group/create?apiKey=test111&groupName=df&groupDesc=888&apiSign=4B3D74FA5D19CF36B5576C697A157F8D4FD91576

签名算法

其中apiKey是为你在云平台申请的key(上边示例中对应的密码key 为11111111111111 ),每次调用必填。 apiSign为对每个调用请求参数按字母升序排序后将参数名与参数值拼接在一起加上apiKey申请时获得的私密Key, 再进行SHA1 签名生成并转换成16进制大写字母,再将该参数加入到请求参数中去.服务端java签名生成算法示例代码如下:

说明:paramMap 为存放上传参数映射 (对于http二进制上传时的文件型表单参数目前不计算在内的)

原型: Map paramMap = new HashMap <String, String>();

对于数组类型参数,需要将参数行归并到一个Key下,比如:

http参数有:a=1&a=2&a=3则 需签名时 转换为 a=[1,2,3] (java的话就是Arrays.toString()方法,云平台端服进行参数签名时的预处理java代码如下:

             
/********************获取所有参数列表(注意,http二进制文件上传时文件参数是不会在其中的**************/
          Enumeration pNames = request.getParameterNames();
          while (pNames.hasMoreElements()) {
               String name = (String) pNames.nextElement();
               String[] values = request.getParameterValues(name);
               if (values != null && values.length > 1) { // 数组型
                    paramMap.put(name, Arrays.toString(values)); //数组型的参数将参数内容合
               } else if (values != null) {
                    paramMap.put(name, values[0]);
               }
               // System.out.println(name+"="+paramMap.get(name));
          }
/****************************以上为参数预处理部分*******************/
/**********************签名生成部分************************/
     //参数取参数名再按照字母升序重新排序
          String[] keyArray = paramMap.keySet().toArray(new String[0]);
          Arrays.sort(keyArray);
          // 拼接有序的参数名-值串
          StringBuilder stringBuilder = new StringBuilder("");
          for (String key : keyArray) 
          {
              stringBuilder.append(key).append(paramMap.get(key)); //拼接
          }
          stringBuilder.append(secretKey);//加上私密Key
          String codes = stringBuilder.toString();    
          System.out.println(codes); //
          String sign = DigestUtils.sha1Hex(codes).toUpperCase(); //SHA1签名

            
返回数据结构
http 响应码为200 OK的情况下,返回体为json结果,如下: (对于非200 OK的其它状态,需要调用端自行处理,比如500,404 等。)

{"resultCode":0,"message":"sucess","data":"1"}

其中
reutlCode 表示本次执行结果状态码 0--表示成功,其它--异常,参见下表
message--主要表示结果异常(ResultCode非零)情况的下消息描述。
data--操作成功额外返回的额外数据,一般在新增操作下,会返回id列表具体见各接口参数。
在查询接口里,返回的为结果列表。
云平台业务层返回码
RETURNID 描述 备注
0 成功  
100 输入参数非法 多半是要求是数字却输入字符之类的
101 API Key验证错误 APIkey非法,系统中不存在或它的签名不对
102 数据库更新操作异常 E.g. 主外键,唯一性等..
103 上传文件图片总大小超限
104 请求操作不允许或找不到对应信息 E.g. 人员ID不存在或不属于当前APIKey
105 超过最大允许图片 每个人员模板对应的图片数量有限
106 未找到人员对应的特征模板信息
201 当前无可用socket计算单元节点
202 不支持的算法类型 目前暂时只支持人脸部分(即可见光照片)
-999 目前未能定义的错误 多半系统非正常状态(如数据库连接),数据结构不全导致,多数情况下表现为Null异常
后续其它 需着接口功能增加,业务增加再定义
建模认证返回码
RETURNID 描述 备注
0 成功  
1 算法类型参数不合法
2 功能号参数不合法
3 特征组数量不合法  
4 特征组数据不合法  
5 特征组2数量不合法  
6 特征组2数据不合法  
7 图像组数量不合法  
8 图像组数据不合法  
9 图像组2数量不合法  
10 图像组2数据不合法  
11 其他  
-1 人脸检测失败 算法返回错误
-2 人眼检测失败 算法返回错误
-3 抽取特征失败 算法返回错误
-4 比对失败 算法返回错误
-5 其他 算法返回错误
接口分类表
接口分类 接口名称 功能说明
Group/Group/create创建组
/Group/delete删除一个指定
/Group/edit更新组信息
Person/Person/create创建人员信息
/Person/edit修改人员信息
/Person/get查询人员信息
/Person/delete删除人员信息
Feature/Feature/addPicSet在人员添加一组图片集合并提取特征信息保存
/Feature/deletePics删除人员下的一张或几张照片
/Feature/deleteAllPics删除个人下的所有照片
/Feature/picState查询人员建模状态
Recognition/Recognition/compareByPic比较两张图片是否为同一人
/Recognition/compareByPerson比较两个人否为同一人
/Recognition/verifyByPic判定一张图片是否属于一个
Info
(后续即将开放
/Info/getGroupList查询当前apiKey下的组
/Info/getPersonList查询当前apiKey下的人员信息
/Info/getPicList查询指定人员下的图片列表
/Group/create 创建组合
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupName String 组合名称
groupDesc String 组合描述
(c) 返回http body(json结构)
{"resultCode":0,"message":"success","data":groupId}
resultCode int 处理返回值
message String 处理描述
data int 新建组合ID
/Group/edit 修改组合信息
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupId Int 组合Id
groupName String 组合名称
groupDesc String 组合描述
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"}
resultCode int 处理返回值
message String 处理描述
/Group/delete 删除组合
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupId int 组合ID
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"}
resultCode int 处理返回值
message String 处理描述
说明:暂时不支持级联删除,如果组合下还存在人员信息,是会删除失败
Person/create 在组合下添加人
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupId int 所属组合ID
personName string 姓名
identifyCard string 公民身份号码
cardType int 证件类型 0--二代身份证 1-- 一代身份证,默认0
sex int 性别
personNation int 民族
phoneNo int 联系方式
qq int QQ号码
weixin string 微信号
address string 住址信息
(c) 返回http body(json结构)
{"resultCode":0,"message":"success","data":personId}
resultCode int 处理返回值
message string 处理描述
(d) 返回业务数据
personId int 人员ID
Person/edit 修改人信息
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
personName string 姓名
sex int 性别
personNation int 民族
phoneNo int 联系方式
qq int QQ号码
weixin string 微信号
address string 住址信息
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"}
resultCode int 处理返回值
message string 处理描述
Person/delete删除组合下的人
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"}
resultCode int 处理返回值
message String 处理描述
Person/get 查询人信息
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"}
resultCode int 处理返回值
message String 处理描述
groupId Int 组合Id
personName String 姓名
identifyCard String 公民身份号码
cardType int 证件类型 0--二代身份证 1-- 一代身份证,默认0
sex int 性别
personNation int 民族
phoneNo int 联系方式
qq int QQ号码
weixin String 微信号
address String 住址信息
face int 人脸建模状态 1建模,0未建模
fingervein int 指静脉建模状态 1建模,0未建模
Feature/addPicSet 在人下添加一组图片集合并提取特征
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
bioType int 生物识别算法类型,目前仅支持可见光照片 类型为1
base64Pics String[] 图片文件内容base64编码
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess"
"data":{"total":picNum,"detail":{"0":0,"1":1,"2":1}}
resultCode int 处理返回值
message string 处理描述
(d) 返回业务数据
total int 当前用户已经上传的图片数,调用都如何得知当前上传的图片id呢,很简单,从总数往后数成功的图片数,再按上传顺序的一一对应
detail String Json结构,前面的表示上传的图片顺序号,后 面值表示建模结果0--失败,1--成功
Feature/deletePics 删除人下的一张或几张照片
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
picIds String 图像编号,表示删除当前第x张图片
(c) 返回http body(json结构)
{"resultCode":0,"message":"success"}
resultCode int 处理返回值
message String 处理描述
Feature/deleteAllPics 删除个人下的所有照片
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
bioType int 目前只能为1--可见光,人脸
(c) 返回http body(json结构)
{"resultCode":0,"message":"success"}
(d) 返回业务数据
resultCode int 处理返回值
message String 处理描述
Feature/picState 获取人员建模状态
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID
(c) 返回http body(json结构)
{"resultCode":0,"message":"success"}
resultCode int 处理返回值
message string 处理描述
(d) 返回业务数据
face int 人脸可见光建模状态:1建模,0未建模
fingerprint int 指纹建模状态:1建模,0未建模
fingervein int 指静脉建模状态:1建模,0未建模
palmvein int 掌静脉建模状态:1建模,0未建模
voiceprint int 声闻建模状态:1建模,0未建模
facenir int 人脸近红外建模状态:1建模,0未建模
Recognition/compareByPic 比较2张图片的相似度
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 请求报文体
base64Pic1 String 图像1base64内容
base64Pic2 String 图像2 base64内容
bioType int 目前只能为1--可见光,人脸
(c) 返回http body(json结构)
{"resultCode":0,"message":"success","data":
{"avg":xx.xx,"max":xx.xx",min:" xx.xx"}
resultCode int 处理返回值
message String 处理描述
(d) 返回的业务数据
avg float 平均分
max float 最高分
min float 最小
threshold float 阈值
recogresult int 是否本人:1是,0不是
Recognition/compareByPerson 比较2个人的相似度
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 请求报文体
personId1 int 人员ID
personId2 int 人员ID
bioType int 生物识别算法类型
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess","data":
{"avg":xx.xx,"max":xx.xx",min:" xx.xx"}
resultCode int 处理返回值
message String 处理描述
(d) 返回的业务数据
avg float 平均分
max float 最高分
min float 最小
threshold float 阈值
recogresult int 是否本人:1是,0不是
Recognition/verifyByPic 判定1张图片是否属于某一个人
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 请求报文体
base64Pic String 图像base64
personId int 人员ID
bioType int 生物识别算法类型
(c) 返回http body(json结构)
{"resultCode":0,"message":"sucess","data":
{"avg":xx.xx,"max":xx.xx",min:" xx.xx"}
resultCode int 处理返回值
message String 处理描述
(d) 返回的业务数据
avg float 平均分
max float 最高分
min float 最小
threshold float 阈值
recogresult int 是否本人:1是,0不是
/Info/getGroupList 查询当前apiKey下所拥有组合列表
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupId int 分组ID,可选
groupName string 分组名称,可选
groupDes string 分组描述,可选
pageNo int 查询页数,默认第1页,可选
pageSize int 页面大小,默认20条记录,可选
(c) 返回http body(json结构)
{"data":["apiKey":"test111",
"createDate":1438790400000}],"resultCode":0,"message":"success"}
resultCode int 处理返回值0--成功
message String 处理描述
(d) 返回的业务数据
data Json结构 主要是组合信息对象的字段 (名称,描述,组合id)
/Info/getPersonList 查询当前apiKey下的人员信息列表
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
groupId int 人员所属组合id,可选
pageNo int 查询页数,默认第1页,可选
pageSize int 页面大小,默认20条记录,可选
(c) 返回http body(json结构)
{"data": [{"sex":0,"personId":65,"groupId":64,"identifycard":"430121198902271032",
"apiKey":"test111","cardType":0,"personName":"wendell",
"personNati":null,"phoneNo":null,"qq":0,"weiXin":null,"address":null}],
"resultCode":0,"message":"success"}
resultCode int 处理返回值
0--成功
message String 处理描述
(d) 返回的业务数据
data Json结构 主要是人员信息对象的字段 (姓名,联系号码,qq,身份证,所属组合id等.
/Info/getPicList 查询指定personId下的图片信息列表
参数名 类型 说明
(a) 基础参数
apiKey string  
apiSign string  
(b) 业务部分参数
personId int 人员ID,必须
bioType int 算法类型,1--可见光
(c) 返回http body(json结构)
{
"data" : {
"0" : "/",
"1" : "/"
},
"message" : "sucess",
"resultCode" : 0
}
resultCode int 处理返回值
0--成功
message String 处理描述
(d) 返回的业务数据
data Json结构 主要包括图片的base64内容,对应当前编号等
通用数据字典
名称 描述
证件类型 0二代身份证
1一代身份证
2护照
3港澳台
4军官证
5其他
性别 0
1
9未知
生物照片类型 1可见光图片
2近红外图片
3指静脉图片
6指纹图片