跳到主要内容

🪪✏️ 带签名检测的泰国民众身份证照片识别

1.25 IC每页
✅ 活跃🪪 eKYC

欢迎使用带签名检测的泰国民众身份证照片识别 API,这是由艾艾普科技有限公司开发的一款人工智能产品。我们的 API 旨在从拍摄的泰国民众身份证副本(彩色和黑白均支持)中提取文本信息,并检测签名。该系统可以自动在图像中定位身份证,并以 JSON 格式返回准确的文本信息,例如身份证号码、姓名、姓氏、出生日期和有效期。

立即试用!

Example Images (Click to try)

Example 1

入门指南

  1. 先决条件

    • 艾艾普科技有限公司的 API 密钥
    • 泰国民众身份证复印件照片
    • 支持的文件格式:JPEG、JPG、PNG、HEIC、HEIF
    • 最大文件大小:2MB
  2. 快速入门

    • 处理时间:每张图片 1-3 秒
    • 自动检测和裁剪身份证
    • 支持彩色和黑白复印件
  3. 主要功能

    • 详细的字段提取,包括:
      • 身份证号码
      • 全名(泰语和英语)
      • 出生日期
      • 地址
      • 有效期
    • 签名检测
    • 灵活的 JSON 响应格式
  4. 安全与合规

    • 符合 GDPR 和 PDPA 标准
    • 处理后不保留数据
如何获取 API 密钥?

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

示例

打印在照片纸上的泰国民众身份证示例(带签名,正面)
备注

此 API 针对打印的身份证复印件进行 OCR 优化。如果需要直接从实体身份证进行 OCR,请改用 泰国民众身份证 OCR

请求

curl -X POST https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/idcard.jpg"

响应

{
"address_district": "บางละมุง",
"address_full": "XXXXXX XXXXXX ต.หนองปรือ อ.บางละมุง จ.ชลบุรี",
"address_number": "XXXXXX XXXXXX",
"address_postal_code": "20150",
"address_province": "ชลบุรี",
"address_subdistrict": "ต.หนองปรือ",
"date_of_birth": "XX มี.ค. 2500",
"date_of_expire": "XX มี.ค. 2568",
"file_name_id_card": "front.jpg",
"fullname_en": "Mrs. XXXXXX Lopez",
"fullname_th": "นาง XXXXXX โลเปช",
"init_en": "Mrs.",
"init_th": "นาง",
"name_en": "XXXXXX",
"name_th": "XXXXXX",
"national_id": "34117XXXXXX334",
"process_time": 2.1,
"reason_code_api": 200,
"reason_code_id_card": 1,
"reason_code_id_card_national_id": 1,
"reason_code_id_card_signature": 0,
"reason_codename_id_card_signature": 1,
"request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx",
"surname_en": "Lopez",
"surname_th": "โลเปช"
}

功能与能力

核心功能

  • 自动在图像中检测身份证
  • 支持彩色和黑白复印件
  • 签名检测
  • 快速处理时间(1-3 秒)
  • 支持多种文件格式

图片要求

  • 最小卡片尺寸:宽度 600px,高度 400px
  • 最大文件大小:2MB
  • 支持格式:JPEG、JPG、PNG、HEIC、HEIF

API 端点

端点方法描述费用
POST /v3/store/ekyc/thai-national-id-card-with-signature
旧版: /thai-national-id-card-with-signature/front
旧版: /thai-national-id-card/copy
POST从拍摄的泰国民众身份证复印件中提取详细信息并检测签名每页 1.25 IC

响应字段

字段类型描述
address_districtString区名称
address_fullString完整地址
address_numberString家庭住址
address_postal_codeString邮政编码
address_provinceString省名称
address_subdistrictString街道/镇名称
date_of_birthString泰语出生日期
date_of_expireString泰语到期日期
file_name_id_cardString图片文件名
fullname_enString英文全名(姓名+姓氏)
fullname_thString泰语全名(姓名+姓氏)
init_enString英文称谓
init_thString泰语称谓
name_enString英文名
name_thString泰语名
national_idString国民身份证号码
process_timeFloat处理时间(秒)
reason_code_apiInteger响应状态码
reason_code_id_cardInteger0 - 图像中未找到身份证,1 - 图像中找到身份证
reason_code_id_card_national_idInteger0 - 未找到身份证号码,1 - 找到身份证号码
reason_codename_id_cardInteger解释 reason_code_id_card_national_id 的代码。(待定)
reason_code_id_card_signatureInteger0 - 纸张上未找到签名,1 - 纸张上找到签名
reason_codename_id_card_signatureInteger解释 reason_code_id_card_signature 的代码。(待定)
request_idStringAPI 网关的请求 ID
surname_enString英文姓氏
surname_thString泰语姓氏

API 参考

带签名检测的泰国民众身份证照片识别端点

1. 带签名检测的泰国民众身份证照片识别

POST /v3/store/ekyc/thai-national-id-card-with-signature

从拍摄的泰国民众身份证复印件中提取详细信息并检测签名。


请求头

名称类型是否必需描述
apikeystring您的 API 密钥

请求体 (multipart/form-data)

参数类型是否必需描述
fileFile拍摄的泰国民众身份证复印件图片文件

代码示例

Curl

curl -X POST https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python

import requests

url = "https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature"
api_key = "YOUR_API_KEY"

# 准备图片文件
files = {
'file': ('idcard.jpg', open('path/to/idcard.jpg', 'rb'), 'image/jpeg')
}

# 将 API 密钥添加到请求头
headers = {
'apikey': api_key
}

# 发送请求
response = requests.post(url, headers=headers, files=files)

