请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/check_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
检测证件照是否合格
调用此接口增加 1 次已调用次数
官网上对应的app_key应用类型必须为证件照检测
下方请求参数中带" * "的参数为检测参数,由于我们检测算法会不定期更新,检测标准也可能会出现一些变化,为方便检测参数阈值及时调整,务必将请求放至服务端进行
| 参数名称 | 是否必须 | 类型 | 描述 | 示例 |
|---|---|---|---|---|
| file | 是 | str | 图片的base64数据(注意不包含base64的头部数据),或者图片在oss的key(见第十三个接口) | |
| app_key | 是 | str | 已申请的app_key | |
| spec_id | 是 | int | 已有的规格ID | |
| *head_length_max_p | false | int | 脸部长度max | |
| *head_length_min_p | false | int | 脸部长度min | |
| * |
false | int | 脸部占比max | |
| * |
false | int | 脸部占比min | |
| *eye_space_max_p | false | int | 双眼间距max | |
| *eye_space_min_p | false | int | 双眼间距min | |
| *hairline_top_max_p | false | string | 为像素字符串时,表示头顶距离与图像顶部的距离像素,为数字0-100时,表示头顶距离与图像顶部的距离像素与图像高的比值 | 300px |
| *hairline_top_min_p | false | string | 为像素字符串时,表示头顶距离与图像顶部的距离像素,为数字0-100时,表示头顶距离与图像顶部的距离像素与图像高的比值 | 10px |
| *eyes_center_left_max_p | false | int | 双眼中心距图像左边缘max | |
| *eyes_center_left_min_p | false | int | 双眼中心距图像左边缘min | |
| *eyes_space_bottom_max_p | false | int | 双眼距图像下边缘max | 414 |
| *eyes_space_bottom_min_p | false | int | 双眼距图像下边缘min | 324 |
| *shoulder_occupy | false | int | 肩部占比 | |
| *left_right_empty | false | int | 左右各空 | |
| *facial_width_max_p | false | int | 脸部宽度max | 284 |
| *facial_width_min_p | false | int | 脸部宽度min | 180 |
| *width_px | false | int | 像素宽度,最大不能超过1050 | |
| *height_px | false | int | 像素高度,最大不能超过1500 | |
| *file_size_max | false | int | 文件大小最大值 | 40960 |
| *file_size_min | false | int | 文件大小最小值 | 20480 |
| *photo_format | false | string | 照片格式 | |
| *facial_pose | false | int | 人脸姿态,是人脸姿态 yaw pitch roll的集中判断见参数说明1 | 35 |
| false | int | 视线水平,此参数为必检项,检测通过返回1,不通过为0 | ||
| *facial_shelter | false | int | 面部无遮挡(见下方参数说明2) | |
| *eyes_close | false | int | 闭眼 | 50 |
| *eyes_nature | false | int | 视线自然 | 50 |
| *mouse_nature | false | int | 嘴巴自然 | 50 |
| *shoulder_equal | false | int | 肩膀等高 | 50 |
| *face_unbalance | false | int | 阴阳脸 | 50 |
| *glasses_glare | false | int | 眼镜反光 | |
| *glasses | false | int | 是否佩戴眼镜,是 |
10 |
| *thin_frame_glasses | false | int | 细框/无框 眼镜 | 50 |
| *thick_black_frame_glasses | false | int | 粗黑框眼镜 | 50 |
| *sunglasses | false | int | 墨镜 | 50 |
| *face_expression | false | int | 脸部表情 | |
| *face_center | false | int | 脸部居中,此参数为必检项,不受传参的影响 | 1 |
| *face_blur | false | int | 模糊程度 | 50 |
| *face_noise | false | int | 噪声程度 | 20 |
| *face_over_kbt | false | int | 过曝光 | 60 |
| *bg_shadow | false | int | 背景阴影 | 60 |
| *clothes_similar | false | int | 服装突出 | 90 |
| *chin_bottom_min_p | false | int | 下巴距图像下边缘min | |
| *shoulder_missed | false | int | 身体完整性,是肩部完整 头部完整 下半身悬空的集中判断 | 60 |
| *face_width_min | false | int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最小比例 | |
| *face_width_max | false | int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最大比例 | |
| *missing_shoulder | false | int | 肩部完整 | 30 |
| *incomplete_head | false | int | 头部完整 | 60 |
| *lower_body_hanging | false | int | 下半身悬空 | 30 |
| *headpose_yaw | false | int | 人脸姿态(见下方参数说明1) | 50 |
| *headpose_pitch | false | int | 人脸姿态(见下方参数说明1) | 50 |
| *headpose_roll | false | int | 人脸姿态(见下方参数说明1) | 50 |
| *face_too_dark | false | int | 照片过暗 | 60 |
| *face_contrast | false | int | 对比度异常 | 60 |
| *body_posture | false | int | 身体姿态 身子不正,自拍时斜向下,举手,手放脑后,抠鼻孔,托腮等 | 60 |
| *hat_threshold | false | int | 帽子检测 | 20 |
| *bare_shouldered | false | int | 光膀检测 | 60 |
| *id_exist | false | int | 手持证件照检测 | 60 |
| *watermark_exist | false | int | 照片有水印 | 50 |
| *pn_mask_exist | false | int | 照片有挂戴口罩 | 90 |
| *background_color | false | list | 自定义照片背景色,详见“参数说明4” | |
| *head_pose | false | int | 头部姿态异常 | 60 |
| *decoration_occlusion | false | int | 饰品遮挡 | 60 |
| *pn_over_ps | false | int | 过度ps,目前是第一个版本,需要使用请先联系客服咨询接口效果 | 60 |
| *face_gazeNG | false | int | 眼睛视线异常,目前是第一个版本,需要使用请先联系客服咨询接口效果 | 60 |
| *deal_face_skincolor | false | int | 肤色异常检测 | 60 |
| *pn_neck_shadow_exist | false | int | 脖子有阴影 | 60 |
| *is_remake_photo | false | int | 翻拍检测,通过照片中的光线分布判断该图片是否为翻拍屏幕/纸质照片等场景 | 60 |
| 参数名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| code | number | 200 | 状态码 |
| check_result | number | 1 | 检测结果汇总,各检测项中有一项未通过则为0,全部通过则为1 |
| all_check_result | obj | {...} | 各检测项详细数值 |
| result | object | 各个参数的检查结果:1代表通过,0代表未通过 | |
| background_color | number | 1 | 背景色 |
| bg_shadow | number | 1 | 背景阴影 |
| chin_bottom | number | 1 | 下巴距图像下边缘 |
| clothes_similar | number | 1 | 服装相似度 |
| eye_space | number | 1 | 眼部距离 |
| eyes_center_left | number | 1 | 双眼中心距图像左边缘 |
| eyes_close | number | 1 | 闭眼程度 |
| eyes_nature | number | 1 | 视线 |
| eyes_space_bottom | number | 1 | 双眼中心距图像下边缘 |
| face_blur | number | 1 | 模糊 |
| face_center | number | 1 | 脸部居中 |
| number | 1 | ||
| face_expression | number | 1 | 脸部表情 |
| face_noise | number | 1 | 脸部噪音 |
| face_unbalance | number | 1 | 阴阳脸 |
| facial_pose | number | 1 | 脸部姿态 |
| facial_shelter | number | 1 | 脸部遮挡 |
| facial_width | number | 1 | 脸部宽度 |
| file_size | number | 1 | 文件大小 |
| glasses | number | 1 | 眼镜样式 |
| glasses_glare | number | 1 | 眼镜反光 |
| hairline_top | number | 1 | 头顶发际线 |
| head_length | number | 1 | 头部长度 |
| number | 1 | 头部占比 | |
| left_right_empty | number | 1 | 左右是否各空 |
| mouse_nature | number | 1 | 嘴巴自然 |
| name | string | 英语四六级考试 | 规格名字 |
| photo_format | number | 1 | 文件类型 |
| ppi | number | 1 | 检测ppi |
| px_and_mm | number | 1 | 像素和毫米大小 |
| shoulder_equal | number | 1 | 肩膀自然 |
| sight_line | number | 1 | 视线水平 |
| pn_neck_shadow_exist | number | 1 | 脖子阴影 |
| spec_id | number | 23 | 规格ID |
| is_remake_photo | number | 1 | 是否为翻拍 |
import requests, json, base64
url = "http://apicall.id-photo-verify.com/api/check_pic"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 391,
"app_key": "您申请的app_key",
"file": base64.b64encode(pic).decode()
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
{
'all_check_result': {
'age': 9,
'bare_shouldered': 7,
'bg_notpure': 0,
'bg_shadow': 0,
'bg_similar2clothes': 2,
'bg_similar2temp': 23,
'bits': 8,
'body_missingparts': [0, 0, 0],
'body_postureNG': 11,
'chin_y': 281,
'decoration': 0,
'expressionNG': 0,
'eyes_coordinates': [
[159, 170],
[198, 170]
],
'face_bottom': 281,
'face_eyeclose': 0,
'face_mouthopen': 22,
'face_occlusion': [0, 0, 0, 0, 0, 8],
'face_width': 157,
'faceillum_contrastNG': 15,
'faceillum_overDark': 0,
'faceillum_overExpo': 0,
'faceillum_skincolorNG': 1,
'faceillum_unbalanced': 0,
'facial_points': [145, 168, 211, 167, 178, 238],
'format': 'JPEG',
'gaze_LR': 2,
'gaze_UD': -9,
'glasses_glare': 0,
'glasses_typeNG': [0, 0, 0],
'hat_pixel_number': 0,
'head_poseNG': 0,
'headpose_pitch': -4,
'headpose_roll': 2,
'headpose_yaw': 6,
'id_exist': 0,
'image_blur': 10,
'image_colorNG': 0,
'image_noise': 0,
'live_detection_threshold': False,
'male': 'MAN',
'pn_mask_exist': 0,
'pn_neck_shadow_exist': 74,
'ptLeftBottom': [110, 282],
'ptLeftTop': [110, 120],
'ptRightTop': [243, 120],
'shoulder_nothorizontal': 17,
'size': [358, 441],
'top_x': 21,
'top_x_p': 4,
'watermark_exist': 0
},
'check_result': 0,
'code': 200,
'not_check_result': [{
'check_param': 'hairline_top',
'check_value': None,
'param_message': '头顶间距'
}],
'result': {
'background_color': 1,
'clothes_similar': 1,
'ear_occlusion': 1,
'eyes_close': 1,
'face_blur': 1,
'face_center': 1,
'face_noise': 1,
'face_too_dark': 1,
'facial_pose': 1,
'hairline_top': 0,
'headpose_pitch': 1,
'headpose_roll': 1,
'headpose_yaw': 1,
'name': '一寸(蓝底)',
'photo_format': 1,
'pn_mask_exist': 1,
'px_and_mm': 1,
'shoulder_equal': 1,
'sight_line': 1,
'spec_id': '1'
},
'source_file': 'app/df9a55c770126a82f9baad62895d0e23.jpg',
'value_dict': {
'bare_shouldered': 7,
'body_posture': 11,
'cheek_occlusion': 0,
'clothes_similar': 2,
'deal_face_skincolor': 1,
'ear_occlusion': 8,
'eye_occlusion': 0,
'eyebrow_occlusion': 0,
'face_blur': 10,
'face_contrast': 15,
'facial_shelter': 8,
'glasses': 0,
'headpose_pitch': -4,
'headpose_roll': 2,
'headpose_yaw': 6,
'incomplete_head': 0,
'lower_body_hanging': 0,
'missing_shoulder': 0,
'mouse_nature': 22,
'mouth_occlusion': 0,
'nose_occlusion': 0,
'pn_neck_shadow_exist': 74,
'shoulder_equal': 17,
'shoulder_missed': 0,
'sunglasses': 0,
'thick_black_frame_glasses': 0,
'thin_frame_glasses': 0
}
}