跳到主要内容

📄 泰国户籍登记证 OCR

1 IC每页
✅ 活跃📄 OCR

欢迎使用泰国户籍登记证 OCR API,这是由艾艾普科技有限公司开发的一款人工智能解决方案,用于从泰国户籍登记文件中提取数据。本文档将帮助您有效地集成和使用我们的 OCR 服务。

试用演示!

Example Images (Click to try)

Example 1

入门指南

  1. 先决条件

    • 来自艾艾普科技的 API 密钥
    • 泰国户籍登记文件图像
    • 支持的文件格式:JPEG、JPG、PNG、PDF
    • 最大文件大小:10MB
  2. 快速入门

    • 快速处理(每份文件 5-10 秒)
    • 高精度文本提取
    • 支持多种文件格式
  3. 主要特点

    • 详细字段提取,包括:
      • 个人信息(姓名、身份证号、性别、国籍)
      • 出生信息(日期、年龄)
      • 家庭信息(父母姓名和国籍)
      • 居住信息(地址、身份、登记)
      • 文件元数据(日期、备注、登记员信息)
    • 支持单页文档
    • 可选择返回原始 OCR 文本和处理后的图像
    • 灵活的 JSON 响应格式
  4. 安全与合规

    • 符合 GDPR 和 PDPA
    • 安全的 API 端点
    • 处理后不保留数据
如何获取 API 密钥?

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

API 端点

端点方法描述费用
/v3/store/ocr/civil-registeration-certificate
/ocr/v3/civil-registeration-certificate
POST从泰国户籍登记证中提取数据每页 1 IC

示例

以下是一个户籍登记证的样本及其提取的数据:

户籍登记证

请求:

cURL

curl -X POST https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file \
-H apikey: YOUR_API_KEY \
-F file=@/path/to/document.jpg \
-F return_image=false \
-F return_ocr=false

响应:

{
"message": "success",
"processed": {
"header": "(ท้องถิ่นเขตยานนาวา) ท.ร. 14/1",
"title": "แบบรับรองรายการทะเบียนราษฎร จากฐานข้อมูลการทะเบียน\nสำนักทะเบียนกลาง กรมการปกครอง กระทรวงมหาดไทย",
"nationalIdNumber": "X-XXXX-XXXXX-XX-X",
"houseRegistrationNumber": "XXXX-XXXXXX-X",
"name": "นายสXXXXX XXXXXXXXXXX",
"gender": "ชาย",
"nationality": "ไทย",
"dateOfBirth": "8 XXXXXXX 2498",
"age": 64,
"residentialStatus": "เจ้าบ้าน",
"mothersName": "XXXXX",
"mothersNationality": "จีน",
"fathersName": "XXXXX",
"fathersNationality": "จีน",
"address": "XXX XXXXXXX XXX แขวงตลิ่งชัน เขตตลิ่งชัน กรุงเทพมหานคร",
"registrationOffice": "ท้องถิ่นเขตตลิ่งชัน",
"moveInDate": "28 เดือน XXXXXXX พ.ศ. 2537",
"additionalNotes": "บุคคลนี้ถูกจำหน่ายชื่อจากทะเบียนบ้านเนื่องจากตาย เมื่อ 14 XXXXXXXX 2562",
"remarks": "คัดรับรองตามคำร้องที่ ๗๙๐๘/๒๕๖๗ ลงวันที่ ๒ กันยายน ๒๕๖๗",
"lastUpdated": "วันที่ 2 เดือน กันยายน พ.ศ. 2567",
"footer": {
"text": "รับรองว่าเป็นรายการจากฐานข้อมูลการทะเบียนราษฎร",
"date": "2 เดือน กันยายน พ.ศ. 2567",
"registrar": "นายอิทธิพัทธ์ เล็กชลยุทธ"
}
},
"process_ms": 8115
}

功能与能力

核心功能

  1. 文档处理

    • 高精度文本提取和字段识别
    • 支持泰语
    • 支持打印文档格式
    • 快速处理时间,每份文件 5-10 秒
    • 多格式支持(JPEG、JPG、PNG、PDF)
    • 单页文档处理
    • 可选择返回原始 OCR 文本和处理后的图像
    • 符合 GDPR 和 PDPA 的处理
  2. 数据提取

    • 灵活的 JSON 响应格式,包含详细的字段提取

支持的字段