# 打印结果
print(response.json())

JavaScript

// 使用 Fetch API
const formData = new FormData()
formData.append("file", fileInput.files[0])

fetch("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature", {
method: "POST",
headers: {
apikey: "YOUR_API_KEY",
},
body: formData,
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error))

PHP

<?php
$curl = curl_init();

$file = new CURLFile('path/to/idcard.jpg', 'image/jpeg', 'idcard.jpg');

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'apikey: YOUR_API_KEY'
],
CURLOPT_POSTFIELDS => [
'file' => $file
]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

Swift

import Foundation

let url = URL(string: "https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature")!
var request = URLRequest(url: url)
request.httpMethod = "POST"

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

let imageData = try! Data(contentsOf: URL(fileURLWithPath: "path/to/idcard.jpg"))

var body = Data()
body.append("--\(boundary)\r\n")
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"idcard.jpg\"\r\n")
body.append("Content-Type: image/jpeg\r\n\r\n")
body.append(imageData)
body.append("\r\n--\(boundary)--\r\n")

request.httpBody = body

URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
let json = try? JSONSerialization.jsonObject(with: data)
print(json ?? "")
}
}.resume()

Kotlin

import okhttp3.*

val client = OkHttpClient()

val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file",
"idcard.jpg",
File("path/to/idcard.jpg")
.asRequestBody("image/jpeg".toMediaTypeOrNull())
)
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature")
.addHeader("apikey", "YOUR_API_KEY")
.post(requestBody)
.build()

client.newCall(request).execute().use { response ->
println(response.body?.string())
}

Java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class IDCardAPI {
public static void main(String[] args) throws IOException {
String boundary = "Boundary-" + System.currentTimeMillis();

URL url = new URL("https://api.iapp.co.th/v3/store/ekyc/thai-national-id-card-with-signature");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
conn.setRequestProperty("apikey", "YOUR_API_KEY");

try (OutputStream os = conn.getOutputStream()) {
File file = new File("path/to/idcard.jpg");
writeMultipartFile(os, "file", file, boundary);

os.write(("--" + boundary + "--\r\n").getBytes());
}

try (BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}

private static void writeMultipartFile(OutputStream os, String name, File file, String boundary)
throws IOException {
os.write(("--" + boundary + "\r\n").getBytes());
os.write(("Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" +
file.getName() + "\"\r\n").getBytes());
os.write("Content-Type: image/jpeg\r\n\r\n".getBytes());

try (FileInputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[4096];
int length;
while ((length = fis.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.write("\r\n".getBytes());
}
}
}

Dart

import 'package:http/http.dart' as http;

Future<void> uploadIDCard() async {
var url = Uri.parse('https://api.iapp.co.th/thai-national-id-card-with-signature');

var request = http.MultipartRequest('POST', url);
request.headers['apikey'] = 'YOUR_API_KEY';

request.files.add(
await http.MultipartFile.fromPath(
'file',
'path/to/idcard.jpg',
),
);

var response = await request.send();
var responseBody = await response.stream.bytesToString();

print(responseBody);
}

错误代码

身份证检测代码

状态码状态消息描述
1pass对读取的内容有信心
0manual check对内容不确定,需要人工检查

签名检测代码

状态码状态消息描述
1pass纸上找到签名
0manual check未找到签名或需要验证

API 响应代码

状态码状态消息描述
200SUCCESS请求成功
404REQUESTED_URL_NOT_FOUNDAPI 路由未找到
405METHOD_NOT_ALLOWEDHTTP 方法不正确
413IMAGE_FILE_IS_TOO_LARGE文件超出 2MB 限制
414NO_FILE_ATTACHED请求中没有文件
415INVALID_IMAGE_SIZE图片尺寸无效
420NO_ID_CARD_FOUND图像中未检测到身份证
421IMAGE_ERROR_UNSUPPORTED_FORMAT不支持或损坏的图片格式
422INVALID_IMAGE_SIZE图片尺寸不满足要求
427LONG_TIME_TO_PROCESS服务器处理超时
428LONG_TIME_TO_REQUEST队列超时
560SERVER_IS_BUSY服务器过载,需要重试
563ID_CARD_API_NOT_SUPPORT_THIS_IMAGE处理错误

最佳实践

  1. 图片质量

    • 确保良好的光照
    • 避免模糊的图像
    • 保持身份证清晰可见
  2. 处理

    • 检查响应中的原因代码
    • 验证提取的信息
    • 妥善处理错误
  3. 安全

    • 妥善保管 API 密钥
    • 验证输入文件
    • 遵守数据保护指南

准确性与性能

总体准确性

  • 文本提取准确率:字符级别 98.13%
  • 签名检测准确率:96.5%
  • 特定字段的准确率因内容类型而异

处理速度

  • 平均:每张图片 1-3 秒
  • 影响速度的因素:
    • 图片分辨率
    • 文件大小
    • 服务器负载
    • 网络状况

影响准确性的因素

  1. 图片质量

    • 分辨率(建议最低 300 DPI)
    • 光照条件
    • 对焦清晰度
    • 色彩对比度
  2. 文件状况

    • 物理损坏或磨损
    • 反光或眩光
    • 文本清晰度和可读性
    • 签名可见性
  3. 拍摄条件

    • 相机角度
    • 背景干扰
    • 阴影效果
    • 运动模糊

历史记录

版本发布日期主要功能
1.02023首次发布,包含签名检测

定价

AI API 服务名称端点每次请求 IC本地部署
泰国民众身份证复印件 OCR [v1.0]iapp-photographed-copy-idcard-ocr1.25 IC/分钟联系我们