跳到主要内容

🏦 银行对账单 OCR

1 IC每页
v1.0 激活 2026 年 7 月 POST /ocr/v3/bank-statement/file

欢迎使用银行对账单 OCR API,它是 iApp 艾艾普科技 旗下的 iApp 艾艾普 任何文档 OCR 产品的一部分。该 API 可从泰语银行对账单(所有主要泰语银行)中提取账户信息和完整的交易记录。多页 PDF 对账单将合并为单个结果。

试用演示!

试用 AI 演示

登录或创建免费账户来使用此 AI 服务演示并探索我们强大的 API。

注册即可获得 100 积分 (IC) 免费赠送!

优惠截止至 2025 年 12 月 31 日

Example Images (Click to try)

入门指南

  1. 先决条件

    • iApp 艾艾普科技 的 API 密钥
    • 文档文件:银行对账单 (รายการเดินบัญชีธนาคาร)
    • 支持的文件格式:PDF, JPG, JPEG, PNG, WEBP
    • 文件大小上限:50MB
  2. 快速入门

    • 单个 POST 请求,使用 multipart/form-data
    • 结构化 JSON 输出,每个字段都有置信度分数
    • 多页 PDF 将合并到单个 docs 条目中。
  3. 主要功能

    • 字段级提取,附带置信度评分
    • 通过 target_lang 支持泰语和英语输出
    • 可选的原始 OCR 文本,通过 return_ocr
    • 可处理照片和扫描的 PDF
  4. 安全与合规

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

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

API 端点

端点方法描述价格
/ocr/v3/bank-statement/file
/v3/store/ocr/bank-statement
POST从泰语银行对账单中提取账户详情和完整的交易记录每页 1 IC

两种形式是等效的。此端点没有 base64 变体 — 仅支持文件上传。

请求

请求头

标头必需
apikey您的 iApp API 密钥

请求正文 (multipart/form-data)

参数类型默认值描述
file文件(可重复)必需。 文档文件。PDF 页面会自动处理。
return_ocr布尔值false在响应中包含原始 OCR 文本。
target_lang字符串th提取值的语言:then
include_confidence布尔值true包含每个字段的置信度分数(0.00–1.00)。

cURL

curl -X POST "https://api.iapp.co.th/ocr/v3/bank-statement/file" \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/document.pdf" \
-F "target_lang=th" \
-F "include_confidence=true"

响应

{
"docs": [
{
"message": "success",
"raw": {},
"processed": {
"bank_name": "ธนาคารกสิกรไทย",
"account_holder_name": "น.ส. สมหญิง ตัวอย่าง",
"account_number": "XXX-2-48512-X",
"account_type": "เงินฝากออมทรัพย์",
"branch": "สาขาซีคอนสแควร์ 2",
"period_from": "01-04-2018",
"period_to": "20-09-2018",
"total_withdrawal_amount": 101797.39,
"total_deposit_amount": 101780.19,
"transactions": [
{
"date": "10-09-2018",
"description": "ฝากเงินสด ไม่มีสมุดคู่ฝาก",
"withdrawal": null,
"deposit": 100.0,
"balance": 206.14,
"channel": "0929"
}
]
},
"confidence": {
"bank_name": 0.95,
"account_holder_name": 0.95,
"account_number": 0.95,
"account_type": 0.95,
"branch": 0.95,
"period_from": 0.95
},
"process_ms": 4120
}
],
"docs_count": 1,
"process_ms": 4300
}

iapp-input-pages 响应头报告了计费页数。

支持的字段

字段类型描述
bank_name字符串银行名称
account_holder_name字符串账户持有人姓名
account_number字符串账号,打印格式(包括掩码 X)
account_type字符串账户类型,例如 เงินฝากออมทรัพย์
branch字符串分支机构
period_from字符串对账单期间开始日期
period_to字符串对账单期间结束日期
total_withdrawal_amount数字总提款金额(泰铢)
total_deposit_amount数字总存款金额(泰铢)
transactions数组交易行 — 每行包含日期、描述、提款、存款、余额、渠道

错误处理