字段类型描述
headerString文档类型和表格编号
titleString官方文档标题
nationalIdNumberString13 位泰国国民身份证号码
houseRegistrationNumberString户籍登记代码
nameString个人全名
genderString个人性别
nationalityString个人国籍
dateOfBirthString出生日期(泰语格式)
ageNumber当前年龄
residentialStatusString户籍身份
mothersNameString母亲全名
mothersNationalityString母亲国籍
fathersNameString父亲全名
fathersNationalityString父亲国籍
addressString当前居住地址
registrationOfficeString登记办公室名称
moveInDateString迁入当前地址日期
additionalNotesString附加信息
remarksString官方备注
lastUpdatedString上次更新日期
footerObject包含认证文本、日期和登记员信息

API 参考

识别户籍登记证

有两个端点可用于处理户籍登记证:

1. 文件上传

POST https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file

请求头

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

请求体 (multipart/form-data)

参数类型是否必填描述
filefile文档图像(JPEG、PNG)或 PDF 文档
return_imageboolean在响应中包含 base64 编码的图像(默认:false)
return_ocrboolean在响应中包含原始 OCR 文本(默认:false)

响应格式

{
"message": "success",
"raw": {
"image": "string", // Base64 编码,仅当 return_image=true 时返回
"text": "string" // 仅当 return_ocr=true 时返回
},
"processed": {
"header": "string",
"title": "string",
"nationalIdNumber": "string",
"houseRegistrationNumber": "string",
"name": "string",
"gender": "string",
"nationality": "string",
"dateOfBirth": "string",
"age": "number",
"residentialStatus": "string",
"mothersName": "string",
"mothersNationality": "string",
"fathersName": "string",
"fathersNationality": "string",
"address": "string",
"registrationOffice": "string",
"moveInDate": "string",
"additionalNotes": "string",
"remarks": "string",
"lastUpdated": "string",
"footer": {
"text": "string",
"date": "string",
"registrar": "string"
}
},
"process_ms": "number"
}

错误处理

状态代码描述
400BAD_REQUEST参数或文件格式无效
401UNAUTHORIZEDAPI 密钥无效或缺失
404NOT_FOUND端点无效
500INTERNAL_SERVER_ERROR处理失败

2. Base64 图像

POST https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64

请求头
名称类型是否必填描述
apikeystring您的 API 密钥
请求体

您可以选择 JSON 或表单数据格式发送 base64 数据:

JSON 格式:

{
"base64_string": "string", // Base64 编码的图像数据
"return_image": false, // 可选
"return_ocr": false // 可选
}

表单数据格式:

参数类型是否必填描述
base64_stringstringBase64 编码的图像数据
return_imageboolean在响应中包含 base64 编码的图像(默认:false)
return_ocrboolean在响应中包含原始 OCR 文本(默认:false)
响应格式

与文件上传端点相同

代码示例

Curl

curl -X POST https://api.iapp.co.th/v3/store/ocr/civil-registeration-certificate \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python (文件上传)

import requests
apiKey = 'YOUR_API_KEY'
filePath = '/path/to/civil-registeration-certificate.jpg'
url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file"

headers = {'apikey': apiKey}
files = {'file': ('civil-registeration-certificate.jpg', open(filePath, 'rb'), 'image/jpeg')}
data = {'return_image': 'false', 'return_ocr': 'false'}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())

Python (Base64)

import requests
import base64

apiKey = 'YOUR_API_KEY'
filePath = '/path/to/civil-registeration-certificate.jpg'
url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64"

# 读取图像文件并转换为 base64
with open(filePath, 'rb') as image_file:
base64_string = base64.b64encode(image_file.read()).decode()

headers = {
'apikey': apiKey,
'Content-Type': 'application/json'
}

