🧾 OCR ใบเสร็จรับเงิน / ใบแจ้งหนี้ / ใบวางบิล / ใบกำกับภาษี
ยินดีต้อนรับสู่ Thai Receipt OCR API โซลูชันที่ขับเคลื่อนด้วย AI ซึ่งพัฒนาโดย บริษัท ไอแอพพ์เทคโนโลยี จำกัด สำหรับการดึงข้อมูลจากใบเสร็จและใบแจ้งหนี้ของไทย เอกสารนี้จะช่วยคุณในการผสานรวมและใช้งานบริการ OCR ของเราได้อย่างมีประสิทธิภาพ
ทดลองใช้ AI Demo
เข้าสู่ระบบหรือสร้างบัญชีฟรีเพื่อใช้งาน AI Demo และสำรวจ API ที่ทรงพลังของเรา
รับ 50 เครดิตฟรี (IC) เมื่อสมัครสมาชิก!
โปรโมชันหมดเขต 31 ธันวาคม 2568
Getting Started
-
Prerequisites
- API key จาก ไอแอพพ์เทคโนโลยี
- ใบเสร็จภาษาไทย / อังกฤษ ใช้รูปภาพที่พิมพ์หรือเขียนด้วยลายมือ
- รูปแบบไฟล์ที่รองรับ: JPEG, JPG, PNG, HEIC, HEIF, PDF
- ขนาดไฟล์สูงสุด: 10MB
-
Quick Start
- การประมวลผลที่รวดเร็ว (5-10 วินาทีต่อเอกสาร)
- การดึงข้อความที่มีความแม่นยำสูง
- รองรับรูปแบบไฟล์หลายรูปแบบ
-
Key Features
- การดึงข้อมูลรายละเอียด รวมถึง:
- รายละเอียดใบแจ้งหนี้ (ประเภท, ID, วันที่, เลขที่เล่ม)
- ข้อมูลผู้ขาย (ชื่อ, ที่อยู่, เลขประจำตัวผู้เสียภาษี, ข้อมูลติด ต่อ)
- ข้อมูลลูกค้า (ชื่อ, ที่อยู่, เลขประจำตัวผู้เสียภาษี, ข้อมูลติดต่อ)
- รายละเอียดรายการสินค้า (รหัสสินค้า, ชื่อ, จำนวน, ราคาต่อหน่วย, ราคารวม)
- สรุปยอดเงิน (ยอดรวมก่อนภาษี, ส่วนลด, ภาษีมูลค่าเพิ่ม, ยอดรวมสุทธิ)
- รองรับเอกสารทั้งแบบหน้าเดียวและหลายหน้า (PDF)
- ตัวเลือกในการส่งคืนข้อความ OCR ต้นฉบับและรูปภาพที่ประมวลผลแล้ว
- รูปแบบการตอบสนอง JSON ที่ยืดหยุ่นพร้อมการดึงข้อมูลฟิลด์โดยละเอียด
- การดึงข้อมูลรายละเอียด รวมถึง:
-
Security & Compliance
- เป็นไปตามข้อกำหนด GDPR และ PDPA
- Endpoint API ที่ปลอดภัย
- ไม่มีการเก็บรักษาข้อมูลหลังจากการประมวลผล
API ของเราได้รับการออกแบบมาเพื่อจัดการกับรูปแบบและเลย์เอาต์ใบเสร็จที่หลากหลายซึ่งใช้กันทั่วไปในประเทศไทย ตั้งแต่ใบเสร็จร้านค้าปลีกทั่วไปไปจนถึงใบกำกับภาษีอย่างเป็นทางการ แบบจำลอง AI หลังการประมวล ผลได้รับการฝึกฝนมาเพื่อทำความเข้าใจโครงสร้างใบเสร็จของไทยและสามารถดึงข้อมูลได้อย่างน่าเชื่อถือแม้ในเอกสารที่มีสัญญาณรบกวนหรือสแกนไม่ชัดเจน
Example
นี่คือตัวอย่างใบเสร็จและข้อมูลที่ดึงออกมา:
Request:
cURL
curl -X POST "https://api.iapp.co.th/ocr/v3/receipt/file" \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/receipt.jpg" \
-F "return_image=false" \
-F "return_ocr=false"
API Endpoints
| Endpoint | Method | Description | Cost |
|---|---|---|---|
/v3/store/ocr/receipt/ocr/v3/receipt | POST | Extract data from Thai receipts and invoices | 1 IC per page |
Response:
{
"message": "success",
"processed": {
"invoiceType": "ใบเสร็จรับเงิน/ใบกำกับภาษีอย่างย่อ",
"invoiceBook": null,
"invoiceID": "4504RC112566/004044",
"invoiceDate": "27/11/2566",
"issuerName": "หจก.บุญรอดคอฟฟี (ตลาดรัตนบุรี)",
"issuerTaxID": "0323560000723",
"items": [
{
"itemNo": 1,
"itemName": "ชาเขียวนม ร้อน ขนาดใหญ่",
"itemUnit": 1,
"itemUnitCost": 60.0,
"itemTotalCost": 60.0
}
],
"totalCost": 60.0,
"discount": 0.0,
"totalCostAfterDiscount": 60.0,
"vat": 3.93,
"grandTotal": 60.0
},
"process_ms": 6821
}
Features & Capabilities
Core Features
-
Document Processing
- การดึงข้อความและจดจำฟิลด์ที่มีความแม่นยำสูง
- รองรับภาษาไทย / อังกฤษ
- รองรับการพิมพ์ / ลายมือ
- ความเร็วในการประมวลผล 5-10 วินาทีต่อเอกสาร
- รองรับหลายรูปแบบ (JPEG, JPG, PNG, HEIC, HEIF, PDF)
- จัดการเอกสารหลายหน้า
- ตัวเลือกในการส่งคืนข้อความ OCR ดั้งเดิมและรูปภาพที่ประมวลผลแล้ว
- การประมวลผลที่สอดคล้องกับ GDPR และ PDPA
-
Data Extraction
- รูปแบบการตอบสนอง JSON ที่ยืดหยุ่นพร้อมการดึงข้อมูลฟิลด์โดยละเอียด
Supported Fields
| Field | Type | Description |
|---|---|---|
| invoiceType | String | Title or type of invoice |
| invoiceBook | String | Book number of invoice |
| invoiceID | String | ID number of invoice |
| invoiceDate | String | Date of invoice issuance |
| purchaseOrderID | String | ID number of linked purchase order |
| issuerName | String | Name of invoice issuer |
| issuerAddress | String | Address of invoice issuer |
| issuerTaxID | String | Tax ID of invoice issuer |
| issuerPhone | String | Contact phone of invoice issuer |
| customerName | String | Name of customer |
| customerAddress | String | Address of customer |
| customerTaxID | String | Tax ID of customer |
| customerPhone | String | Contact phone of customer |
| items | Array | Array of line items with details below |
| - itemNo | String | Item sequence number |
| - itemCode | String | Product/service code |
| - itemName | String | Product/service name |
| - itemUnit | Number | Quantity of item |
| - itemUnitCost | Number | Cost per unit |
| - itemTotalCost | Number | Total cost for this item |
| totalCost | Number | Sum of all item costs |
| discount | Number | Discount amount if applicable |
| totalCostAfterDiscount | Number | Total cost after applying discount |
| vat | Number | Value Added Tax amount (7%) |
| grandTotal | Number | Final total amount including VAT |
Note: All currency values are rounded to two decimal places.
API Reference
ยินดีต้อนรับสู่ Thai Receipt OCR API เครื่องมืออันทรงพลังสำหรับการแปลงใบเสร็จและใบแจ้งหนี้ของไทยให้เป็นข้อมูล JSON ที่มีโครงสร้าง API นี้ใช้ประโยชน์จากเทคโนโลยี OCR และ AI ขั้นสูงเพื่อดึงข้อมูลสำคัญ เช่น รายละเอียดใบแจ้งหนี้ ข้อมูลผู้ขายและลูกค้า รายการสินค้า และยอดรวมทางการเงิน
Recognizing Receipt
มี endpoint สองรายการสำหรับการประมวลผลใบเสร็จ:
1. File Upload
POST https://api.iapp.co.th/ocr/v3/receipt/file
Request Headers
| Name | Type | Required | Description |
|---|---|---|---|
| apikey | string | Yes | Your API key |
Request Body (multipart/form-data)
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | Receipt image (JPEG, PNG) or PDF document |
| return_image | boolean | No | Include base64 encoded image in response (default: false) |
| return_ocr | boolean | No | Include raw OCR text in response (default: false) |
Supported File Types
- Images: JPEG, PNG
- Documents: PDF (single or multiple pages)
Response Format
{
"message": "success",
"raw": {
"image": "string", // Base64 encoded, only if return_image=true
"text": "string" // Only if return_ocr=true
},
"processed": {
"invoiceType": "string",
"invoiceBook": "string",
"invoiceID": "string",
"invoiceDate": "string",
"purchaseOrderID": "string",
"issuerName": "string",
"issuerAddress": "string",
"issuerTaxID": "string",
"issuerPhone": "string",
"customerName": "string",
"customerAddress": "string",
"customerTaxID": "string",
"customerPhone": "string",
"items": [
{
"itemNo": "string",
"itemCode": "string",
"itemName": "string",
"itemUnit": "number",
"itemUnitCost": "number",
"itemTotalCost": "number"
}
],
"totalCost": "number",
"discount": "number",
"totalCostAfterDiscount": "number",
"vat": "number",
"grandTotal": "number"
},
"template": "receipt",
"iapp": "string",
"process_ms": "number"
}
Error Handling
| Status | Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid parameters or file format |
| 401 | UNAUTHORIZED | Invalid or missing API key |
| 404 | NOT_FOUND | Invalid endpoint |
| 500 | INTERNAL_SERVER_ERROR | Processing failed |
2. Base64 Image
POST https://api.iapp.co.th/ocr/v3/receipt/base64
Request Headers
| Name | Type | Required | Description |
|---|---|---|---|
| apikey | string | Yes | Your API key |
Request Body
You can send the base64 data either as JSON or form data:
JSON Format:
{
"base64_string": "string", // Base64 encoded image data
"return_image": false, // Optional
"return_ocr": false // Optional
}
Form Data Format:
| Parameter | Type | Required | Description |
|---|---|---|---|
| base64_string | string | Yes | Base64 encoded image data |
| return_image | boolean | No | Include base64 encoded image in response (default: false) |
| return_ocr | boolean | No | Include raw OCR text in response (default: false) |
Response Format
Same as file upload endpoint
Code Examples
Curl
curl -X POST https://api.iapp.co.th/v3/store/ocr/receipt \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"
Python (File Upload)
import requests
apiKey = 'YOUR_API_KEY'
filePath = '/path/to/receipt.jpg'
url = "https://api.iapp.co.th/ocr/v3/receipt/file"
headers = {'apikey': apiKey}
files = {'file': ('receipt.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'
url = "https://api.iapp.co.th/ocr/v3/receipt/base64"
# Read image file and convert to base64
with open('/path/to/receipt.jpg', '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 (File Upload)
const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")
const apiKey = "YOUR_API_KEY"
const filePath = "/path/to/receipt.jpg"
const url = "https://api.iapp.co.th/ocr/v3/receipt/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 url = "https://api.iapp.co.th/ocr/v3/receipt/base64"
// Read image file and convert to base64
const base64String = fs.readFileSync("/path/to/receipt.jpg", { 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 (File Upload)
$url = 'https://api.iapp.co.th/ocr/v3/receipt/file';
$apiKey = 'YOUR_API_KEY';
$filePath = '/path/to/receipt.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)
<?php
$url = 'https://api.iapp.co.th/ocr/v3/receipt/base64';
$apiKey = 'YOUR_API_KEY';
$filePath = '/path/to/receipt.jpg';
// Read image file and convert to 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 (File Upload)
import Foundation
let url = URL(string: "https://api.iapp.co.th/ocr/v3/receipt/file")!
let filePath = "/path/to/receipt.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=\"receipt.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/receipt/base64")!
let filePath = "/path/to/receipt.jpg"
let apiKey = "YOUR_API_KEY"
// Read image file and convert to 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 (File Upload)
import okhttp3.*
import java.io.File
val client = OkHttpClient()
val apiKey = "YOUR_API_KEY"
val filePath = "/path/to/receipt.jpg"
val url = "https://api.iapp.co.th/ocr/v3/receipt/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/receipt.jpg"
val url = "https://api.iapp.co.th/ocr/v3/receipt/base64"
// Read file and convert to 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 (File Upload)
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/receipt/file";
String filePath = "/path/to/receipt.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/receipt/base64";
String filePath = "/path/to/receipt.jpg";
try {
// Read file and convert to 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 (File Upload)
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
String url = 'https://api.iapp.co.th/ocr/v3/receipt/file';
String filePath = '/path/to/receipt.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;
void main() async {
String url = 'https://api.iapp.co.th/ocr/v3/receipt/base64';
String filePath = '/path/to/receipt.jpg';
String apiKey = 'YOUR_API_KEY';
try {
// Read file and convert to base64
File file = File(filePath);
List<int> fileBytes = await file.readAsBytes();
String base64String = base64Encode(fileBytes);
Map<String, dynamic> data = {
'base64_string': base64String,
'return_image': false,
'return_ocr': false
};
var response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
'apikey': apiKey
},
body: jsonEncode(data)
);
if (response.statusCode == 200) {
print(response.body);
} else {
print('Error: ${response.statusCode}');
}
} catch (e) {
print('Error: $e');
}
}
Limitations & Best Practices
Limitations
- ขนาดไฟล์สูงสุด: 10MB
- ภาษาที่รองรับ: ไทย
- ไฟล์ PDF: สูงสุด 10 หน้า
- อัตราการจำกัด: 10 คำขอต่อวินาทีต่อ API key
Best Practices
- Ensure good image quality for optimal results
- Use JPEG or PNG format for images
- Implement error handling for failed requests
- Cache responses when processing the same document multiple times
- Set appropriate timeouts for large files
Accuracy & Performance
Overall Accuracy
Based on our benchmark dataset of 10,000 Thai receipts:
| Field Type | Accuracy (%) | Notes |
|---|---|---|
| Invoice Numbers | 99.2% | Including tax invoice numbers |
| Amounts | 99.5% | Currency values and totals |
| Dates | 98.7% | Various Thai date formats |
| Line Items | 97.8% | Product details and prices |
| Overall | 98.8% | Weighted average |
Processing Speed
- Average processing time: 5-10 seconds
- 95th percentile: 12 seconds
- Maximum processing time: 15 seconds
Factors Affecting Accuracy
-
Image Quality
- Resolution (minimum 300 DPI recommended)
- Lighting conditions
- Image focus and clarity
-
Document Condition
- Physical damage
- Fading or wear
- Handwritten modifications
-
Receipt Format
- Standard formats: 99%+ accuracy
- Non-standard layouts: 95%+ accuracy
- Handwritten elements: 90%+ accuracy
History
Our model is continuously trained on new data to improve accuracy:
| Version | Release Date | Accuracy | Key Improvements |
|---|---|---|---|
| 3.0 | 2024-12-27 | 96.5% | Base version |
Pricing
| AI API Service Name | Endpoint | Pricing | On-Premise |
|---|---|---|---|
| Receipt OCR [v1.0] | receipt-ocr | 1 IC/Page | Contact |