👤 人脸检测
0.2 IC每次请求(单人脸)/ 0.3 IC(多人脸)
欢迎使用人脸检测 API,这是由艾艾普科技有限公司开发的人工智能产品。我们的 API 旨在高精度、高速度地从图像中检测和提取人脸。该 API 支持单人脸和多人脸检测,并提供灵活的评分选项。
立即试用!
入门指南
-
先决条件
- 艾艾普科技的 API 密钥
- 包含人脸的图片文件
- 支持的格式:JPEG、JPG、PNG
- 最大文件大小:10MB
-
快速入门
- 快速处理时间
- 高精度人脸检测
- 支持多种文件格式
- 灵活的评分选项
-
主要功能
- 单人脸和多人脸检测
- 人脸边界框坐标
- 检测置信度分数
- 人脸图像提取
- 公司特定的评分选项
-
安全与合规
- 符合 GDPR 和 PDPA
- 处理后不保留数据
如何获取 API 密钥?
请访问 API 密钥管理 页面查看您现有的 API 密钥或申请新密钥。
示例
单人脸检测请求:
图片预览

curl --location --request POST 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single' \
--header 'apikey: {您的 API Key}' \
--form 'file=@"{您的图片文件路径}"'
单人脸检测响应:
{
"bbox": {
"xmax": 320.15,
"xmin": 100.23,
"ymax": 450.78,
"ymin": 150.45
},
"detection_score": 0.9998989105224609,
"face": "/9j/4AAQ...base64_encoded_image",
"message": "success",
"process_time": 0.41
}
多人脸检测请求:
图片预览

curl --location --request POST 'https://api.iapp.co.th/v3/store/ekyc/face-detection/multi' \
--header 'apikey: {您的 API Key}' \
--form 'file=@"{您的图片文件路径}"'
多人脸检测响应:
{
"message": "success",
"process_time": 0.67,
"result": [
{
"bbox": {
"xmax":1317.7054443359375,
"xmin":1075.64013671875,
"ymax":555.1968994140625,
"ymin":243.38815307617188
},
"detection_score": 0.99,
"face": "/9j/4AAQ...base64_encoded_image"
},
{
"bbox": {
"xmax":684.1102294921875,
"xmin":484.45068359375,
"ymax":520.4813842773438,
"ymin":265.50823974609375
},
"detection_score": 0.99,
"face": "/9j/4AAQ...base64_encoded_image"
},
...
]
}
功能与能力
核心功能
- 单人脸和多人脸检测
- 人脸边界框坐标
- 检测置信度分数
- Base64 编码的人脸图像
- 公司特定的评分选项
支持的字段
单人脸检测响应
| 字段 | 类型 | 描述 |
|---|---|---|
| bbox | 字典 | 人脸边界框坐标 |
| detection_score | 浮点数 | 人脸检测置信度分数 |
| face | 字符串 | Base64 编码的人脸图像 |
| message | 字符串 | 处理状态 |
| process_time | 浮点数 | 处理时间(秒) |
多人脸检测响应
| 字段 | 类型 | 描述 |
|---|---|---|
| message | 字符串 | 处理状态 |
| process_time | 浮点数 | 处理时间(秒) |
| result | 数组 | 检测到的人脸数组 |
| bbox | 字典 | 人脸边界框坐标 |
| detection_score | 浮点数 | 人脸检测置信度分数 |
| face | 字符串 | Base64 编码的人脸图像 |
API 端点
| 端点 | 方法 | 描述 | 价格 |
|---|---|---|---|
POST /v3/store/ekyc/face-detection/single旧版: /face_detect_single | POST | 检测图像中最突出的人脸 | 0.2 IC/次 |
POST /v3/store/ekyc/face-detection/multi旧版: /face_detect_multi | POST | 检测图像中的所有人脸 | 0.3 IC/次 |
API 参考
人脸检测端点
1. 单人脸检测
POST /v3/store/ekyc/face-detection/single
检测图像中最突出的人脸。返回单个人脸的边界框、置信度分数和 Base64 编码的人脸图像。
2. 多人脸检测
POST /v3/store/ekyc/face-detection/multi
检测图像中的所有人脸。返回每个检测到的人脸的边界框、置信度分数和 Base64 编码的人脸图像的数组。
代码示例
Curl
curl -X POST https://api.iapp.co.th/v3/store/ekyc/face-detection/single \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"
Python
import requests
url = "https://api.iapp.co.th/v3/store/ekyc/face-detection/single"
payload = {}
files=[
('file',('{YOUR UPLOADED IMAGE}',open('{YOUR UPLOADED IMAGE}','rb'),'image/jpeg'))
]
headers = {
'apikey': '{YOUR API KEY}'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('file', fs.createReadStream('/Users/iapp/Downloads/removebg_trial.png'));
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single',
headers: {
'apikey': 'YOUR_API_KEY',
...data.getHeaders()
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR UPLOADED IMAGE}')),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Swift
let parameters = [[
"key": "file",
"src": "{YOUR UPLOADED IMAGE}",
"type": "file"
]] as [[String: Any]]
let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body
var request = URLRequest(url: URL(string: "https://api.iapp.co.th/v3/store/ekyc/face-detection/single")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR API KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Kotlin
val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","file",
File("{YOUR API KEY}").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-detection/single")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build()
val response = client.newCall(request).execute()
Java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","file",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED IMAGE}")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-detection/single")
.method("POST", body)
.addHeader("apikey", "{YOUR API KEY}")
.build();
Response response = client.newCall(request).execute();
Dart
var headers = {
'apikey': '{YOUR API KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/v3/store/ekyc/face-detection/single'));
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED IMAGE}'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
限制与最佳实践
限制
- 最大文件大小:10MB
- 支持的格式:JPEG、JPG、PNG
- 每张图片最多人脸数:50
最佳实践
- 确保良好的图像质量
- 检查检测分数
- 恰当处理错误消息
- 考虑使用公司特定的评分
- 上传前优化图像大小
准确性与性能
总体准确性
- 检测分数通常高于 95%
- 性能随图像质量而异
处理速度
- 单人脸:0.3-0.5 秒
- 多人脸:0.5-1.0 秒
影响准确性的因素
- 图像质量
- 分辨率
- 光照
- 对焦
- 人脸朝向
- 头部姿态
- 面部表情
- 遮挡
历史记录
版本 1.0 (发布:2023 年 1 月)
- 主要改进:初始发布
版本 0.9 (发布:2022 年 11 月)
- 主要改进:Beta 测试
版本 0.8 (发布:2022 年 9 月)
- 主要改进:内部测试
定价
| 操作 | 生产路径 | 旧版路径 | IC 成本 | 单位 | 本地部署 |
|---|---|---|---|---|---|
| 单人脸检测 | /v3/store/ekyc/face-detection/single | /face_detect_single | 0.2 IC | 每次请求 | 联系我们 |
| 多人脸检测 | /v3/store/ekyc/face-detection/multi | /face_detect_multi | 0.3 IC | 每次请求 |