data = {
'base64_string': base64_string,
'return_image': False,
'return_ocr': False
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Javascript (文件上传)

const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")

const apiKey = "YOUR_API_KEY"
const filePath = "/path/to/civil-registeration-certificate.jpg"
const url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file"

const form = new FormData()
form.append("file", fs.createReadStream(filePath))
form.append("return_image", "false")
form.append("return_ocr", "false")

try {
const response = await axios.post(url, form, {
headers: {
...form.getHeaders(),
apikey: apiKey,
},
})
return response.data
} catch (error) {
throw error
}

Javascript (Base64)

const axios = require("axios")
const fs = require("fs")

const apiKey = "YOUR_API_KEY"
const filePath = "/path/to/civil-registeration-certificate.jpg"
const url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64"

// 读取图像文件并转换为 base64
const base64String = fs.readFileSync(filePath, { encoding: "base64" })

const data = {
base64_string: base64String,
return_image: false,
return_ocr: false,
}

try {
const response = await axios.post(url, data, {
headers: {
"Content-Type": "application/json",
apikey: apiKey,
},
})
return response.data
} catch (error) {
throw error
}

PHP (文件上传)

$url = 'https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file';
$apiKey = 'YOUR_API_KEY';
$filePath = '/path/to/civil-registeration-certificate.jpg';

$headers = array(
'apikey: ' . $apiKey
);

$postFields = array(
'file' => new CURLFile($filePath),
'return_image' => 'false',
'return_ocr' => 'false'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

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

echo $response;

PHP (Base64)

$url = 'https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64';
$apiKey = 'YOUR_API_KEY';
$filePath = '/path/to/civil-registeration-certificate.jpg';

// 读取图像文件并转换为 base64
$base64String = base64_encode(file_get_contents($filePath));

$data = array(
'base64_string' => $base64String,
'return_image' => false,
'return_ocr' => false
);

$headers = array(
'Content-Type: application/json',
'apikey: ' . $apiKey
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

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

echo $response;

Swift (文件上传)

import Foundation

let url = URL(string: "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file")!
let filePath = "/path/to/civil-registeration-certificate.jpg"
let apiKey = "YOUR_API_KEY"

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue(apiKey, forHTTPHeaderField: "apikey")

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

var body = Data()
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"civil-registeration-certificate.jpg\"\r\n".data(using: .utf8)!)
body.append("Content-Type: image/jpeg\r\n\r\n".data(using: .utf8)!)
body.append(try! Data(contentsOf: URL(fileURLWithPath: filePath)))
body.append("\r\n--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"return_image\"\r\n\r\nfalse\r\n".data(using: .utf8)!)
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"return_ocr\"\r\n\r\nfalse\r\n".data(using: .utf8)!)
body.append("--\(boundary)--\r\n".data(using: .utf8)!)

request.httpBody = body

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Error: \(error?.localizedDescription ?? "Unknown error")")
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Swift (Base64)

import Foundation

let url = URL(string: "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64")!
let filePath = "/path/to/civil-registeration-certificate.jpg"
let apiKey = "YOUR_API_KEY"

// 读取图像文件并转换为 base64
guard let imageData = try? Data(contentsOf: URL(fileURLWithPath: filePath)) else {
print("Error reading file")
return
}
let base64String = imageData.base64EncodedString()

let parameters: [String: Any] = [
"base64_string": base64String,
"return_image": false,
"return_ocr": false
]

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(apiKey, forHTTPHeaderField: "apikey")
request.httpBody = try? JSONSerialization.data(withJSONObject: parameters)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Error: \(error?.localizedDescription ?? "Unknown error")")
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin (文件上传)

import okhttp3.*
import java.io.File

val client = OkHttpClient()
val apiKey = "YOUR_API_KEY"
val filePath = "/path/to/civil-registeration-certificate.jpg"
val url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file"

val file = File(filePath)
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.name, RequestBody.create(MediaType.parse("image/jpeg"), file))
.addFormDataPart("return_image", "false")
.addFormDataPart("return_ocr", "false")
.build()

val request = Request.Builder()
.url(url)
.post(requestBody)
.addHeader("apikey", apiKey)
.build()

client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}

override fun onResponse(call: Call, response: Response) {
response.use {
if (!response.isSuccessful) throw IOException("Unexpected code $response")
println(response.body()?.string())
}
}
})

Kotlin (Base64)

import okhttp3.*
import java.io.File
import android.util.Base64
import org.json.JSONObject

fun processBase64Image() {
val client = OkHttpClient()
val apiKey = "YOUR_API_KEY"
val filePath = "/path/to/civil-registeration-certificate.jpg"
val url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64"

// 读取文件并转换为 base64
val file = File(filePath)
val bytes = file.readBytes()
val base64String = Base64.encodeToString(bytes, Base64.DEFAULT)

val json = JSONObject()
json.put("base64_string", base64String)
json.put("return_image", false)
json.put("return_ocr", false)

val requestBody = RequestBody.create(
MediaType.parse("application/json"),
json.toString()
)

val request = Request.Builder()
.url(url)
.post(requestBody)
.addHeader("Content-Type", "application/json")
.addHeader("apikey", apiKey)
.build()

client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}

override fun onResponse(call: Call, response: Response) {
response.use {
if (!response.isSuccessful) throw IOException("Unexpected code $response")
println(response.body()?.string())
}
}
})
}

