คู่มือการเชื่อมต่อ API สแกนเอกสารไทย
เชื่อมต่อระบบ OCR อัจฉริยะเข้ากับซอฟต์แวร์ของคุณ หรือให้ AI Agents (ChatGPT Custom Actions, Cursor, Claude) เรียกใช้งาน API ได้ในไม่กี่บรรทัด
ต้องการให้ AI / LLMs เข้ามาเรียนรู้ API ของเรา?
เรามีไฟล์มาตรฐาน /llms.txt และ /openapi.json พร้อมให้ ChatGPT Custom GPTs, Cursor หรือ LangChain อ่านได้ทันที
1. การยืนยันตัวตน (Authentication)
การเรียกใช้งาน API ทั้งหมดต้องแนบ **API Key** ใน HTTP Request Header ดังนี้:
คุณสามารถสร้างและจัดการ API Key ได้ฟรีจากหน้า Dashboard หลังเข้าสู่ระบบ
ส่งรูปภาพสลิปธนาคาร ใบเสร็จรับเงิน หรือใบกำกับภาษี เพื่อให้ระบบอ่านข้อมูลเป็น JSON Structured Data
Request Parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| file | File | Yes | ไฟล์ภาพ (.jpg, .png, .webp) ขนาดไม่เกิน 10MB |
| documentType | String | No | auto (ค่าเริ่มต้น), transfer_slip, receipt, tax_invoice |
ตัวอย่าง JSON Response (200 OK)
{
"success": true,
"requestId": "req_20260810_a1b2c3",
"documentType": "transfer_slip",
"confidence": 0.98,
"processingMs": 380,
"summary": {
"amount": 1500.00,
"currency": "THB",
"date": "2026-08-07",
"title": "บริษัท เอ บี ซี จำกัด"
},
"details": {
"reference": "2026080712345678",
"sender": {
"name": "นาย สมชาย ใจดี",
"bank": "KBANK"
},
"receiver": {
"name": "บริษัท เอ บี ซี จำกัด",
"bank": "SCB"
}
},
"meta": {
"documentType": "transfer_slip",
"platform": "api",
"source": "free_ocr",
"confidence": 0.98,
"processingMs": 380
}
}curl -X POST https://api.mothew.com/v1/ocr \ -H "X-API-Key: ocr_live_your_api_key_here" \ -F "file=@/path/to/slip.jpg" \ -F "documentType=auto"
เมื่อคุณระบุ Webhook URL ในหน้า Dashboard > Settings ทุกครั้งที่คุณส่งสลิป/เอกสารผ่าน LINE Bot หรือ Web สแกนสำเร็จ ระบบจะยิง HTTP POST (JSON Payload) ไปยังเซิร์ฟเวอร์ของคุณทันทีโดยอัตโนมัติ พร้อมเซ็นลายเซ็น HMAC-SHA256 ไว้ที่ header X-mothewOCR-Signature (ตรวจสอบด้วย webhook_secret ของคุณเสมอ ก่อนเชื่อข้อมูลใน payload) และแนบ requestId ที่ตรงกับ request_id จริงในระบบเรา ใช้เป็น correlation key ได้อย่างปลอดภัย แม้มีหลายรายการส่งเข้ามาใกล้กันก็ไม่มีทางสับสนกัน:
const crypto = require('crypto');
// ต้องอ่าน body แบบ raw ก่อน parse เพื่อตรวจลายเซ็นให้ตรงกับที่เราส่งมาเป๊ะๆ
app.post('/api/ocr-webhook', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-mothewocr-signature'];
const expected = crypto
.createHmac('sha256', process.env.MOTHEW_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
if (signature !== expected) {
return res.status(401).json({ error: 'invalid signature' });
}
const { event, requestId, summary, details } = JSON.parse(req.body);
if (event === 'ocr.completed') {
// ใช้ requestId เป็น correlation key เสมอ — ห้ามเดาว่า payload นี้เป็นของรายการไหน
savePendingReceipt({ requestId, amount: summary.amount, sender: details.sender });
}
res.status(200).json({ received: true });
});