1. 接口说明

对两张通过接口上传的人脸照片进行比对,来判断是否为同一个人

若上传的照片中包含 exif 方向信息,我们会按此信息旋转、翻转后再做后续处理。

同时,我们还提供自动旋转功能,当照片方向混乱且 exif 方向信息不存在或不正确的情况下,服务会根据照片中人脸方向来检查可能正确的方向,并按照正确的方向提供人脸检测结果。

2. 接口地址

POST http://api.xfyun.cn/v1/service/v1/image_identify/face_verification HTTP/1.1
Content-Type:application/x-www-form-urlencoded; charset=utf-8

3. 请求参数

在 Http Request Header 中配置授权认证参数,见【接口描述-授权认证。 其中 X-Param 为各配置参数组成的 JSON 串经 BASE64 编码之后的字符串,原始 JSON 串各字段说明如下:

参数 类型 必须 说明 示例
auto_rotate bool 是否对图片进行自动旋转,true旋转,false不旋转,默认false true

X-Param生成示例:

原始JSON串:
{
    "auto_rotate": True,
}
BASE64编码(即X-Param):
ewoJICAgICJhdXRvX3JvdGF0ZSI6ICJ0cnVlIiwKCX0=

在 Http Request Body 中配置以下参数:

参数 类型 必须 说明
first_image string 图片数据1,base64编码后与base64编码后的图片2整体进行 urlencode,格式必须为JPG(JPEG),BMP,PNG,GIF,TIFF之一,宽和高必须大于 8px,小于等于 4000px,要求编码后图片大小不超过5M
second_image string 图片数据2,说明同图片1

4. 返回值

返回值为 json 串,各字段如下:

参数 类型 说明
code string 结果码(具体见错误码)
desc string 结果码描述
data float 得分,值为 0~1,值越大表示是同一个人的可能性越大
sid string 会话ID,用来唯一标识本次请求会话,如果会话出现问题无法解决,可以通过工单提供 sid 给讯飞技术人员分析解决。

data中得分阈值与错误率对应关系:

阈值 0.4 0.5 0.6 0.7 0.8 0.9
错误率 十分之一 百分之一 千分之一 万分之一 十万分之一 百万分之一

建议阈值:0.7~0.8

示例如下:

失败:

{
    "code": "10106",
    "desc": "invalid parameter|invalid X-Appid",
    "data": 0,
    "sid": "ifv0000bb3f@ch3d5c059d83b3477200"
}

成功:

{
"data":0.7,
"code":"0",
"desc":"success",
"sid":"ifv00000001@ch36940e324c59000100"
}

5. 调用示例

python脚本示例(python版本号 3.6)

说明:将脚本中 FIRST_IMAGE_PATH, SECOND_IMAGE_PATH, API_KEY, APPID, 换成相应的图片路径,讯飞开放平台提供的 apiKey,讯飞开放平台应用的 appid 即可,运行脚本可打印相应结果。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import time
import json
import hashlib
import base64


def main():
    x_appid = 'APPID'
    api_key = 'API_KEY'
    url = 'http://api.xfyun.cn/v1/service/v1/image_identify/face_verification'
    x_time = str(int(time.time()))
    param = {'auto_rotate': True}
    param = json.dumps(param)
    x_param = base64.b64encode(param.encode('utf-8'))
    m2 = hashlib.md5()
    m2.update(str(api_key + x_time + str(x_param,'utf-8')).encode('utf-8'))
    x_checksum = m2.hexdigest()
    x_header = {
        'X-Appid': x_appid,
        'X-CurTime': x_time,
        'X-CheckSum': x_checksum,
        'X-Param': x_param,
    }
    with open(r'FIRST_IMAGE_PATH', 'rb') as f:
        f1 = f.read()
    with open(r'SECOND_IMAGE_PATH', 'rb') as f:
        f2 = f.read()
    f1_base64 = str(base64.b64encode(f1), 'utf-8')
    f2_base64 = str(base64.b64encode(f2), 'utf-8')
    data = {
        'first_image': f1_base64,
        'second_image': f2_base64,
            }
    req = requests.post(url, data=data, headers=x_header)
    result = str(req.content, 'utf-8')
    print(result)
    return


if __name__ == '__main__':
    main()
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-10-19 20:53:23

results matching ""

    No results matching ""