Java (文件上传)

import okhttp3.*;
import java.io.File;
import java.io.IOException;

public class Main {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();

String apiKey = "YOUR_API_KEY";
String url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file";
String filePath = "/path/to/civil-registeration-certificate.jpg";

File file = new File(filePath);
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/jpeg"), file))
.addFormDataPart("return_image", "false")
.addFormDataPart("return_ocr", "false")
.build();

Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("apikey", apiKey)
.build();

client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}

@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
});
}
}

Java (Base64)

import okhttp3.*;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
import java.nio.file.Files;
import org.json.JSONObject;

public class Main {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();

String apiKey = "YOUR_API_KEY";
String url = "https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64";
String filePath = "/path/to/civil-registeration-certificate.jpg";

try {
// 读取文件并转换为 base64
byte[] fileContent = Files.readAllBytes(new File(filePath).toPath());
String base64String = Base64.getEncoder().encodeToString(fileContent);

JSONObject json = new JSONObject();
json.put("base64_string", base64String);
json.put("return_image", false);
json.put("return_ocr", false);

RequestBody requestBody = RequestBody.create(
MediaType.parse("application/json"),
json.toString()
);

Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("Content-Type", "application/json")
.addHeader("apikey", apiKey)
.build();

client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}

@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}

Dart (文件上传)

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

String url = 'https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/file';
String filePath = '/path/to/civil-registeration-certificate.jpg';
String apiKey = 'YOUR_API_KEY';

void main() async {
var url = Uri.parse(url);
var request = http.MultipartRequest('POST', url)
..headers['apikey'] = apiKey
..files.add(await http.MultipartFile.fromPath('file', filePath))
..fields['return_image'] = 'false'
..fields['return_ocr'] = 'false';

var response = await request.send();

if (response.statusCode == 200) {
var responseData = await response.stream.bytesToString();
print(responseData);
} else {
print('Error: ${response.statusCode}');
}
}

Dart (Base64)

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

String url = 'https://api.iapp.co.th/ocr/v3/civil-registeration-certificate/base64';
String filePath = '/path/to/civil-registeration-certificate.jpg';
String apiKey = 'YOUR_API_KEY';

void main() async {
var url = Uri.parse(url);
var request = http.MultipartRequest('POST', url)
..headers['apikey'] = apiKey
..fields['return_image'] = 'false'
..fields['return_ocr'] = 'false';

// 读取图像文件并转换为 base64
File file = File(filePath);
List<int> fileBytes = await file.readAsBytes();
String base64String = base64Encode(fileBytes);

request.fields['base64_string'] = base64String;

var response = await request.send();

if (response.statusCode == 200) {
var responseData = await response.stream.bytesToString();
print(responseData);
} else {
print('Error: ${response.statusCode}');
}
}

限制与最佳实践

限制

  • 最大文件大小:10MB
  • 支持语言:泰语
  • PDF 文件:仅支持单页
  • 速率限制:每个 API 密钥每秒 10 个请求

最佳实践

  1. 确保良好的图像质量以获得最佳结果
  2. 图像请使用 JPEG 或 PNG 格式
  3. 实现错误处理以应对请求失败
  4. 在多次处理同一文档时缓存响应
  5. 为大文件设置适当的超时

准确性与性能

总体准确性

根据我们包含 1,000 份泰国户籍登记证的基准数据集:

字段类型准确性 (%)说明
ID 号码99.5%国民身份证号码和户籍登记号码
姓名99.2%个人姓名和父母姓名
日期98.7%出生日期和登记日期
地址97.8%完整地址详情
总体98.8%加权平均值

处理速度

  • 平均处理时间:5-10 秒
  • 95% 分位数:12 秒
  • 最长处理时间:15 秒

影响准确性的因素

  1. 图像质量

    • 分辨率(建议最低 300 DPI)
    • 光照条件
    • 图像对焦和清晰度
  2. 文档状况

    • 物理损坏
    • 褪色或磨损
    • 手写修改
  3. 文档格式

    • 标准格式:99%+ 准确性
    • 非标准布局:95%+ 准确性
    • 手写元素:90%+ 准确性

历史记录

我们的模型正在不断地使用新数据进行训练以提高准确性:

版本发布日期准确性主要改进
3.02024-12-2796.5%基础版本

定价

AI API 服务名称价格本地部署
泰国户籍登记证 OCR1 IC/页联系我们