เอกสาร AksonOCR API
API สำหรับ OCR แบบ Synchronous — ส่ง request แล้วรับผลลัพธ์ทันทีในคำตอบเดียว รองรับไฟล์ PDF (สูงสุด 50 หน้า), JPG, PNG, WEBP ผ่านทั้ง URL และ base64 พร้อม confidence scoring
ผลลัพธ์ทันที
ส่ง request → รับผลลัพธ์ทันทีในคำตอบเดียว ไม่ต้อง poll
อ่านลายมือ
รองรับลายมือและตัวอักษรพิมพ์ทั้งไทยและอังกฤษ
รองรับหลายรูปแบบ
PDF (max 50 หน้า), JPG, PNG, WEBP — URL หรือ base64
Confidence Scoring
คะแนนความมั่นใจรายหน้า + token-level (optional)
เลือกหน้าได้
ระบุหน้าที่ต้องการจาก PDF (0-indexed)
API Key Auth
ปลอดภัยด้วย X-API-Key header
ขั้นตอนการใช้งาน
ส่ง Request
ส่งเอกสาร (URL หรือ base64) พร้อม model ที่เลือก
รับผลทันที
ได้รับผล markdown + confidence score ทันทีในคำตอบเดียว
เริ่มต้นใช้งาน
- 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
แนวทางที่แนะนำ
- ใช้ exponential backoff เมื่อได้รับ 429 กลับมา
- Cache response เพื่อไม่ต้องเรียกซ้ำ
v2 Limits: สูงสุด 50 หน้า ต่อ request (PDF) และขนาดไฟล์สูงสุด 10 MB ต่อ request
เครดิต
ค่าเครดิตขึ้นอยู่กับโมเดลและจำนวนหน้าที่ประมวลผล:
| 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
v2 (Sync): ไม่มีโหมด Batch — ทุก request ประมวลผลทันทีในราคาเดียวกัน
1. OCR ผ่าน URL
ส่ง request พร้อม URL หรือ base64 ของเอกสาร — ได้รับผลลัพธ์ทันทีในคำตอบเดียว
https://backend.aksonocr.com/api/v2/ocrHeaders
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Content-Type | application/json | Yes |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
model | string | Yes | โมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0 |
document | object | Yes | เอกสารที่ต้องการ OCR (ดูประเภทด้านล่าง) |
tokenConfidence | boolean | No | แนบค่าความเชื่อมั่นระดับ token ในผลลัพธ์ ค่าเริ่มต้น: false |
pages | number[] | No | ระบุหน้าที่ต้องการ (0-indexed, PDF เท่านั้น) สูงสุด 50 หน้า |
ประเภทเอกสารที่รับ
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 Image
{ "type": "document_url", "document_url": "data:image/png;base64,iVBORw0..." }Base64 PDF
{ "type": "document_url", "document_url": "data:application/pdf;base64,JVBERi0xLjQK..." }Image URL (with Token Confidence)
curl -X POST 'https://backend.aksonocr.com/api/v2/ocr' \-H 'X-API-Key: <YOUR_API_KEY>' \-H 'Content-Type: application/json' \-d '{"model": "AksonOCR-preview","tokenConfidence": true,"document": {"type": "image_url","image_url": "https://example.com/receipt.png"}}'
PDF URL (with page selection)
curl -X POST 'https://backend.aksonocr.com/api/v2/ocr' \-H 'X-API-Key: <YOUR_API_KEY>' \-H 'Content-Type: application/json' \-d '{"model": "AksonOCR-preview","document": {"type": "document_url","document_url": "https://arxiv.org/pdf/2201.04234.pdf","document_name": "research_paper.pdf"},"pages": [0, 2, 5]}'
Base64 Image
curl -X POST 'https://backend.aksonocr.com/api/v2/ocr' \-H 'X-API-Key: <YOUR_API_KEY>' \-H 'Content-Type: application/json' \-d '{"model": "AksonOCR-preview","document": {"type": "document_url","document_url": "data:image/png;base64,iVBORw0KGgoAAAANS..."}}'
Response
{"model": "AksonOCR-preview","pages": [{"index": 0,"markdown": "# Invoice\n\n**Invoice Number:** INV-2025-001\n**Date:** 2025-10-29\n...","confidence": 92,"tokens": [{ "token": "Invoice", "confidence": 99.9 },{ "token": "Number", "confidence": 98.5 }]}],"confidence": 92,"usage": {"pages_processed": 1}}
Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ผลลัพธ์ OCR ในคำตอบเดียว |
| 400 | Bad Request — MODEL_NOT_FOUND / INVALID_INPUT |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 402 | Payment Required — เครดิตไม่พอ |
| 429 | Too Many Requests — เกิน Rate Limit |
| 500 | Internal Server Error — PROCESSING_ERROR |
2. OCR ผ่านอัปโหลดไฟล์
อัปโหลดไฟล์โดยตรง (รูปภาพหรือ PDF) — ได้รับผลลัพธ์ทันทีในคำตอบเดียว สูงสุด 10MB / 50 หน้า
https://backend.aksonocr.com/api/v2/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 — สูงสุด 10MB / 50 หน้า |
model | string | Yes | โมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0 |
tokenConfidence | string | No | แนบค่าความเชื่อมั่นระดับ token ("true"/"false") ค่าเริ่มต้น: false |
Request
curl -X POST 'https://backend.aksonocr.com/api/v2/upload' \-H 'X-API-Key: <YOUR_API_KEY>' \-F 'file=@/path/to/image.png' \-F 'model=AksonOCR-preview' \-F 'tokenConfidence=true'
PDF Upload
curl -X POST 'https://backend.aksonocr.com/api/v2/upload' \-H 'X-API-Key: <YOUR_API_KEY>' \-F 'file=@/path/to/document.pdf' \-F 'model=AksonOCR-preview'
Response
{"model": "AksonOCR-preview","pages": [{"index": 0,"markdown": "# Invoice\n\n**Invoice Number:** INV-2025-001\n...","confidence": 92}],"confidence": 92,"usage": {"pages_processed": 1}}
Response Codes
| Code | รายละเอียด |
|---|---|
| 200 | Success — ผลลัพธ์ OCR |
| 400 | Bad Request — ไฟล์ไม่ถูกต้อง โมเดลไม่ถูก |
| 401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ |
| 402 | Payment Required — เครดิตไม่พอ |
| 429 | Too Many Requests — เกิน Rate Limit |
| 500 | Internal Server Error — PROCESSING_ERROR |
3. Key Extraction (File Upload)
สำหรับการดึงข้อมูลเฉพาะจุด (Custom Fields) และรายการแบบตาราง (List Items) จากไฟล์เอกสารหรือรูปภาพ ขนาดสูงสุด 7MB
https://backend.aksonocr.com/key-extractHeaders
| 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) หรือ PDF (สูงสุด 7MB) |
customFields | string | Optional | JSON String ของ Array กำหนดข้อมูลทั่วไปที่ต้องการดึง |
listConfig | string | Optional | JSON String ของ Object สำหรับดึงข้อมูลตาราง/รายการ |
templateId | string | Optional | ไอดี Template ที่สร้างไว้ (ถ้าส่งมา ไม่ต้องส่ง customFields/listConfig) |
additionalInstructions | string | Optional | คำสั่งเพิ่มเติมสำหรับ AI เช่น "ดึงยอดรวมเป็นตัวเลขเท่านั้น" |
model | string | Optional | ค่าเริ่มต้น: AksonOCR-preview, ใช้ AksonOCR-handwriting สำหรับลายมือ |
Request (Node.js - Axios)
const axios = require('axios');const FormData = require('form-data');const fs = require('fs');const form = new FormData();form.append('file', fs.createReadStream('./invoice.jpg'));// กำหนดข้อมูลธรรมดาที่ต้องการดึงform.append('customFields', JSON.stringify([{ "key": "เลขที่ใบกำกับ", "description": "เลขที่ใบกับกับภาษี หรือ ใบแจ้งหนี้", "example": "INV-001" },{ "key": "วันที่", "description": "วันที่ในเอกสาร", "example": "15/01/2567" },{ "key": "ชื่อผู้ซื้อ", "description": "ชื่อบริษัทหรือบุคคลที่เป็นลูกค้า" },{ "key": "ยอดรวมทั้งสิ้น", "description": "ยอดรวมสุทธิ" }]));// กำหนดการดึงข้อมูลแบบรายการ (ตารางสินค้า)form.append('listConfig', JSON.stringify({"listKey": "รายการสินค้า","listDescription": "รายการสินค้าหรือบริการทั้งหมดในเอกสาร","fields": [{ "key": "ชื่อสินค้า", "description": "ชื่อหรือรายละเอียดสินค้า" },{ "key": "จำนวน", "description": "จำนวนที่ซื้อ" },{ "key": "ราคาต่อหน่วย", "description": "ราคาของสินค้าต่อชิ้น" },{ "key": "ราคารวม", "description": "ราคารวมของสินค้ารายการนั้นๆ" }]}));axios.post('https://backend.aksonocr.com/key-extract', form, {headers: {...form.getHeaders(),'X-API-Key': '<YOUR_API_KEY>'}}).then(response => console.log(response.data)).catch(error => console.error(error.response.data));
Response 200 (Success)
{"success": true,"data": {"เลขที่ใบกำกับ": "INV-20240101","วันที่": "15/01/2567","ชื่อผู้ซื้อ": "บริษัท เอ บี ซี จำกัด","ยอดรวมทั้งสิ้น": "1500.00","รายการสินค้า": [{"ชื่อสินค้า": "กระดาษ A4","จำนวน": "10","ราคาต่อหน่วย": "100.00","ราคารวม": "1000.00"},{"ชื่อสินค้า": "ปากกาน้ำเงิน","จำนวน": "50","ราคาต่อหน่วย": "10.00","ราคารวม": "500.00"}]},"confidence": 88,"fieldConfidences": [{ "key": "เลขที่ใบกำกับ", "confidence": 95 },{ "key": "วันที่", "confidence": 90 },{ "key": "ยอดรวมทั้งสิ้น", "confidence": 85 },{ "key": "รายการสินค้า", "confidence": 82 }],"processingTimeMs": 3500,"creditCost": 0.2}
Response (Error)
{"success": false,"error": {"code": "INVALID_INPUT","message": "Must provide either templateId or customFields/listConfig"}}
4. Key Extraction (Base64/URL)
สำหรับการดึงข้อมูลจากรูปภาพ Base64 หรือ URL สาธารณะ
https://backend.aksonocr.com/key-extract-urlHeaders
| Key | Value | Required |
|---|---|---|
X-API-Key | your-api-key | Yes |
Content-Type | application/json | Yes |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
base64Image | string | Optional* | สตริงรูปภาพแบบ Base64 |
imageUrl | string | Optional* | ลิงก์สาธารณะของรูปภาพเอกสาร |
customFields | array | Optional | Array ของ Object ข้อมูลทั่วไป (ไม่ต้องเป็น JSON String) |
listConfig | object | Optional | Object สำหรับดึงข้อมูลตาราง (ไม่ต้องเป็น JSON String) |
templateId | string | Optional | ไอดี Template ที่สร้างไว้ |
additionalInstructions | string | Optional | คำสั่งเพิ่มเติมสำหรับ AI |
model | string | Optional | โมเดล OCR (เช่น AksonOCR-preview) |
* ต้องระบุ base64Image หรือ imageUrl อย่างใดอย่างหนึ่ง
Request (cURL)
curl -X POST https://backend.aksonocr.com/key-extract-url \-H "X-API-Key: <YOUR_API_KEY>" \-H "Content-Type: application/json" \-d '{"imageUrl": "https://example.com/invoice.jpg","customFields": [{"key": "ชื่อลูกค้า","description": "ชื่อบริษัทหรือบุคคลผู้ซื้อ"},{"key": "ยอดรวมสุทธิ","description": "จำนวนเงินสุทธิหลังหักส่วนลดและรวมภาษี","example": "1000.00"}]}'
Response 200 (Success)
{"success": true,"data": {"ชื่อลูกค้า": "บริษัท เอ บี ซี จำกัด","ยอดรวมสุทธิ": "1000.00"},"confidence": 92,"fieldConfidences": [{ "key": "ชื่อลูกค้า", "confidence": 92 },{ "key": "ยอดรวมสุทธิ", "confidence": 90 }],"processingTimeMs": 2800,"creditCost": 0.2}
Confidence Scoring
ทุก response จะมีคะแนนความมั่นใจเพื่อช่วยประเมินความถูกต้องของข้อความที่ดึงออกมา
Response Fields
| Field | รายละเอียด |
|---|---|
pages[].confidence | คะแนนรายหน้า (0–100) |
confidence | คะแนนรวม (ค่าเฉลี่ยทุกหน้า) |
pages[].tokens | (Optional) Array ของ { token, confidence } — ใส่ tokenConfidence: true ใน request เพื่อรับข้อมูลนี้ |
Token Confidence: เพิ่ม tokenConfidence: true ใน request body หรือ form field เพื่อรับคะแนนระดับ token
Multi-Page Response with Confidence
{"model": "AksonOCR-preview","pages": [{"index": 0,"markdown": "# Page 1 Content\n\nExtracted text from page 1...","confidence": 95},{"index": 1,"markdown": "# Page 2 Content\n\nExtracted text from page 2...","confidence": 78}],"confidence": 86,"usage": {"pages_processed": 2}}
Error Codes
เมื่อเกิดข้อผิดพลาด API จะตอบกลับด้วย HTTP status code และ JSON body ที่มีฟิลด์ error
| Error Code | HTTP Status | รายละเอียด |
|---|---|---|
MODEL_NOT_FOUND | 400 | พารามิเตอร์ model ไม่ถูกต้อง |
INVALID_INPUT | 400 | ไม่มีไฟล์หรือ input ไม่ถูกต้อง |
PDF_CONVERSION_ERROR | 400 | ประมวลผล PDF ไม่สำเร็จ |
INSUFFICIENT_CREDITS | 402 | เครดิตไม่เพียงพอ |
RATE_LIMIT_EXCEEDED | 429 | คำขอมากเกินไป ลองใหม่ภายหลัง |
PROCESSING_ERROR | 500 | Internal server error |
ตัวอย่าง Error Response
{"error": "MODEL_NOT_FOUND","message": "The specified model does not exist"}
ติดต่อเรา
หากมีคำถามหรือต้องการความช่วยเหลือ ติดต่อทีมงานผ่าน Dashboard หรือดูรายละเอียดเพิ่มเติมได้ที่ Interactive API Documentation