外国人永久居住证识别(含质检)
接口描述
用户通过发送HTTP Post请求方式提交数据至公有云服务器,服务器识别并返回json格式的识别结果。
接口说明
请求URL:http://api.exocr.com/ocr/v1/foreigner_greencard_check
请求方式:HTTP Post
返回格式:json
Header
参数 | 值 |
---|---|
Content-Type | 使用二进制方式时,为multipart/form-data;使用base64和url方式时,为application/x-www-form-urlencoded |
请求参数
参数 | 必选 | 类型 | 说明 |
---|---|---|---|
app_key | 是 | string | 请在控制台->我的应用中获取 |
app_secret | 是 | string | 请在控制台->我的应用中获取 |
image_base64 | 否 | string | 图像base64编码。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
image_url | 否 | string | 图像url地址。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
image_binary | 否 | data | 图像二进制。image_base64、image_url、image_binary三个参数中至少选择一个,读取优先级从前到后依次降低。如:同时选择了以上三个参数,则以image_base64图像为准。 |
crop_face_image | 否 | int | 是否返回切割头像 0:不返回,1:返回,默认不返回 |
check_all_risks | 否 | int | 是否返回所有风险项 0:不返回,1:返回,默认不返回 |
返回结果
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
error_code | 错误码 | Int | 0:正确,1:无法识别,2:图像格式错误,3:国徽面不支持人脸切图 |
template_name | 模板名称 | String | 1."外国人永久居留身份证人像面2017" 2."外国人永久居留身份证人像面2023" 3."外国人永久居留身份证国徽面" |
description | 结果描述 | String | |
request_id | 唯一请求标识符 | String | 用于回溯问题 |
recognize_time | 识别所用时间 | Int | 毫秒为单位 |
face_img | 返回的base64格式的切割头像图片 | String | 如果crop_face_image为0,则返回为空;如果为1,检测到头像则返回base64字符串。 |
result | 结果列表 | Object | 包括识别结果以及质检结果 |
result/recognize_result | 识别结果 | Object | |
result/recognize_result/english_name | 英文姓名 | Object | 人像面 |
result/recognize_result/name | 中文姓名 | Object | 人像面 |
result/recognize_result/gender | 性别 | Object | 人像面 |
result/recognize_result/birth_date | 出生日期 | Object | 人像面 |
result/recognize_result/nationality | 国籍 | Object | 人像面 |
result/recognize_result/valid | 有效期限 | Object | 人像面 |
result/recognize_result/idno | 证件号码 | Object | 人像面 |
result/recognize_result/issued | 签发机关 | Object | 人像面、国徽面 |
result/recognize_result/previous_holder_number | 持证人曾持有号码 | Object | 国徽面 |
result/recognize_result/english_name/chinese_key | 该字段中文含义 | String | 以英文姓名为例 |
result/recognize_result/english_name/words | 该字段识别结果 | String | 以英文姓名为例,utf-8格式 |
result/recognize_result/english_name/score | 该字段可信度 | Float | 以英文姓名为例,取值范围为0~1 |
result/recognize_result/english_name/quad | 该字段四个顶点坐标 | String | 以英文姓名为例,所在区域的四个点,依次为左上,右上,右下,左下四个点的坐标值 |
result/recognize_result/english_name/position | 该字段位置矩形框 | Object | 以英文姓名为例,以左上角为基准,距离左侧,上侧,右侧矩形框长度,下侧矩形框长度 |
result/check_result | 质检结果 | List | check_all_risks为0时值为空 |
result/check_result/risk | 图像风险类型 | Int | 5:遮挡,6:切边,7:卡变形,8:有光斑,9:未检测到证件, 10:模糊 |
result/check_result/risk_list | 风险列表 | List | 包含检测到的所有风险 |
result/check_result/risk_details | 风险详情 | Object | |
result/check_result/risk_details/blur_score | 模糊风险分值 | float | 0.3以下清晰,值越大越模糊 |
result/check_result/risk_details/segment | 切割风险详情 | Object | |
result/check_result/risk_details/segment/score | 分值 | float | 0.7以上可信,值越大可信度越高 |
result/check_result/risk_details/segment/class | 类型 | Int | 1:正常2:复印3:拍屏4:假证5:水印 |
result/check_result/risk_details/segment/bboxes | 坐标信息 | List | |
result/check_result/risk_details/edge_cover | 遮挡风险详情 | Object | |
result/check_result/risk_details/edge_cover/classes | 类型 | List | 1:有遮挡 |
result/check_result/risk_details/edge_cover/bboxes | 坐标信息 | List | |
result/check_result/risk_details/edge_cover/class_names | 遮挡 | List | Occlusion遮挡 |
result/check_result/risk_details/edge_cover/scores | 分值 | Float | 0.4以上分数越大,遮挡越可信 |
result/check_result/risk_details/light_spot | 光斑风险详情 | Object | |
result/check_result/risk_details/light_spot/classes | 类型 | 1:有光斑 | |
result/check_result/risk_details/light_spot/bboxes | 坐标信息 | ||
result/check_result/risk_details/light_spot/class_names | 光斑 | Spot光斑 | |
result/check_result/risk_details/light_spot/scores | 分值 | Float | 0.4以上分数越大,光斑越可信 |
result/check_result/quad | 顶点坐标 | List |
调用示例
java(相关依赖库下载)
package com.exocr.httpclient;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import com.exocr.common.utils.HttpClientUtils;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
/**
* base64
*/
//识别url
String url = " http://api.exocr.com/ocr/v1/foreigner_greencard_check";
//设置请求参数
Map<String, String> params = new HashMap<String, String>();
params.put("app_key", "#####");
params.put("app_secret", "#####");
//设置识别图像base64编码
params.put("image_base64", "base64ImageStr");
//发送请求,得到识别结果
String result = HttpClientUtils.doPost(url, params);
System.out.println(result);
/**
* url
*/
//设置请求参数、识别图像url
params.put("app_key", "#####");
params.put("app_secret", "#####");
params.put("image_url", "imageUrl");
//发送请求,得到识别结果
result = HttpClientUtils.doPost(url, params);
System.out.println(result);
/**
* 二进制
*/
//设置请求参数
params.put("app_key", "#####");
params.put("app_secret", "#####");
//拿到本地图像,写入数据流
File file = new File("/Users/mac/logs/test.png");
InputStream in = new FileInputStream(file);
//设置数据流
Map<String, InputStream> streamMap = new HashMap<String, InputStream>();
streamMap.put("image_binary", in);
//发送请求,得到识别结果
result = HttpClientUtils.doPostStream(url, params, streamMap);
//关闭io流
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(result);
}
}
返回结果示例
{
"error_code": 0,
"description": "识别成功",
"result": {
"recognize_result": {
"gender": {
"words": "男/M",
"score": 0.99892,
"position": {
"left": 83,
"top": 186,
"width": 76,
"height": 29
},
"quad": "83,186,159,186,159,215,83,215",
"chinese_key": "性别"
},
"idno": {... },
"issued": {...},
"name": {...},
"english_name": {...},
"valid": {...},
"birth_date": {...},
"nationality": {...}
},
"check_result": [
{
"risk": 6,
"risk_list": [
6
],
"risk_details": {
"edge_cover": {
"bboxes": [],
"classes": [],
"scores": [],
"class_names": []
},
"blur_score": 0.004929025191813707
},
"quad": [30,10,1093,10,1093,692,30,692]
}
]
},
"request_id": "bc9a9c889b2a11eea6ba047c16805d78",
"recognize_time": 1579,
"dbg_xml": "",
"rotation": 0,
"template_name": "外国人永久居留身份证人像面2017",
"face_img": ""
}