跳到主要内容

👥 面部被动活体检测 (面部欺骗检测)

0.3 IC每次请求
✅ 活跃🪪 eKYC🏆 iBeta Level 1 认证

欢迎使用面部被动活体检测 API,这是由艾艾普科技有限公司开发的一款人工智能产品。我们的 API 旨在检测输入的面部图像是真实还是伪造,确保面部识别过程的真实性。该 API 已获得 iBeta Level 1 认证,并支持多种技术来识别面部欺骗尝试。

试用演示!

Example Images (Click to try)

Example 1

入门指南

  1. 先决条件

    • 艾艾普科技的 API 密钥
    • 包含面部的图像文件
    • 支持的格式:JPEG, JPG, PNG
    • 最大文件大小:10MB
  2. 快速入门

    • 快速处理时间
    • 高精度面部欺骗检测
    • 支持多种文件格式
    • iBeta Level 1 认证精度
  3. 主要功能

    • 使用各种技术进行面部欺骗检测
    • 打印照片检测
    • 逼真的面具冒充检测
    • 检测从电脑屏幕拍摄的面部照片
    • 视频回放检测
    • 详细的预测分数和归一化
    • 黑暗度测量
    • 处理时长跟踪
  4. 安全与合规

    • 符合 GDPR 和 PDPA
    • 处理后不保留数据
    • iBeta Level 1 认证安全
如何获取 API 密钥?

请访问 API 密钥管理 页面查看您现有的 API 密钥或申请新密钥。

示例

面部被动活体检测请求:

图片预览

Face Detection Example

  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

面部被动活体检测的替代版本,具有增强的算法,适用于特定用例。


请求和响应格式

请求头

名称类型描述
apikeyString调用此 API 的 API 密钥

请求体

名称类型描述
fileFile图像的二进制数据

响应

{
"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"
}

响应中的参数

名称类型描述
filenameString文件名
predictString预测结果,基于归一化分数,可以是 REAL 或 SPOOF
scoreFloat归一化后的预测分数
darknessFloat黑暗度百分比
dataDictionary归一化前的 REAL 和 SPOOF 类别的预测分数
normalizedDictionary归一化后的 REAL 和 SPOOF 类别的预测分数
status_codeInteger指示处理成功或错误的状码
durationFloat处理时长
messageString处理结果或错误消息

代码示例

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 认证,能够通过各种技术检测面部欺骗尝试,包括打印照片、用于冒充的逼真面具、从电脑屏幕拍摄的照片以及视频回放。

在此处查看 iBeta 认证

定价

操作生产路径旧版路径IC 成本单位本地部署
面部被动活体检测/v3/store/ekyc/face-passive-liveness/anti_face_spoofing0.3 IC每 1 次请求联系我们
面部被动活体检测 (v1p10)/v3/store/ekyc/face-passive-liveness/v1p10/v1p10/facial_anti_spoofing0.3 IC每 1 次请求