API v2 — Sync

เอกสาร 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

ขั้นตอนการใช้งาน

1

ส่ง Request

ส่งเอกสาร (URL หรือ base64) พร้อม model ที่เลือก

2

รับผลทันที

ได้รับผล markdown + confidence score ทันทีในคำตอบเดียว

เริ่มต้นใช้งาน

  1. 1สมัครสมาชิกที่ dashboard.aksonocr.com
  2. 2สร้าง API Key ในหน้า Dashboard
  3. 3ถ้าต้องการใช้ Extractor (action: extractor) ให้สร้างและทดสอบ Extraction Template ก่อน
  4. 4ทดลองเรียกใช้ API กับเอกสารตัวอย่าง
  5. 5ติดตามผลลัพธ์และการใช้งานได้ที่ Dashboard

การยืนยันตัวตน

API ใช้การยืนยันตัวตนด้วย API Key ทุก request ต้องแนบ X-API-Key ไว้ใน header ทุกครั้ง

  • สร้าง Key ได้ผ่านหน้า Dashboard
  • สามารถยกเลิกหรือสร้างใหม่ได้ตลอดเวลา
http
X-API-Key: your-api-key

โมเดลที่ใช้ได้

Modelรายละเอียดเครดิต/หน้า
AksonOCR-previewเร็วและคุ้มค่า เหมาะกับเอกสารตัวอักษรพิมพ์0.5
AksonOCR-handwritingแม่นยำสูง เหมาะกับลายมือหรือเอกสารที่ซับซ้อน2
AksonOCR-1.0โมเดลอเนกประสงค์1

Rate Limits

Rate Limits จะคำนวณตาม API Key และแตกต่างกันตามโมเดล:

ModelRPM (มี Key)ต่อวัน (มี Key)RPM (Demo)ต่อวัน (Demo)
AksonOCR-preview1,000100,0005100
AksonOCR-handwriting1,000100,0005100
AksonOCR-1.01,000100,0005100

ข้อจำกัดของไฟล์

รายการค่าEnvironment Variable
ขนาดไฟล์สูงสุด200 MBMAX_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

เครดิต

ค่าเครดิตขึ้นอยู่กับโมเดลและจำนวนหน้าที่ประมวลผล:

ModelNormal (เครดิต/หน้า)Batch (เครดิต/หน้า)
AksonOCR-preview0.5ถูกกว่า (ส่วนลด)
AksonOCR-handwriting2ถูกกว่า (ส่วนลด)
AksonOCR-1.01ถูกกว่า (ส่วนลด)

ตัวอย่าง: AksonOCR-preview กับ PDF 5 หน้า = 2.5 เครดิต AksonOCR-handwriting กับ PDF 5 หน้า = 10 เครดิตรูปภาพเดี่ยว = คิดตามราคาต่อหน้าของโมเดลนั้นๆ

เครดิตจะถูกประเมินตอนสร้างงานและตรวจสอบอีกครั้งเมื่อเสร็จ ถ้าเครดิตไม่พอจะได้รับ error 402

v2 (Sync): ไม่มีโหมด Batch — ทุก request ประมวลผลทันทีในราคาเดียวกัน

1. OCR ผ่าน URL

ส่ง request พร้อม URL หรือ base64 ของเอกสาร — ได้รับผลลัพธ์ทันทีในคำตอบเดียว

POSThttps://backend.aksonocr.com/api/v2/ocr

Headers

KeyValueRequired
X-API-Keyyour-api-keyYes
Content-Typeapplication/jsonYes

Request Body

NameTypeRequiredDescription
modelstringYesโมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0
documentobjectYesเอกสารที่ต้องการ OCR (ดูประเภทด้านล่าง)
tokenConfidencebooleanNoแนบค่าความเชื่อมั่นระดับ token ในผลลัพธ์ ค่าเริ่มต้น: false
pagesnumber[]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)

bash
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

bash
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