状态含义
400不支持的文件扩展名,或文件大于 50MB
401缺少或无效的 apikey
402信用余额不足
404URL 中文档类型未知
422请求中未附加文件
500处理错误 — 响应包含错误代码,请引用该代码联系支持人员

代码示例

Python

import requests

url = "https://api.iapp.co.th/ocr/v3/bank-statement/file"
headers = {"apikey": "YOUR_API_KEY"}
files = {"file": open("document.pdf", "rb")}
data = {"target_lang": "th", "include_confidence": "true"}

response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
print(result["docs"][0]["processed"])
print(result["docs"][0]["confidence"])

JavaScript

const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("target_lang", "th");
form.append("include_confidence", "true");

const res = await fetch("https://api.iapp.co.th/ocr/v3/bank-statement/file", {
method: "POST",
headers: { apikey: "YOUR_API_KEY" },
body: form,
});
const result = await res.json();
console.log(result.docs[0].processed);

PHP

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.iapp.co.th/ocr/v3/bank-statement/file");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["apikey: YOUR_API_KEY"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"file" => new CURLFile("/path/to/document.pdf"),
"target_lang" => "th",
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Java

OkHttpClient client = new OkHttpClient();

RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "document.pdf",
RequestBody.create(new File("/path/to/document.pdf"),
MediaType.parse("application/pdf")))
.addFormDataPart("target_lang", "th")
.build();

Request request = new Request.Builder()
.url("https://api.iapp.co.th/ocr/v3/bank-statement/file")
.addHeader("apikey", "YOUR_API_KEY")
.post(body)
.build();

try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}

Swift

let url = URL(string: "https://api.iapp.co.th/ocr/v3/bank-statement/file")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

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

var data = Data()
let fileData = try Data(contentsOf: URL(fileURLWithPath: "/path/to/document.pdf"))
data.append("--\(boundary)\r\n".data(using: .utf8)!)
data.append("Content-Disposition: form-data; name=\"file\"; filename=\"document.pdf\"\r\n\r\n".data(using: .utf8)!)
data.append(fileData)
data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)

URLSession.shared.uploadTask(with: request, from: data) { responseData, _, _ in
if let responseData, let json = String(data: responseData, encoding: .utf8) {
print(json)
}
}.resume()

Kotlin

val client = OkHttpClient()

val body = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file", "document.pdf",
File("/path/to/document.pdf").asRequestBody("application/pdf".toMediaType())
)
.addFormDataPart("target_lang", "th")
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/ocr/v3/bank-statement/file")
.addHeader("apikey", "YOUR_API_KEY")
.post(body)
.build()

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

Dart

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

final request = http.MultipartRequest(
'POST',
Uri.parse('https://api.iapp.co.th/ocr/v3/bank-statement/file'),
);
request.headers['apikey'] = 'YOUR_API_KEY';
request.fields['target_lang'] = 'th';
request.files.add(
await http.MultipartFile.fromPath('file', '/path/to/document.pdf'),
);

final response = await request.send();
print(await response.stream.bytesToString());

限制与最佳实践

限制

  • 每个请求的最大文件大小为 50MB
  • 支持的格式:PDF, JPG, JPEG, PNG, WEBP
  • 准确性取决于图像质量 — 严重损坏的扫描件、眩光和打印值上方的手写字会降低字段级准确性
  • 提取仅限于上述字段

最佳实践

  • 如果有原始 PDF,请优先使用原始 PDF 而不是照片
  • 从正面拍摄整个文档,光线均匀
  • 扫描件请使用至少 300 DPI
  • 检查每个字段的 confidence 分数,并将低置信度值发送给人工审查
  • 在支持的情况下,一次请求发送多个文档以减少往返次数

准确性与性能

字段级提取准确性在内部 ChindaOCR-M3 黄金评估数据集上进行衡量 — 对真实泰语文档(包括低分辨率照片和部分被手写字遮挡的账单)进行视觉重新验证的标签。

文档类型文档数字段数准确性
银行对账单210100%
总体,所有六种文档类型2514798.6%

支持

需要帮助?请联系我们: