/v2/ocr/passport
1.接口描述
该API的功能主要是识别护照信息,此接口需要用户第一方授权,如有委托情况,需提供委托证明。
- 图片要求:
- 格式为 JPG(JPEG),BMP,PNG
- 宽和高大于 8px,小于等于 4800px
- 小于等于 5 MB
请求方式
POST
请求 URL
https://cloudapi.linkface.cn/v2/ocr/passport
2.请求参数
字段 | 类型 | 必需 | 描述 |
---|---|---|---|
api_id | string | 是 | API 账户。 |
sequence_id | string | 是 | 客户请求流水号,建议唯一性 |
file | file | 见下方注释 | 需上传的图片文件。上传本地图片可选取此参数 |
url | string | 见下方注释 | 图片网络地址。采用抓取网络图片方式可选取此参数 |
image_id | string | 见下方注释 | 图片的id。在云端上传过的图片可选取此参数 |
image_base64 | string | 见下方注释 | 采用base64编码的二进制图片数据可选此参数 |
timestamp | string | 是 | 时间戳 |
sign | string | 是 | 签名(api_id+api_secret+timestamp使用SHA256算法获取) |
请求参数
file
,url
,image_id
与image_base64
必四选一,如同时传入多个参数,本API使用顺序为image_id
优先,其次file
、image_base64
、url
。 url 中含有不少特殊字符,若将 URL 放入 Query String 中则需要对这些字符进行转义,所有中文和特殊字符必需以UTF-8编码转义。 目前支持 http/https 等协议的网络地址。下载限时 5s,超时后仍未下载完成则属于失败。 参数file
需把图片文件的内容以 multipart/form-data 的形式放到 POST 消息体中。
签名sign说明:
我们会为每位公有云用户分配一个账户API ID和对应秘钥API SECRET。为了保证安全性,用户的每次接口调用都需要上传一个签名(基于API ID和API SECRET获取)。
Java示例代码:
SHA256Util.getSHA256Str(LF_APP_ID + LF_APP_SECRET + timeStamp) /** * 利用java原生的摘要实现SHA256加密 * * @param str 加密后的报文 */ public static String getSHA256Str(String str) { MessageDigest messageDigest; String encodeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(str.getBytes("UTF-8")); encodeStr = byte2Hex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encodeStr; } /** * 将byte转为16进制 */ private static String byte2Hex(byte[] bytes) { StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i = 0; i < bytes.length; i++) { temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length() == 1) { //1得到一位的进行补0操作 stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString(); }
3.返回参数
字段 | 类型 | 描述 |
---|---|---|
request_id | string | 本次请求的 id |
code | string | 业务响应码。正常为 0000 ,其他值表示失败。详见业务响应码 |
msg | string | 消息说明 |
data | object | 消息体,详见data数组中字段的结构(只有code: 0000调用成功时返回) |
charge | int | 是否收费,1收费,2不收费 |
data
的结构如下:
字段 | 类型 | 描述 |
---|---|---|
words_result_num | int | 查询结果 1人证比对查得 2图片质量校验不合格 |
words_result | object | 消息体,详见words_result数组中字段的结构(只有0000调用成功时返回) |
words_result
的结构如下:
字段 | 类型 | 描述 |
---|---|---|
姓名 | object | 查询结果 |
护照签发地 | object | 查询结果 |
国家码 | object | 查询结果 |
有效期至 | object | 查询结果 |
签发机关 | object | 查询结果 |
护照号码 | object | 查询结果 |
签发日期 | object | 查询结果 |
出生地点 | object | 查询结果 |
姓名拼音 | object | 查询结果 |
国籍 | object | 查询结果 |
生日 | object | 查询结果 |
性别 | object | 查询结果 |
MRZCode1 | object | 查询结果 |
MRZCode2 | object | 查询结果 |
护照类型 | object | 查询结果 |
说明:支持对中国大陆护照个人资料页所有15个字段进行结构化识别,包括国家码、护照号、姓名、姓名拼音、性别、出生地点、出生日期、签发地点(不支持境外签发地)、签发日期、有效期、签发机关、护照类型、国籍、MRZCode1、MRZCode2。
收费标准:code为0000,charge为1时收费;其他情况(code非0000),charge为2,不收费;
成功返回示例
{
"code":"0000",
"msg":"调用成功",
"charge":1,
"data":{
"words_result_num":15,
"image_id":"d973ae315e3240a99a2e3ee902ec7a13",
"words_result":{
"MRZCode2":{
"words":"521252N<2HHU50600<<<<<<",
"location":{
"top":276,
"left":48,
"width":336,
"height":14
}
},
"护照类型":{
"words":"",
"location":{
"top":40,
"left":151,
"width":10,
"height":11
}
},
"护照签发地点":{
"words":"北京/BEIJING",
"location":{
"top":163,
"left":269,
"width":82,
"height":13
}
},
"签发机关":{
"words":"公安部出入境管理局",
"location":{
"top":217,
"left":152,
"width":110,
"height":15
}
},
"护照号码":{
"words":"",
"location":{
"top":-1,
"left":-1,
"width":-1,
"height":-1
}
},
"签发日期":{
"words":"2008年12月31日",
"location":{
"top":190,
"left":152,
"width":87,
"height":14
}
},
"出生地点":{
"words":"北京/BEIJING",
"location":{
"top":136,
"left":268,
"width":83,
"height":14
}
},
"生日":{
"words":"",
"location":{
"top":-1,
"left":-1,
"width":-1,
"height":-1
}
},
"有效期至":{
"words":"2013年12月30日",
"location":{
"top":189,
"left":269,
"width":85,
"height":13
}
},
"姓名拼音":{
"words":"XXX",
"location":{
"top":107,
"left":149,
"width":94,
"height":14
}
},
"性别":{
"words":"男/M",
"location":{
"top":136,
"left":152,
"width":30,
"height":13
}
},
"姓名":{
"words":"XXX",
"location":{
"top":80,
"left":152,
"width":58,
"height":13
}
},
"国家码":{
"words":"CHN",
"location":{
"top":41,
"left":208,
"width":23,
"height":9
}
},
"国籍":{
"words":"",
"location":{
"top":-1,
"left":-1,
"width":-1,
"height":-1
}
},
"MRZCode1":{
"words":"POCHNTIAN<<BAIHAO<<<<<<<<<<<<<<<<<<<<<<<<<<<",
"location":{
"top":256,
"left":62,
"width":348,
"height":18
}
}
}
},
"request_id":"TID84e25c1aa8a14a018b30703aeb2b14be"
}
失败返回示例
{
"request_id": "TID2af751b4bff24be781d60af10bf84101",
"code": "1000",
"msg": "验签失败",
"charge": 2
}
4.业务响应码
code | msg 字段 |
---|---|
0000 |
调用成功 |
1000 |
验签失败 |
1001 |
参数非UTF-8编码 |
1002 |
请求参数错误,具体原因见 reason 字段内容 |
1003 |
liveness_data 出错 |
1004 |
图片未检测出人脸 。对应图片见字段 image 所反馈的值 |
1005 |
从网络获取图片超时 |
1006 |
网络地址图片获取失败 |
1007 |
账号或密钥错误 |
1008 |
账号过期,具体情况见 reason 字段内容 |
1009 |
调用频率超出限额 |
1010 |
调用次数超出限额 |
1011 |
无调用权限 |
1012 |
请求路径错误 |
1013 |
图片体积过大。对应图片见字段 image 所反馈的值 |
1014 |
图片不存在。对应图片见字段 image 所反馈的值。 |
1015 |
文件不是图片文件或已经损坏。对应图片见字段 image 所反馈的值 |
1016 |
图片大小或格式不符合要求。对应图片见字段 image 所反馈的值 |
1027 |
交易受限 |
9999 |
服务器内部错误 |
9990 |
数据服务异常 |
9980 |
余额不足 |