เอกสาร AksonOCR API
API สำหรับสกัดข้อความจากเอกสาร รองรับทั้งลายมือและตัวอักษรพิมพ์ทั้งภาษาไทยและอังกฤษ พร้อมดึงข้อมูลแบบมีโครงสร้าง (Structured Data) รองรับไฟล์ PDF, JPG, PNG, WEBP ประมวลผลแบบอะซิงค์ผ่านระบบ Job
อ่านลายมือ
รองรับลายมือและตัวอักษรพิมพ์ทั้งไทยและอังกฤษ
ดึงข้อมูลแบบมีโครงสร้าง
กำหนด field เอง หรือใช้ Extraction Template ที่สร้างไว้แล้ว
รองรับหลายรูปแบบ
PDF, JPG, PNG, WEBP ขนาดไม่เกิน 200MB
ประมวลผลแบบอะซิงค์
ระบบ Job-based รองรับทั้ง polling และ webhook
คะแนนความมั่นใจ
ระดับ token-level
Batch Processing
ประมวลผลจำนวนมาก
ขั้นตอนการใช้งาน
อัพโหลดงาน
อัปโหลดเอกสาร (ไฟล์หรือ URL) พร้อมระบุ action: transcribe หรือ extractor
ตรวจสอบสถานะ
เช็กสถานะผ่าน jobId ที่ได้รับกลับมาว่าสถานะประมวลผลไปถึงไหนแล้ว หรือตั้ง webhookUrl ให้ระบบแจ้งอัตโนมัติ
ดึงผลลัพธ์
เมื่อประมวลผลเสร็จ ดึงผลลัพธ์เป็น JSON พร้อมคะแนนความมั่นใจรายหน้า
เริ่มต้นใช้งาน
- 1สมัครสมาชิกที่ dashboard.aksonocr.com
- 2สร้าง API Key ในหน้า Dashboard
- 3ถ้าต้องการใช้ Extractor (
action: extractor) ให้สร้างและทดสอบ Extraction Template ก่อน - 4ทดลองเรียกใช้ API กับเอกสารตัวอย่าง
- 5ติดตามผลลัพธ์และการใช้งานได้ที่ Dashboard
การยืนยันตัวตน
API ใช้การยืนยันตัวตนด้วย API Key ทุก request ต้องแนบ X-API-Key ไว้ใน header ทุกครั้ง
- สร้าง Key ได้ผ่านหน้า Dashboard
- สามารถยกเลิกหรือสร้างใหม่ได้ตลอดเวลา
X-API-Key: your-api-key
โมเดลที่ใช้ได้
| Model | รายละเอียด | เครดิต/หน้า |
|---|---|---|
AksonOCR-preview | เร็วและคุ้มค่า เหมาะกับเอกสารตัวอักษรพิมพ์ | 0.5 |
AksonOCR-handwriting | แม่นยำสูง เหมาะกับลายมือหรือเอกสารที่ซับซ้อน | 2 |
AksonOCR-1.0 | โมเดลอเนกประสงค์ | 1 |
Rate Limits
Rate Limits จะคำนวณตาม API Key และแตกต่างกันตามโมเดล:
| Model | RPM (มี Key) | ต่อวัน (มี Key) | RPM (Demo) | ต่อวัน (Demo) |
|---|---|---|---|---|
AksonOCR-preview | 1,000 | 100,000 | 5 | 100 |
AksonOCR-handwriting | 1,000 | 100,000 | 5 | 100 |
AksonOCR-1.0 | 1,000 | 100,000 | 5 | 100 |
ข้อจำกัดของไฟล์
| รายการ | ค่า | Environment Variable |
|---|---|---|
| ขนาดไฟล์สูงสุด | 200 MB | MAX_FILE_SIZE |
| จำนวนหน้าสูงสุดต่องาน | 1,000 หน้า | MAX_PAGES |
เมื่อโดน Rate Limit
เมื่อเกินลิมิต API จะตอบกลับ 429 Too Many Requests
แนวทางที่แนะนำ
- ใช้ webhook แทนการ polling เพื่อลดการเรียก API ซ้ำๆ
- ใช้ exponential backoff เมื่อได้รับ 429 กลับมา
- ดึงผลเมื่อเสร็จเท่านั้น — รอให้ status เป็น
completedก่อนค่อยดึงผลลัพธ์ - Cache response เพื่อไม่ต้องเรียกซ้ำ
เครดิต
ค่าเครดิตขึ้นอยู่กับโมเดลและจำนวนหน้าที่ประมวลผล:
| Model | Normal (เครดิต/หน้า) | Batch (เครดิต/หน้า) |
|---|---|---|
AksonOCR-preview | 0.5 | ถูกกว่า (ส่วนลด) |
AksonOCR-handwriting | 2 | ถูกกว่า (ส่วนลด) |
AksonOCR-1.0 | 1 | ถูกกว่า (ส่วนลด) |
ตัวอย่าง: AksonOCR-preview กับ PDF 5 หน้า = 2.5 เครดิต AksonOCR-handwriting กับ PDF 5 หน้า = 10 เครดิตรูปภาพเดี่ยว = คิดตามราคาต่อหน้าของโมเดลนั้นๆ
เครดิตจะถูกประเมินตอนสร้างงานและตรวจสอบอีกครั้งเมื่อเสร็จ ถ้าเครดิตไม่พอจะได้รับ error 402
โหมด Batch: ใช้ mode: "batch" เพื่อประมวลผลในราคาถูกกว่า โดยจะได้รับผลลัพธ์ภายใน 24 ชั่วโมง
1. อัพโหลดงานผ่านอัปโหลดไฟล์
อัปโหลดไฟล์โดยตรง (รูปภาพหรือ PDF) เพื่อประมวลผล OCR แบบ async จะได้รับ job ID กลับมาทันที
https://backend.aksonocr.com/api/v3/uploadHeaders
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Content-Type | multipart/form-data | Yes |
Form Fields
| Name | Type | Required | Description |
|---|---|---|---|
file | file | Yes | ไฟล์รูปภาพ (JPG, PNG, WEBP) หรือ PDF ขนาดไม่เกิน 200MB |
model | string | Yes | โมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0 |
action | string | Yes | transcribe (อ่านทั้งหน้า) หรือ extractor (ดึงข้อมูลสำคัญ) |
mode | string | No | normal (ค่าเริ่มต้น) หรือ batch (ถูกกว่า ได้ผลภายใน 24 ชม.) |
pages | string | No | หมายเลขหน้าคั่นด้วยจุลภาค (0-indexed) เช่น 0,1,2 |
webhookUrl | string | No | URL ที่จะรับแจ้งเตือนเมื่อเสร็จหรือผิดพลาด |
wordConfidence | string | No | แนบค่าความเชื่อมั่นระดับคำ (true/false) ค่าเริ่มต้น: false |
templateId | string | No | Extraction Template ID จำเป็นถ้าใช้ extractor โดยไม่มี customFields |
customFields | string | No | JSON string ของ custom fields array (สำหรับ extractor) |
listConfig | string | No | JSON string ของ list config (สำหรับ extractor) |
additionalInstructions | string | No | คำสั่งเพิ่มเติมสำหรับการดึงข้อมูล (สำหรับ extractor) |
Request
curl -X POST 'https://backend.aksonocr.com/api/v3/upload' \ -H 'X-API-Key: <YOUR_API_KEY>' \ -F 'file=@/path/to/document.pdf' \ -F 'model=AksonOCR-preview' \ -F 'action=transcribe' \ -F 'pages=0,1,2' \ -F 'wordConfidence=true'
Response
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "pending",
"action": "transcribe",
"mode": "normal",
"model": "AksonOCR-preview",
"createdAt": "2025-01-15T10:29:00.000Z"
}Response Codes
| Code | รายละเอียด |
|---|---|
| 202 | Accepted — สร้างงานและเข้าคิวประมวลผลแล้ว |
| 400 | Bad Request — ไฟล์ไม่ถูกต้อง โมเดลไม่ถูก หรือ parameter ผิด |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 402 | Payment Required — เครดิตไม่พอ |
| 429 | Too Many Requests — เกิน Rate Limit |
2. อัพโหลดงานผ่าน URL
ส่งเอกสารผ่าน URL หรือ base64 data URI เพื่อประมวลผล OCR แบบ async จะได้รับ job ID กลับมาทันที
https://backend.aksonocr.com/api/v3/ocrHeaders
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Content-Type | application/json | Yes |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
action | string | Yes | รูปแบบการประมวลผล: transcribe (อ่านทั้งหน้า) หรือ extractor (ดึงข้อมูลสำคัญ) |
document | object | Yes | เอกสารที่ต้องการประมวลผล (ดูประเภทด้านล่าง) |
model | string | Yes | โมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0 |
mode | string | No | normal (ค่าเริ่มต้น) หรือ batch (ถูกกว่า ได้ผลภายใน 24 ชม.) |
pages | number[] | No | ระบุหน้าที่ต้องการ (0-indexed, PDF เท่านั้น) |
webhookUrl | string | No | URL ที่จะรับแจ้งเตือนเมื่อเสร็จหรือผิดพลาด |
wordConfidence | boolean | No | แนบค่าความเชื่อมั่นระดับคำ ค่าเริ่มต้น: false |
templateId | string | No | Extraction Template ID จำเป็นถ้าใช้ extractor โดยไม่มี customFields |
customFields | array | No | ฟิลด์ที่ต้องการดึงข้อมูล (สำหรับ extractor) ใช้ร่วมกับ templateId ไม่ได้ |
listConfig | object | No | การตั้งค่าดึงข้อมูลแบบรายการ (สำหรับ extractor) ใช้ร่วมกับ templateId ไม่ได้ |
additionalInstructions | string | No | คำสั่งเพิ่มเติมสำหรับการดึงข้อมูล (สำหรับ extractor) |
ประเภทเอกสารที่รับ
Image URL
{ "type": "image_url", "image_url": "https://example.com/receipt.png" }Document URL (PDF หรือรูปภาพ)
{ "type": "document_url", "document_url": "https://example.com/doc.pdf", "document_name": "invoice.pdf" }Base64 Data URI
{ "type": "document_url", "document_url": "data:application/pdf;base64,JVBERi0xLjQK..." }รูปแบบ Custom Fields (สำหรับ extractor)
[
{
"key": "invoice_number",
"description": "Invoice number",
"example": "INV-2025-001"
},
{
"key": "total_amount",
"description": "Total amount due"
}
]รูปแบบ List Config (สำหรับ extractor)
{
"listKey": "line_items",
"listDescription": "List of invoice line items",
"fields": [
{ "key": "item_name", "description": "Product name" },
{ "key": "quantity", "description": "Quantity ordered" },
{ "key": "unit_price", "description": "Price per unit" }
]
}Request
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "transcribe",
"document": {
"type": "document_url",
"document_url": "https://arxiv.org/pdf/2201.04234.pdf"
},
"model": "AksonOCR-preview",
"pages": [0, 1, 2],
"webhookUrl": "https://your-server.com/webhook"
}'Response
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "pending",
"action": "transcribe",
"mode": "normal",
"model": "AksonOCR-preview",
"createdAt": "2025-01-15T10:29:00.000Z"
}Response Codes
| Code | รายละเอียด |
|---|---|
| 202 | Accepted — สร้างงานและเข้าคิวประมวลผลแล้ว |
| 400 | Bad Request — โมเดลไม่ถูกต้อง ขาดฟิลด์ หรือ parameter ไม่ถูกต้อง |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 402 | Payment Required — เครดิตไม่พอ |
| 429 | Too Many Requests — เกิน Rate Limit |
3. ตรวจสอบสถานะงาน
ดึงสถานะและความคืบหน้าของงานที่กำลังประมวลผล
https://backend.aksonocr.com/api/v3/ocr/status/{jobId}Headers
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Yes | ID ของงานที่ได้รับจากตอนอัพโหลดงาน |
สถานะของงาน
| Status | รายละเอียด |
|---|---|
pending | งานอยู่ในคิว รอประมวลผล |
processing | กำลังประมวลผลอยู่ |
completed | เสร็จแล้ว สามารถดึงผลลัพธ์ได้ผ่าน result endpoint |
failed | งานผิดพลาด ดูรายละเอียดได้ที่ฟิลด์ error |
cancelled | ถูกยกเลิกโดยผู้ใช้ |
expired | ผลลัพธ์หมดอายุแล้ว (หลัง 72 ชั่วโมง) |
Request
curl -X GET 'https://backend.aksonocr.com/api/v3/ocr/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \ -H 'X-API-Key: <YOUR_API_KEY>'
Response (Completed)
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"action": "transcribe",
"status": "completed",
"mode": "normal",
"model": "AksonOCR-preview",
"totalPages": 5,
"processedPages": 5,
"progress": 100,
"isChunked": false,
"createdAt": "2025-01-15T10:29:00.000Z",
"startedAt": "2025-01-15T10:29:01.000Z",
"completedAt": "2025-01-15T10:30:00.000Z",
"result": {
"url": "https://storage.googleapis.com/...",
"expiresAt": "2025-01-15T11:30:00.000Z"
}
}Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ส่งคืนสถานะงานสำเร็จ |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 403 | Forbidden — ไม่มีสิทธิ์เข้าถึงงานนี้ |
| 404 | Not Found — ไม่พบงาน |
4. ดึงผลลัพธ์
ดึงผลลัพธ์ของงานที่เสร็จแล้ว รองรับ pagination สำหรับเอกสารขนาดใหญ่
https://backend.aksonocr.com/api/v3/ocr/result/{jobId}Headers
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Yes | ID ของงาน |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | number | No | Page offset (0-based) สำหรับ pagination |
limit | number | No | จำนวนหน้าที่ส่งคืนต่อครั้ง |
Request
curl -X GET 'https://backend.aksonocr.com/api/v3/ocr/result/a1b2c3d4-e5f6-7890-abcd-ef1234567890?page=0&limit=10' \ -H 'X-API-Key: <YOUR_API_KEY>'
Response (Transcribe)
{
"jobId": "a1b2c3d4-e5f6-...",
"action": "transcribe",
"model": "AksonOCR-preview",
"pages": [
{
"index": 0,
"markdown": "# Invoice\n\n**Invoice Number:** INV-2025-001...",
"confidence": 95,
"status": "completed",
"words": [
{ "word": "Invoice", "confidence": 0.98 },
{ "word": "Number:", "confidence": 0.96 }
]
}
],
"confidence": 94,
"resultUrl": "https://storage.googleapis.com/...",
"resultUrlExpiresAt": "2025-01-15T11:30:00.000Z",
"usage": {
"pages_processed": 2,
"credits_used": 2
},
"totalPages": 2,
"hasMore": false,
"pageOffset": 0,
"pageLimit": 10
}Response (Extractor)
{
"jobId": "a1b2c3d4-e5f6-...",
"action": "extractor",
"model": "AksonOCR-preview",
"pages": [
{
"index": 0,
"markdown": "# Invoice INV-2025-001...",
"confidence": 95,
"status": "completed",
"structuredData": {
"invoice_number": "INV-2025-001",
"total_amount": "$70.00",
"date": "2025-01-15",
"line_items": [
{ "item_name": "Widget A", "quantity": "3", "unit_price": "$15.00" },
{ "item_name": "Widget B", "quantity": "1", "unit_price": "$25.00" }
]
},
"fieldConfidences": [
{ "key": "invoice_number", "confidence": 0.98 },
{ "key": "total_amount", "confidence": 0.95 }
]
}
],
"confidence": 95,
"usage": { "pages_processed": 1, "credits_used": 1 },
"totalPages": 1,
"hasMore": false
}Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ส่งคืนผลลัพธ์สำเร็จ |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 403 | Forbidden — ไม่มีสิทธิ์เข้าถึงงานนี้ |
| 404 | Not Found — ไม่พบงานหรือยังไม่เสร็จ |
5. ยกเลิกงาน
ยกเลิกงานที่อยู่ในสถานะ pending หรือ processing หน้าที่ยังไม่ได้ประมวลผลจะไม่ถูกคิดเครดิต
https://backend.aksonocr.com/api/v3/ocr/{jobId}/cancelHeaders
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Yes | ID ของงาน |
Request
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr/a1b2c3d4-e5f6-7890-abcd-ef1234567890/cancel' \ -H 'X-API-Key: <YOUR_API_KEY>'
Response
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "cancelled",
"message": "Job cancelled successfully"
}Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ยกเลิกงานแล้ว |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 403 | Forbidden — ไม่มีสิทธิ์ยกเลิกงานนี้ |
| 404 | Not Found — ไม่พบงาน |
6. ลบงาน
ลบงานและผลลัพธ์ที่เกี่ยวข้องอย่างถาวร การดำเนินการนี้ไม่สามารถย้อนกลับได้
https://backend.aksonocr.com/api/v3/ocr/{jobId}Headers
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Yes | ID ของงาน |
Request
curl -X DELETE 'https://backend.aksonocr.com/api/v3/ocr/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \ -H 'X-API-Key: <YOUR_API_KEY>'
Response
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deleted": true,
"message": "Job soft-deleted successfully"
}Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ลบงานแล้ว |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 403 | Forbidden — ไม่มีสิทธิ์ลบงานนี้ |
| 404 | Not Found — ไม่พบงาน |
Key Extraction Guide (Extractor)
action: extractor ใช้สำหรับดึงข้อมูลเฉพาะฟิลด์จากเอกสาร เช่น เลขที่ใบแจ้งหนี้ ยอดรวม รายการสินค้า แทนที่จะได้ตัวอักษรทั้งหน้า ผลลัพธ์จะเป็น JSON ใน structuredData
ภาพรวมการทำงาน
① customFields
กำหนดฟิลด์เองใน request โดยตรง เหมาะสำหรับทดสอบ prototype หรือเอกสารรูปแบบใหม่
② templateId
ใช้ Extraction Template ที่สร้างไว้บน Dashboard เหมาะกับเอกสารรูปแบบเดิมที่ใช้ซ้ำบ่อย
บัตรประชาชนไทย (Thai National ID Card)
สกัดข้อมูลจากรูปถ่ายหรือสแกนบัตรประชาชน — ระบบ KYC / เปิดบัญชี / ลงทะเบียน
Model แนะนำ: AksonOCR-1.0 สำหรับบัตรพิมพ์ชัด หรือ AksonOCR-handwriting ถ้ามีลายมือกรอกเพิ่ม
บัตรไทยมีทั้งข้อความภาษาไทยและภาษาอังกฤษ ใส่ additionalInstructions เพื่อความแม่นยำ
Custom Fields สำหรับบัตรประชาชน
[
{ "key": "เลขบัตรประชาชน",
"description": "เลขประจำตัวประชาชน 13 หลัก",
"example": "1-1001-00123-45-6" },
{ "key": "ชื่อ-นามสกุล (ไทย)",
"description": "ชื่อและนามสกุลภาษาไทย" },
{ "key": "Name (EN)",
"description": "First and last name in English" },
{ "key": "วันเกิด",
"description": "วันเดือนปีเกิด (พ.ศ.)",
"example": "1 ม.ค. 2540" },
{ "key": "วันหมดอายุ",
"description": "วันที่บัตรหมดอายุ" },
{ "key": "วันออกบัตร",
"description": "วันที่ออกบัตร" },
{ "key": "ที่อยู่",
"description": "ที่อยู่ตามทะเบียนบ้านบนบัตร" },
{ "key": "ศาสนา",
"description": "ศาสนาของผู้ถือบัตร" }
]Request
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "image_url",
"image_url": "https://example.com/national-id.jpg"
},
"model": "AksonOCR-1.0",
"customFields": [
{ "key": "เลขบัตรประชาชน", "description": "เลขประจำตัวประชาชน 13 หลัก", "example": "1-1001-00123-45-6" },
{ "key": "ชื่อ-นามสกุล (ไทย)", "description": "ชื่อและนามสกุลภาษาไทย" },
{ "key": "Name (EN)", "description": "First and last name in English" },
{ "key": "วันเกิด", "description": "วันเดือนปีเกิด (พ.ศ.)" },
{ "key": "วันหมดอายุ", "description": "วันที่บัตรหมดอายุ" },
{ "key": "วันออกบัตร", "description": "วันที่ออกบัตร" },
{ "key": "ที่อยู่", "description": "ที่อยู่ตามทะเบียนบ้านบนบัตร" },
{ "key": "ศาสนา", "description": "ศาสนาของผู้ถือบัตร" }
],
"additionalInstructions": "บัตรมีทั้งข้อความไทยและอังกฤษ ดึงทั้งสองภาษา เลขบัตรประชาชนมี 13 หลัก อาจมีขีดคั่น"
}'Response (ผลลัพธ์หลัง completed)
{
"jobId": "id-card-job-uuid",
"action": "extractor",
"model": "AksonOCR-1.0",
"pages": [
{
"index": 0,
"status": "completed",
"confidence": 97,
"structuredData": {
"เลขบัตรประชาชน": "1-1001-00123-45-6",
"ชื่อ-นามสกุล (ไทย)": "นายสมชาย ใจดี",
"Name (EN)": "Mr. Somchai Jaidee",
"วันเกิด": "1 มกราคม 2540",
"วันหมดอายุ": "12 มี.ค. 2572",
"วันออกบัตร": "12 มี.ค. 2562",
"ที่อยู่": "45/12 ซ.ลาดพร้าว 80 แขวงวังทองหลาง กรุงเทพฯ 10310",
"ศาสนา": "พุทธ"
},
"fieldConfidences": [
{ "key": "เลขบัตรประชาชน", "confidence": 0.99 },
{ "key": "ชื่อ-นามสกุล (ไทย)", "confidence": 0.98 },
{ "key": "Name (EN)", "confidence": 0.97 },
{ "key": "วันเกิด", "confidence": 0.98 },
{ "key": "วันหมดอายุ", "confidence": 0.99 },
{ "key": "ที่อยู่", "confidence": 0.95 }
]
}
],
"confidence": 97,
"usage": { "pages_processed": 1, "credits_used": 1 },
"totalPages": 1,
"hasMore": false
}ใบแจ้งหนี้ / ใบกำกับภาษี (Invoice / Tax Invoice)
ระบบบัญชีดึงข้อมูลใบแจ้งหนี้ PDF อัตโนมัติ ไม่ต้องพิมพ์ด้วยมือ — Model แนะนำ: AksonOCR-preview (0.5 credits/page)
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "document_url",
"document_url": "https://example.com/invoice-thai.pdf",
"document_name": "invoice.pdf"
},
"model": "AksonOCR-preview",
"customFields": [
{ "key": "เลขที่ใบแจ้งหนี้", "description": "เลขที่หรือรหัสของใบแจ้งหนี้", "example": "INV-2025-001" },
{ "key": "วันที่", "description": "วันที่ออกเอกสาร", "example": "15/01/2568" },
{ "key": "ชื่อลูกค้า", "description": "ชื่อบริษัทหรือชื่อผู้ซื้อ" },
{ "key": "เลขประจำตัวผู้เสียภาษี", "description": "Tax ID 13 หลัก" },
{ "key": "ยอดก่อนภาษี", "description": "ยอดรวมก่อนหักภาษีมูลค่าเพิ่ม" },
{ "key": "ภาษีมูลค่าเพิ่ม", "description": "จำนวนเงิน VAT 7%" },
{ "key": "ยอดรวมทั้งสิ้น", "description": "ยอดเงินรวมสุทธิที่ต้องชำระ" }
],
"listConfig": {
"listKey": "รายการสินค้า",
"listDescription": "รายการสินค้าหรือบริการในใบแจ้งหนี้",
"fields": [
{ "key": "ลำดับ", "description": "ลำดับรายการ" },
{ "key": "ชื่อสินค้า", "description": "ชื่อสินค้าหรือบริการ" },
{ "key": "จำนวน", "description": "จำนวนหน่วย" },
{ "key": "ราคาต่อหน่วย", "description": "ราคาต่อหน่วยสินค้า" },
{ "key": "จำนวนเงิน", "description": "ราคารวมของรายการนั้น" }
]
}
}'Response (ผลลัพธ์หลัง completed)
{
"jobId": "b2c3d4e5-...",
"action": "extractor",
"pages": [{
"index": 0,
"status": "completed",
"confidence": 96,
"structuredData": {
"เลขที่ใบแจ้งหนี้": "INV-2568-00342",
"วันที่": "20/01/2568",
"ชื่อลูกค้า": "บริษัท สยามเทรดดิ้ง จำกัด",
"เลขประจำตัวผู้เสียภาษี": "0105565012345",
"ยอดก่อนภาษี": "10,000.00",
"ภาษีมูลค่าเพิ่ม": "700.00",
"ยอดรวมทั้งสิ้น": "10,700.00",
"รายการสินค้า": [
{ "ลำดับ": "1", "ชื่อสินค้า": "กระดาษ A4 80 แกรม", "จำนวน": "50", "ราคาต่อหน่วย": "120.00", "จำนวนเงิน": "6,000.00" },
{ "ลำดับ": "2", "ชื่อสินค้า": "ปากกาลูกลื่น (โหล)", "จำนวน": "20", "ราคาต่อหน่วย": "90.00", "จำนวนเงิน": "1,800.00" }
]
},
"fieldConfidences": [
{ "key": "เลขที่ใบแจ้งหนี้", "confidence": 0.99 },
{ "key": "ยอดรวมทั้งสิ้น", "confidence": 0.98 }
]
}],
"confidence": 96,
"usage": { "pages_processed": 1, "credits_used": 0.5 },
"totalPages": 1,
"hasMore": false
}ใบสั่งซื้อ / ใบจัดส่ง (Purchase Order / Delivery Note)
อ่านใบสั่งซื้อจากซัพพลายเออร์เข้าระบบ ERP — Model แนะนำ: AksonOCR-preview
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "image_url",
"image_url": "https://example.com/purchase-order.jpg"
},
"model": "AksonOCR-preview",
"customFields": [
{ "key": "เลขที่ PO", "description": "Purchase Order Number", "example": "PO-2025-0123" },
{ "key": "วันที่สั่งซื้อ", "description": "วันที่ออกใบสั่งซื้อ" },
{ "key": "วันที่ต้องการ", "description": "วันที่ต้องการรับสินค้า" },
{ "key": "ชื่อซัพพลายเออร์", "description": "ชื่อบริษัทผู้ขาย" },
{ "key": "ยอดรวม", "description": "มูลค่าการสั่งซื้อรวมทั้งสิ้น" },
{ "key": "เงื่อนไขการชำระเงิน", "description": "เช่น Net 30" }
],
"listConfig": {
"listKey": "รายการสั่งซื้อ",
"listDescription": "รายการสินค้าที่สั่งซื้อ",
"fields": [
{ "key": "รหัสสินค้า", "description": "รหัส SKU หรือ Barcode" },
{ "key": "ชื่อสินค้า", "description": "ชื่อสินค้าหรือรายละเอียด" },
{ "key": "หน่วย", "description": "หน่วยนับ เช่น ชิ้น แพ็ค" },
{ "key": "จำนวนสั่ง", "description": "จำนวนที่สั่งซื้อ" },
{ "key": "ราคาต่อหน่วย", "description": "ราคาต่อหน่วยสินค้า" }
]
},
"additionalInstructions": "รหัสสินค้าอาจเป็น Barcode 8-13 หลัก ให้ดึงตัวเลขออกมาทั้งหมด"
}'Response
{
"jobId": "c3d4e5f6-...",
"action": "extractor",
"pages": [{
"index": 0,
"confidence": 94,
"structuredData": {
"เลขที่ PO": "PO-2568-0456",
"วันที่สั่งซื้อ": "18/01/2568",
"วันที่ต้องการ": "25/01/2568",
"ชื่อซัพพลายเออร์": "บริษัท ยำยำ อินเตอร์เนชั่นแนล จำกัด",
"ยอดรวม": "48,750.00",
"เงื่อนไขการชำระเงิน": "Credit 30 วัน",
"รายการสั่งซื้อ": [
{ "รหัสสินค้า": "8850250172079", "ชื่อสินค้า": "ยำยำเส้นแบนรสต้มยำ 60กX30", "หน่วย": "แพ็ค", "จำนวนสั่ง": "50", "ราคาต่อหน่วย": "285.00" },
{ "รหัสสินค้า": "8850250170730", "ชื่อสินค้า": "ยำยำผัดขี้เมาสูตรลับ 63กX30", "หน่วย": "แพ็ค", "จำนวนสั่ง": "30", "ราคาต่อหน่วย": "310.00" }
]
},
"fieldConfidences": [
{ "key": "เลขที่ PO", "confidence": 0.98 },
{ "key": "ยอดรวม", "confidence": 0.97 }
]
}],
"usage": { "pages_processed": 1, "credits_used": 0.5 }
}ใบเสร็จรับเงิน (Receipt)
ถ่ายรูปใบเสร็จแล้วดึงข้อมูลเข้าฟอร์มเบิกค่าใช้จ่ายอัตโนมัติ — อัปโหลดไฟล์โดยตรงด้วย /upload
curl -X POST 'https://backend.aksonocr.com/api/v3/upload' \ -H 'X-API-Key: <YOUR_API_KEY>' \ -F '[email protected]' \ -F 'model=AksonOCR-preview' \ -F 'action=extractor' \ -F 'customFields=[{"key":"ชื่อร้านค้า","description":"ชื่อร้านหรือสถานประกอบการ"},{"key":"วันที่","description":"วันที่ซื้อสินค้า"},{"key":"เวลา","description":"เวลาที่ซื้อสินค้า"},{"key":"ยอดรวม","description":"ยอดชำระทั้งหมด"},{"key":"ประเภทการชำระ","description":"วิธีชำระเงิน เช่น เงินสด บัตรเครดิต พร้อมเพย์"},{"key":"เลขที่ใบเสร็จ","description":"รหัสหรือหมายเลขใบเสร็จ"}]'
Response
{
"jobId": "d4e5f6a7-...",
"action": "extractor",
"pages": [{
"index": 0,
"confidence": 93,
"structuredData": {
"ชื่อร้านค้า": "เซเว่น อีเลฟเว่น สาขารัชดา 42",
"วันที่": "20/01/2568",
"เวลา": "14:32",
"ยอดรวม": "127.00",
"ประเภทการชำระ": "บัตรเดบิต",
"เลขที่ใบเสร็จ": "TXN-20250120-00341"
},
"fieldConfidences": [
{ "key": "ยอดรวม", "confidence": 0.99 },
{ "key": "วันที่", "confidence": 0.99 },
{ "key": "เลขที่ใบเสร็จ", "confidence": 0.96 }
]
}],
"usage": { "pages_processed": 1, "credits_used": 0.5 }
}สัญญาเช่า / หนังสือสัญญา (Contract)
ดึงข้อมูลสำคัญจากสัญญาเช่าหลายร้อยฉบับเข้าระบบ CRM — ใช้ AksonOCR-handwriting เมื่อมีลายมือเขียน (2 credits/page)
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "document_url",
"document_url": "https://example.com/lease-contract.pdf"
},
"model": "AksonOCR-handwriting",
"customFields": [
{ "key": "ชื่อผู้เช่า", "description": "ชื่อ-นามสกุลหรือชื่อบริษัทของผู้เช่า" },
{ "key": "เลขบัตรประชาชน", "description": "เลข 13 หลัก หรือเลขทะเบียนบริษัท" },
{ "key": "ที่อยู่ทรัพย์สิน", "description": "ที่อยู่ของอสังหาริมทรัพย์ที่เช่า" },
{ "key": "ค่าเช่าต่อเดือน", "description": "อัตราค่าเช่ารายเดือน (บาท)" },
{ "key": "เงินประกัน", "description": "จำนวนเงินมัดจำหรือประกัน (บาท)" },
{ "key": "วันที่เริ่มเช่า", "description": "วันเริ่มต้นสัญญาเช่า" },
{ "key": "วันที่สิ้นสุดเช่า", "description": "วันสิ้นสุดสัญญาเช่า" }
],
"additionalInstructions": "เอกสารอาจมีทั้งข้อความพิมพ์และลายมือเขียน โปรดดึงข้อมูลจากทั้งสองส่วน"
}'Response
{
"jobId": "e5f6a7b8-...",
"action": "extractor",
"model": "AksonOCR-handwriting",
"pages": [{
"index": 0,
"confidence": 91,
"structuredData": {
"ชื่อผู้เช่า": "นายสมชาย ใจดี",
"เลขบัตรประชาชน": "1-1001-00123-45-6",
"ที่อยู่ทรัพย์สิน": "ห้อง 302 อาคาร A คอนโดมิเนียมซันไรส์ ถ.รัชดาภิเษก",
"ค่าเช่าต่อเดือน": "12,000",
"เงินประกัน": "24,000",
"วันที่เริ่มเช่า": "01/02/2568",
"วันที่สิ้นสุดเช่า": "31/01/2569"
},
"fieldConfidences": [
{ "key": "ชื่อผู้เช่า", "confidence": 0.95 },
{ "key": "ค่าเช่าต่อเดือน", "confidence": 0.97 }
]
}],
"usage": { "pages_processed": 1, "credits_used": 2 }
}ใบส่งของ / เอกสารขนส่ง (Shipping / Delivery Document)
นำข้อมูลใบส่งของกระดาษเข้าระบบ tracking อัตโนมัติ
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "image_url",
"image_url": "https://example.com/shipping-doc.png"
},
"model": "AksonOCR-preview",
"customFields": [
{ "key": "เลขที่ใบส่งของ", "description": "AWB หรือหมายเลขใบส่งของ", "example": "TH-2025-123456" },
{ "key": "วันที่จัดส่ง", "description": "วันที่ต้องจัดส่ง" },
{ "key": "ชื่อผู้รับ", "description": "ชื่อ-นามสกุลผู้รับสินค้า" },
{ "key": "ที่อยู่จัดส่ง", "description": "ที่อยู่เต็มของผู้รับสินค้า" },
{ "key": "เบอร์โทรผู้รับ", "description": "เบอร์โทรศัพท์ผู้รับ" },
{ "key": "น้ำหนักรวม", "description": "น้ำหนักรวมของพัสดุ (กิโลกรัม)" },
{ "key": "ค่าขนส่ง", "description": "ค่าบริการขนส่ง" },
{ "key": "ประเภทการชำระ", "description": "ชำระล่วงหน้า หรือ COD" }
]
}'Response
{
"jobId": "f6a7b8c9-...",
"action": "extractor",
"pages": [{
"index": 0,
"confidence": 97,
"structuredData": {
"เลขที่ใบส่งของ": "TH-2568-887654",
"วันที่จัดส่ง": "22/01/2568",
"ชื่อผู้รับ": "นางสาวพิมพ์ใจ สวยงาม",
"ที่อยู่จัดส่ง": "99 ม.3 ต.บางกรวย อ.บางกรวย จ.นนทบุรี 11130",
"เบอร์โทรผู้รับ": "089-876-5432",
"น้ำหนักรวม": "2.5",
"ค่าขนส่ง": "45.00",
"ประเภทการชำระ": "COD"
},
"fieldConfidences": [
{ "key": "เลขที่ใบส่งของ", "confidence": 0.99 },
{ "key": "ที่อยู่จัดส่ง", "confidence": 0.95 }
]
}],
"usage": { "pages_processed": 1, "credits_used": 0.5 }
}ใช้ templateId (Extraction Template)
สร้าง Template บน Dashboard แล้วใช้ templateId แทนการส่ง customFields ทุกครั้ง
ขั้นตอนสร้าง Template
- เข้า Dashboard → Extraction Templates → Create New Template
- ใส่ชื่อ Template และกำหนด fields ที่ต้องการ
- ทดสอบกับตัวอย่างเอกสาร
- คัดลอก
templateIdมาใช้ใน API
curl -X POST 'https://backend.aksonocr.com/api/v3/ocr' \
-H 'X-API-Key: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"action": "extractor",
"document": {
"type": "document_url",
"document_url": "https://example.com/supplier-invoice.pdf"
},
"model": "AksonOCR-preview",
"templateId": "tmpl_abc123xyz789"
}'หมายเหตุ: templateId และ customFields ใช้ร่วมกันไม่ได้ ให้เลือกอย่างใดอย่างหนึ่ง
เมื่อไหร่ควรใช้อะไร
| สถานการณ์ | วิธีที่แนะนำ |
|---|---|
| ทดสอบ / prototype ครั้งแรก | customFields |
| เอกสารรูปแบบใหม่ที่ยังไม่แน่ใจ | customFields |
| เอกสารรูปแบบเดิมที่ใช้ซ้ำบ่อย | templateId |
| ทีมใช้ร่วมกัน / หลาย API Key | templateId |
| ต้องการแก้ fields บ่อย | customFields |
PDF หลายหน้า + Batch Mode (ประหยัด Credits)
ดึงข้อมูลจากเอกสารจำนวนมากในราคาประหยัด รับแจ้งผลผ่าน Webhook + pagination
curl -X POST 'https://backend.aksonocr.com/api/v3/upload' \ -H 'X-API-Key: <YOUR_API_KEY>' \ -F '[email protected]' \ -F 'model=AksonOCR-preview' \ -F 'action=extractor' \ -F 'mode=batch' \ -F 'webhookUrl=https://your-server.com/webhook/ocr' \ -F 'templateId=tmpl_abc123xyz789'
Webhook Payload เมื่อเสร็จ
{
"event": "ocr_job.completed",
"timestamp": "2025-01-21T08:00:00.000Z",
"data": {
"job_id": "g7h8i9j0-...",
"action": "extractor",
"status": "completed",
"mode": "batch",
"model": "AksonOCR-preview",
"total_pages": 200,
"processed_pages": 200,
"credit_cost": 80,
"result_url": "https://storage.googleapis.com/...",
"result_url_expires_at": "2025-01-21T09:00:00.000Z",
"error": null
}
}ดึงผลลัพธ์แบบ Pagination (200 หน้า)
import requests
job_id = "g7h8i9j0-..."
all_pages = []
offset = 0
limit = 50
while True:
response = requests.get(
f"https://backend.aksonocr.com/api/v3/ocr/result/{job_id}",
headers={"X-API-Key": "<YOUR_API_KEY>"},
params={"page": offset, "limit": limit}
)
data = response.json()
all_pages.extend(data["pages"])
if not data["hasMore"]:
break
offset += limit
print(f"ดึงข้อมูลครบ {len(all_pages)} หน้า")
for page in all_pages:
print(page["structuredData"])Batch ประหยัดอย่างไร: Batch mode ใช้เครดิตน้อยกว่า normal mode เหมาะกับงานที่ไม่เร่งด่วน ผลลัพธ์ภายใน 24 ชั่วโมง
สรุปการเลือก Model สำหรับ Extractor
| เอกสาร | Model แนะนำ | Credits/page |
|---|---|---|
| บัตรประชาชน / เอกสารทั่วไป | AksonOCR-1.0 | 1 |
| ใบแจ้งหนี้ / ใบเสร็จ (พิมพ์) | AksonOCR-preview | 0.5 |
| ใบส่งของ / PO (พิมพ์) | AksonOCR-preview | 0.5 |
| สัญญา / ฟอร์มกรอกมือ | AksonOCR-handwriting | 2 |
| เอกสารผสม (พิมพ์ + ลายมือ) | AksonOCR-handwriting | 2 |
การหมดอายุของงาน
- ผลลัพธ์จะเก็บไว้ให้ 72 ชั่วโมง หลังสร้างงาน
- งานที่หมดอายุจะถูกลบอัตโนมัติทุกชั่วโมง
- Signed URL ของผลลัพธ์จะหมดอายุหลัง 1 ชั่วโมง แต่จะต่ออายุใหม่ทุกครั้งที่เรียก status/result
ติดต่อเรา
หากมีคำถามหรือต้องการความช่วยเหลือ ติดต่อทีมงานผ่าน Dashboard หรือดูรายละเอียดเพิ่มเติมได้ที่ Interactive API Documentation