
人脸照片比对
企业用户实名使用个人用户实名使用个人用户无法使用
传入两张人脸照片,进行比对,返回相似度,验证两张人脸照片是否为同一人,常用图片格式都支持,建议图片大小不超过1M,保证五官清晰可见。支持多种图片格式,识别准确率超过99%,更快、更精准。
价格
¥0元/5次
新用户免费体验,自购买起有效期1个月
选择套餐:

接口名称:人脸比对
描述:两张人脸照片比较是否同一人
请求地址 url:https://api.shuxuntech.com/v1/faceCompare/check
请求方式 method:post
请求Content-Type: application/x-www-form-urlencoded
参数:
| 名称 | 参数位置 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| appKey | head | string | 是 | 数勋分配appKey |
| timestamp | head | string | 是 | unix时间毫秒值 |
| sign | head | string | 是 | 签名,说明 |
| image1 | body | string | 否 | 第一张人脸照片base64,不超过1mb |
| imgUrl1 | body | string | 否 | 第一张人脸图片url,不超过1mb |
| image2 | body | string | 否 | 第二张人脸照片base64,不超过1mb |
| imgUrl2 | body | string | 否 | 第二张人脸图片url,不超过1mb |
签名算法说明:
数勋分配的appKey、当前unix时间毫秒值timestamp、数勋分配的appSecret、 按顺序拼接sha256加密得到sign,查看如下示例
appKey = aaa;
timestamp = 1682476904289;
appSecret = bbb;
sign = sha256(appKey+timestamp+appSecret)
正确返回:
{
"code": "0",
"msg": "成功",
"isFee": 1,
"seqNo": "9hi5fht958638y0egkjpo8udjs76vgwx",
"data": {
"result": 1,
"resultDesc": "比对成功,有数据",
"confidence": 97.389,
"threshold": {
"threshold1": 62.327,
"threshold2": 69.101,
"threshold3": 73.975
}
}
}
错误返回:
{
"code": "1",
"msg": "必须上传2张人脸照片",
"isFee": 0,
"seqNo": null,
"data": null
}
返回字段描述:
| 字段名 | 类型 | 描述 |
|---|---|---|
| code | string | 错误码 |
| msg | string | 错误描述 |
| isFee | int | 是否计费(1:计费,0:不计费) |
| seqNo | string | 调用流水号 |
| data | object | 返回数据 |
data对象说明
| 字段名 | 类型 | 描述 |
|---|---|---|
| result | int | 比对结果 |
| resultDesc | string | 比对结果描述 |
| confidence | double | 置信度分数 |
| threshold | object | 置信度阈值 |
result比对结果说明
| 字段值 | 描述 |
|---|---|
| 1 | 比对成功,有数据 |
| 2 | 比对成功,无数据 |
| 3 | 比对失败,无法正确解析、未按要求传入参数、下载图片超时 |
threshold置信度阈值说明
| 字段值 | 描述 |
|---|---|
| threshold1 | 一级 |
| threshold2 | 二级,建议分数超过二级则可判定为是同一人 |
| threshold3 | 三级 |
code错误码说明
| code | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数错误 |
| 2 | 无记录 |
| 3 | 第三方服务异常 |
| 4 | 签名错误 |
| 5 | 余额不足 |
| 6 | 调用频率超限 |
| 7 | 账号停用 |
| 8 | 接口已停用 |
| 9 | 联系服务商开通接口权限 |
| 10 | ip不在白名单 |
| 11 | 系统异常 |
| 12 | 实名状态错误 |
| 99 | 其他异常,具体返回为准 |
人脸比对
package com.shuxun.data.impl.demo;
import com.shuxun.common.core.util.HttpUtil;
import org.apache.commons.codec.digest.DigestUtils;
import java.util.HashMap;
import java.util.Map;
public class FaceCompareDemo {
private static final String APP_KEY = "您的appKey";
private static final String APP_SECRET = "您的appSecret";
private static final String API_URL = "https://api.shuxuntech.com/v1/faceCompare/check";
public static void main(String[] args) {
String timestamp = System.currentTimeMillis()+"";
String sign = DigestUtils.sha256Hex(APP_KEY + timestamp + APP_SECRET);
Map<String, String> header = new HashMap<>(4);
header.put("appKey", APP_KEY);
header.put("timestamp", timestamp);
header.put("sign", sign);
Map<String, String> params = new HashMap<>(2);
params.put("image1", "");
params.put("imgUrl1", "");
params.put("image2", "");
params.put("imgUrl2", "");
// 工具类下载地址 https://file.shuxuntech.com/other/code/util.zip
String result = HttpUtil.postForm(API_URL, header, params);
System.out.println("返回结果="+result);
}
}
import requests
import time
import hashlib
appKey = "您的appKey"
appSecret = "您的appSecret"
url = "https://api.shuxuntech.com/v1/faceCompare/check"
method = 'POST'
time = time.time()
timestamp = str(round(time * 1000))
print (timestamp)
tmp = appKey + timestamp + appSecret
sign = hashlib.sha256(tmp.encode("utf8")).hexdigest()
headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
'appKey': appKey
'timestamp': timestamp
'sign': sign
}
params = {}
params['image1'] = ''
params['imgUrl1'] = ''
params['image2'] = ''
params['imgUrl2'] = ''
response = requests.post(url, data = params, headers = headers)
print (response.text)
<?php
$appKey = "您的appKey";
$appSecret= "您的appSecret";
$url = "https://api.shuxuntech.com/v1/faceCompare/check";
$method = "POST";
$timestamp = getUnixTimestamp();
var_dump($timestamp);
$sign = hash('sha256',$appKey . $timestamp . $appSecret);
var_dump($sign);
$headers = array();
array_push($headers, "Content-Type" . ":" . "application/x-www-form-urlencoded; charset=UTF-8");
array_push($headers, "appKey" . ":" . $appKey);
array_push($headers, "timestamp" . ":" . $timestamp);
array_push($headers, "sign" . ":" . $sign);
$image1 = "";
$imgUrl1 = "";
$image2 = "";
$imgUrl2 = "";
$bodys = "image1=" . $image1 . "&imgUrl1=" . $imgUrl1 . "&image2=" . $image2 . "&imgUrl2=" . $imgUrl2;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if (1 == strpos("$".$url, "https://")) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
var_dump(curl_exec($curl));
function getUnixTimestamp () {
list($s1, $s2) = explode(' ', microtime());
return sprintf('%.0f',(floatval($s1) + floatval($s2)) * 1000);
}
using System;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
public class ApiDemo {
private const String url = "https://api.shuxuntech.com/v1/faceCompare/check";
private const String method = "POST";
private const String appKey = "您的appKey";
private const String appSecret = "您的appSecret";
public static void Main(string[] args) {
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
String timestamp = Convert.ToInt64(ts.TotalMilliseconds).ToString();
String sign = SHA256(appKey + timestamp + appSecret);
HttpWebRequest httpRequest = null;
HttpWebResponse httpResponse = null;
httpRequest = (HttpWebRequest) WebRequest.CreateDefault(new Uri(url));
httpRequest.Method = method;
httpRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
httpRequest.Headers.Add("appKey", appKey);
httpRequest.Headers.Add("timestamp", timestamp);
httpRequest.Headers.Add("sign", sign);
String image1 = "";
String imgUrl1 = "";
String image2 = "";
String imgUrl2 = "";
String params = "image1=" + image1 + "&imgUrl1=" + imgUrl1 + "&image2=" + image2 + "&imgUrl2=" + imgUrl2;
byte[] data = Encoding.UTF8.GetBytes(params);
using (Stream stream = httpRequest.GetRequestStream()) {
stream.Write(data, 0, data.Length);
}
httpResponse = (HttpWebResponse) httpRequest.GetResponse();
Console.WriteLine(httpResponse.StatusCode);
Stream st = httpResponse.GetResponseStream();
StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
Console.WriteLine(reader.ReadToEnd());
}
public static string SHA256(string str) {
byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
SHA256Managed Sha256 = new SHA256Managed();
byte[] by = Sha256.ComputeHash(SHA256Data);
return BitConverter.ToString(by).Replace("-", "").ToLower();
}
}
java
python
php
c#
产品详情
API文档
示例代码
产品价格










