👥 面部被动活体检测 (面部欺骗检测)
0.3 IC每次请求
欢迎使用面部被动活体检测 API,这是由艾艾普科技有限公司开发的一款人工智能产品。我们的 API 旨在检测输入的面部图像是真实还是伪造,确保面部识别过程的真实性。该 API 已获得 iBeta Level 1 认证,并支持多种技术来识别面部欺骗尝试。
试用演示!
入门指南
-
先决条件
- 艾艾普科技的 API 密钥
- 包含面部的图像文件
- 支持的格式:JPEG, JPG, PNG
- 最大文件大小:10MB
-
快速入门
- 快速处理时间
- 高精度面部欺骗检测
- 支持多种文件格式
- iBeta Level 1 认证精度
-
主要功能
- 使用各种技术进行面部欺骗检测
- 打印照片检测
- 逼真的面具冒充检测
- 检测从电脑屏幕拍摄的面部照片
- 视频回放检测
- 详细的预测分数和归一化
- 黑暗度测量
- 处理时长跟踪
-
安全与合规
- 符合 GDPR 和 PDPA
- 处理后不保留数据
- iBeta Level 1 认证安全
如何获取 API 密钥?
请访问 API 密钥管理 页面查看您现有的 API 密钥或申请新密钥。
示例
面部被动活体检测请求:
图片预览

curl --location 'https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness' \
--header 'apikey: {YOUR API KEY}' \
--form 'file=@"{YOUR UPLOADED FILE}"'
面部被动活体检测响应:
{
"filename": "S__5333002.jpg",
"predict": "SPOOF",
"score": 0.9999989633974822,
"darkness": 0.51,
"data": {
"SPOOF": 0.9999990463256836,
"REAL": 9.35794162160164e-7
},
"normalized": {
"SPOOF": 0.9999989633974822,
"REAL": 1.0366025178232263e-6
},
"status_code": 200,
"duration": 0.35393,
"message": "SUCCESS"
}
功能与能力
核心功能
- 检测各种面部欺骗方法,如打印照片、逼真面具、电脑屏幕图像和视频回放。
- 利用先进的深度学习技术,确保高精度和可靠性。
- 在 7,680 次测试中达到 99.43% 以上的准确率。
- 已通过 iBeta Level 1 认证,可用于安全可信的面部识别系统。
- 通过 RESTful API 无缝集成,便于在应用程序中部署。
支持的字段
- 检测面部欺骗尝试(打印照片、面具、屏幕图像、视频回放)。
- 真实 vs. 伪造面部的置信度分数。
- 兼容流行的图像格式,如 PNG、JPG、JPEG、HEIC 和 HEIF。
API 端点
| 端点 | 方法 | 描述 | 费用 |
|---|---|---|---|
POST /v3/store/ekyc/face-passive-liveness旧版: /anti_face_spoofing, /api/v2/fas, /face-spoofing, /passive-face-liveness-detection | POST | 面部活体检测 - 检测欺骗尝试 | 0.3 IC / 请求 |
POST /v3/store/ekyc/face-passive-liveness/v1p10旧版: /v1p10/facial_anti_spoofing | POST | 面部活体检测 (v1p10) | 0.3 IC / 请求 |
API 参考
面部被动活体检测端点
1. 面部被动活体检测 (基础版)
POST /v3/store/ekyc/face-passive-liveness
检测面部图像是真实还是欺骗尝试。支持检测打印照片、逼真面具、屏幕截图和视频回放。已通过 iBeta Level 1 认证。
2. 面部被动活体检测 (v1p10)
POST /v3/store/ekyc/face-passive-liveness/v1p10
面部被动活体检测的替代版本,具有增强的算法,适用于特定用例。
请求和响应格式
请求头
| 名称 | 类型 | 描述 |
|---|---|---|
| apikey | String | 调用此 API 的 API 密钥 |
请求体
| 名称 | 类型 | 描述 |
|---|---|---|
| file | File | 图像的二进制数据 |
响应
{
"filename": "Image.jpeg",
"predict": "SPOOF",
"score": 0.9999590674225165,
"darkness": 0.29,
"data": {
"SPOOF": 0.9999197721481323,
"REAL": 8.024471753742546e-5
},
"normalized": {
"SPOOF": 0.9999590674225165,
"REAL": 4.093257748349899e-5
},
"status_code": 200,
"duration": 0.38198,
"message": "SUCCESS"
}
响应中的参数
| 名称 | 类型 | 描述 |
|---|---|---|
| filename | String | 文件名 |
| predict | String | 预测结果,基于归一化分数,可以是 REAL 或 SPOOF |
| score | Float | 归一化后的预测分数 |
| darkness | Float | 黑暗度百分比 |
| data | Dictionary | 归一化前的 REAL 和 SPOOF 类别的预测分数 |
| normalized | Dictionary | 归一化后的 REAL 和 SPOOF 类别的预测分数 |
| status_code | Integer | 指示处理成功或错误的状码 |
| duration | Float | 处理时长 |
| message | String | 处理结果或错误消息 |
代码示例
Curl
curl -X POST https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"
Python
import requests
def detect_face_spoofing(image_path, api_key):
url = "https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness"
headers = {'apikey': {YOUR API KEY}}
files = {'file': open(image_path, 'rb')}
response = requests.post(url, headers=headers, files=files)
return response.json()
JavaScript
const axios = require('axios');
async function detectFaceSpoofing(imagePath, apiKey) {
const url = "https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness";
const headers = { 'apikey': {YOUR API KEY} };
const formData = new FormData();
formData.append('file', fs.createReadStream(imagePath));
try {
const response = await axios.post(url, formData, { headers });
return response.data;
} catch (error) {
console.error('Error:', error);
}
}
PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLHTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR UPLOADED FILE}')),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Swift
let parameters = [
[
"key": "file",
"src": "{YOUR UPLOADED FILE}",
"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-passive-liveness")!,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","{YOUR UPLOADED FILE}",
File("{YOUR UPLOADED FILE}").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness")
.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","{YOUR UPLOADED FILE}",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED FILE}")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-passive-liveness")
.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-passive-liveness'));
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED FILE}'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
准确率与性能
- 在 7,680 次测试中达到 99.43% 以上的准确率。
- 已通过 iBeta Level 1 认证,可用于安全可信的面部识别系统。
iBeta 认证 [iBeta Level 1]
本系统已通过 iBeta Level 1 认证,能够通过各种技术检测面部欺骗尝试,包括打 印照片、用于冒充的逼真面具、从电脑屏幕拍摄的照片以及视频回放。
定价
| 操作 | 生产路径 | 旧版路径 | IC 成本 | 单位 | 本地部署 |
|---|---|---|---|---|---|
| 面部被动活体检测 | /v3/store/ekyc/face-passive-liveness | /anti_face_spoofing | 0.3 IC | 每 1 次请求 | 联系我们 |
| 面部被动活体检测 (v1p10) | /v3/store/ekyc/face-passive-liveness/v1p10 | /v1p10/facial_anti_spoofing | 0.3 IC | 每 1 次请求 |