json
{
"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รายละเอียด
200Success — ผลลัพธ์ OCR ในคำตอบเดียว
400Bad Request — MODEL_NOT_FOUND / INVALID_INPUT
401Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ
402Payment Required — เครดิตไม่พอ
429Too Many Requests — เกิน Rate Limit
500Internal Server Error — PROCESSING_ERROR

2. OCR ผ่านอัปโหลดไฟล์

อัปโหลดไฟล์โดยตรง (รูปภาพหรือ PDF) — ได้รับผลลัพธ์ทันทีในคำตอบเดียว สูงสุด 10MB / 50 หน้า

POSThttps://backend.aksonocr.com/api/v2/upload

Headers

KeyValueRequired
X-API-Keyyour-api-keyYes
Content-Typemultipart/form-dataYes

Form Fields

NameTypeRequiredDescription
filefileYesไฟล์รูปภาพ (JPG, PNG, WEBP) หรือ PDF — สูงสุด 10MB / 50 หน้า
modelstringYesโมเดล OCR: AksonOCR-preview, AksonOCR-handwriting, AksonOCR-1.0
tokenConfidencestringNoแนบค่าความเชื่อมั่นระดับ 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

bash
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

json
{
"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รายละเอียด
200Success — ผลลัพธ์ OCR
400Bad Request — ไฟล์ไม่ถูกต้อง โมเดลไม่ถูก
401Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ระบุ
402Payment Required — เครดิตไม่พอ
429Too Many Requests — เกิน Rate Limit
500Internal Server Error — PROCESSING_ERROR

3. Key Extraction (File Upload)

สำหรับการดึงข้อมูลเฉพาะจุด (Custom Fields) และรายการแบบตาราง (List Items) จากไฟล์เอกสารหรือรูปภาพ ขนาดสูงสุด 7MB

POSThttps://backend.aksonocr.com/key-extract

Headers

KeyValueRequired
X-API-Keyyour-api-keyYes
Content-Typemultipart/form-dataYes

Form Fields

NameTypeRequiredDescription
filefileYesไฟล์รูปภาพ (JPG, PNG) หรือ PDF (สูงสุด 7MB)
customFieldsstringOptionalJSON String ของ Array กำหนดข้อมูลทั่วไปที่ต้องการดึง
listConfigstringOptionalJSON String ของ Object สำหรับดึงข้อมูลตาราง/รายการ
templateIdstringOptionalไอดี Template ที่สร้างไว้ (ถ้าส่งมา ไม่ต้องส่ง customFields/listConfig)
additionalInstructionsstringOptionalคำสั่งเพิ่มเติมสำหรับ AI เช่น "ดึงยอดรวมเป็นตัวเลขเท่านั้น"
modelstringOptionalค่าเริ่มต้น: AksonOCR-preview, ใช้ AksonOCR-handwriting สำหรับลายมือ

Request (Node.js - Axios)

javascript
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)

json
{
"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)

json
{
"success": false,
"error": {
"code": "INVALID_INPUT",
"message": "Must provide either templateId or customFields/listConfig"
}
}

4. Key Extraction (Base64/URL)

สำหรับการดึงข้อมูลจากรูปภาพ Base64 หรือ URL สาธารณะ

POSThttps://backend.aksonocr.com/key-extract-url

Headers

KeyValueRequired
X-API-Keyyour-api-keyYes
Content-Typeapplication/jsonYes

Request Body

NameTypeRequiredDescription
base64ImagestringOptional*สตริงรูปภาพแบบ Base64
imageUrlstringOptional*ลิงก์สาธารณะของรูปภาพเอกสาร
customFieldsarrayOptionalArray ของ Object ข้อมูลทั่วไป (ไม่ต้องเป็น JSON String)
listConfigobjectOptionalObject สำหรับดึงข้อมูลตาราง (ไม่ต้องเป็น JSON String)
templateIdstringOptionalไอดี Template ที่สร้างไว้
additionalInstructionsstringOptionalคำสั่งเพิ่มเติมสำหรับ AI
modelstringOptionalโมเดล OCR (เช่น AksonOCR-preview)

* ต้องระบุ base64Image หรือ imageUrl อย่างใดอย่างหนึ่ง

Request (cURL)

bash
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)

json
{
"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

json
{
"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 CodeHTTP Statusรายละเอียด
MODEL_NOT_FOUND400พารามิเตอร์ model ไม่ถูกต้อง
INVALID_INPUT400ไม่มีไฟล์หรือ input ไม่ถูกต้อง
PDF_CONVERSION_ERROR400ประมวลผล PDF ไม่สำเร็จ
INSUFFICIENT_CREDITS402เครดิตไม่เพียงพอ
RATE_LIMIT_EXCEEDED429คำขอมากเกินไป ลองใหม่ภายหลัง
PROCESSING_ERROR500Internal server error

ตัวอย่าง Error Response

json
{
"error": "MODEL_NOT_FOUND",
"message": "The specified model does not exist"
}

ติดต่อเรา

หากมีคำถามหรือต้องการความช่วยเหลือ ติดต่อทีมงานผ่าน Dashboard หรือดูรายละเอียดเพิ่มเติมได้ที่ Interactive API Documentation