การประมวลผลแบบ Batch
Batch Processing คืออะไร
Batch Processing ช่วยให้คุณอัปโหลดและประมวลผลไฟล์ได้สูงสุด 50 ไฟล์ในคำสั่งเดียว ไฟล์ทุกไฟล์ใน Batch จะใช้ Template และ Project เดียวกัน ทำให้ AI ดึงข้อมูลได้อย่างสม่ำเสมอในทุกเอกสาร คุณสามารถติดตามความคืบหน้าของกลุ่มทั้งหมดเป็นหน่วยเดียว จากนั้นส่งออกผลลัพธ์รวมในรูปแบบที่ต้องการ
ประโยชน์หลัก:
- อัปโหลดได้สูงสุด 50 ไฟล์ในคำสั่งเดียว แทนการอัปโหลดทีละไฟล์
- ไฟล์ทุกไฟล์ใช้ Template เดียวกัน เพื่อให้ได้ผลลัพธ์ที่สม่ำเสมอ
- ติดตามความคืบหน้าทั้งกลุ่มผ่าน Progress bar เดียว
- ส่งออกผลลัพธ์รวม (JSON, CSV, PDF, DOCX, XML, HTML, Text)
- กรอง Processing History ตาม Batch เพื่อค้นหาได้ง่าย
NOTE
Credits ถูกหักต่อไฟล์ ไม่ใช่ต่อ Batch หนึ่ง Batch ที่มี 50 ไฟล์จะใช้ 50 Credits ตรวจสอบยอด Credits ขององค์กรก่อนส่ง Batch ขนาดใหญ่
การอัปโหลด Batch
ผ่าน Web Interface
- ไปที่หน้า Upload
- เลือก Template และ Project
- ลากและวางไฟล์หลายไฟล์ลงในพื้นที่อัปโหลด (สูงสุด 50 ไฟล์)
- ใส่ ชื่อ Batch (ไม่บังคับ) เช่น "ใบแจ้งหนี้มีนาคม 2569"
- คลิก Upload Batch
- ติดตามความคืบหน้าที่ Processing History
TIP
ตั้งชื่อ Batch ให้สื่อความหมาย เช่น "Invoice Batch March 2026" หรือ "ใบเสร็จ Q1 2569" เพื่อให้ค้นหาและกรองใน Processing History ได้ง่าย
ผ่าน API
ส่งคำขอ multipart/form-data แบบ POST พร้อมไฟล์และข้อมูลทั้งหมดในคำขอเดียว:
curl -X POST https://api.ocriva.com/batch/YOUR_ORG_ID/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "files=@invoice1.pdf" \
-F "files=@invoice2.pdf" \
-F "files=@invoice3.pdf" \
-F "projectId=YOUR_PROJECT_ID" \
-F "templateId=YOUR_TEMPLATE_ID" \
-F "name=March 2026 Invoices"Response:
{
"id": "batch_abc123",
"name": "March 2026 Invoices",
"totalFiles": 3,
"completedFiles": 0,
"failedFiles": 0,
"status": "processing",
"progress": 0,
"createdAt": "2026-03-31T09:00:00.000Z"
}WARNING
อัปโหลดได้สูงสุด 50 ไฟล์ต่อ Batch คำขอที่มีไฟล์มากกว่า 50 ไฟล์จะถูกปฏิเสธด้วย 400 Bad Request หากมีเอกสารจำนวนมาก ให้แบ่งเป็น Batch ย่อย
วงจรสถานะของ Batch
Batch จะเปลี่ยนสถานะตามลำดับต่อไปนี้ตั้งแต่สร้างจนเสร็จสมบูรณ์:
| สถานะ | คำอธิบาย |
|---|---|
uploading | ระบบกำลังรับและจัดเก็บไฟล์ ยังไม่ได้เข้าคิวประมวลผล AI |
processing | อัปโหลดไฟล์เสร็จแล้ว AI กำลังดึงข้อมูลจากเอกสารแต่ละไฟล์ |
completed | ประมวลผลไฟล์ทั้งหมดสำเร็จ ผลลัพธ์พร้อมสำหรับการส่งออก |
partially_failed | บางไฟล์สำเร็จและบางไฟล์ล้มเหลว ผลลัพธ์ของไฟล์ที่สำเร็จพร้อมใช้งาน ไฟล์ที่ล้มเหลวสามารถลองใหม่ทีละไฟล์ |
failed | ไฟล์ทั้งหมดใน Batch ล้มเหลว ไม่มีผลลัพธ์ |
IMPORTANT
ไฟล์ที่ล้มเหลวไม่หยุดการประมวลผลของไฟล์ที่เหลือ ระบบจะประมวลผลไฟล์ที่เหลือต่อไป และ Batch จะมีสถานะ partially_failed แทนที่จะเป็น failed ตราบที่มีไฟล์อย่างน้อยหนึ่งไฟล์สำเร็จ
การติดตามความคืบหน้า
แบบ Real-Time ผ่าน WebSocket
เชื่อมต่อกับ WebSocket service และรับฟังเหตุการณ์ batch_progress_updated Payload มีข้อมูลความคืบหน้าแบบ Live:
{
"batchId": "batch_abc123",
"totalFiles": 10,
"completedFiles": 7,
"failedFiles": 1,
"progress": 80,
"status": "processing"
}เปอร์เซ็นต์ความคืบหน้าคำนวณดังนี้:
progress = (completedFiles + failedFiles) / totalFiles * 100การ Polling ผ่าน API
หากไม่ได้ใช้ WebSocket สามารถ Poll endpoint รายละเอียด Batch ได้:
curl https://api.ocriva.com/batch/YOUR_ORG_ID/BATCH_ID \
-H "Authorization: Bearer YOUR_TOKEN"การแจ้งเตือนผ่าน Webhook
ตั้งค่า Webhook เพื่อรับการแจ้งเตือนแบบ Push สำหรับเหตุการณ์ Batch:
| เหตุการณ์ | เงื่อนไขที่เกิด |
|---|---|
batch.uploaded | รับไฟล์ทั้งหมดและเข้าคิวเรียบร้อยแล้ว |
batch.completed | Batch มีสถานะ completed, partially_failed หรือ failed |
ดูคำแนะนำการตั้งค่าที่ คู่มือ Webhooks
การส่งออกผลลัพธ์ Batch
ส่งออกผลลัพธ์รวมของไฟล์ที่ประมวลผลสำเร็จทั้งหมดใน Batch ในการดาวน์โหลดเดียว
รูปแบบที่รองรับ: JSON, CSV, PDF, DOCX, XML, HTML, Text
ผ่าน Web Interface
- เปิด Processing History
- กรองตาม Batch ที่ต้องการ
- คลิก dropdown Export ในแถว Batch
- เลือกรูปแบบที่ต้องการ
ผ่าน API
curl -O "https://api.ocriva.com/batch/YOUR_ORG_ID/BATCH_ID/export?format=csv" \
-H "Authorization: Bearer YOUR_TOKEN"เปลี่ยน csv เป็น json, pdf, docx, xml, html หรือ text ตามต้องการ
API Reference ของ Batch
| Method | Endpoint | คำอธิบาย |
|---|---|---|
POST | /batch/:orgId/upload | อัปโหลด Batch ใหม่ (multipart form) |
GET | /batch/:orgId | แสดงรายการ Batch ทั้งหมดพร้อม Pagination และตัวกรองสถานะ |
GET | /batch/:orgId/:batchId | ดูรายละเอียด Batch รวมถึงความคืบหน้า |
GET | /batch/:orgId/:batchId/export | ส่งออกผลลัพธ์รวม (?format=json|csv|pdf|docx|xml|html|text) |
DELETE | /batch/:orgId/:batchId | ลบ Batch แบบ Soft Delete |
การยืนยันตัวตน: ทุก endpoint ต้องใช้ Bearer token (Authorization: Bearer YOUR_TOKEN)
Path parameters:
:orgId— ID ขององค์กร:batchId— ID ของ Batch ที่ได้รับจาก endpoint อัปโหลด
แนวทางปฏิบัติที่ดี
- ตั้งชื่อ Batch ให้สื่อความหมาย ใช้ชื่อเช่น "Invoice Batch March 2026" หรือ "ใบเสร็จ Q1 2569" เพื่อให้ค้นหาใน Processing History ได้ง่าย
- ใช้ Template เดียวกันสำหรับไฟล์ทุกไฟล์ใน Batch การผสมประเภทเอกสารใน Batch เดียวกันจะทำให้ผลการดึงข้อมูลไม่สม่ำเสมอ
- ตรวจสอบยอด Credits ก่อนส่ง Batch ขนาดใหญ่ Credits ถูกหักต่อไฟล์ หนึ่ง Batch ที่มี 50 ไฟล์ใช้ 50 Credits ทันทีเมื่ออัปโหลด
- ตรวจสอบไฟล์ที่ล้มเหลวและลองใหม่ทีละไฟล์ หาก Batch มีสถานะ
partially_failedให้ดูไฟล์ที่ล้มเหลวใน Processing History และประมวลผลใหม่ทีละไฟล์ - ใช้ Webhook สำหรับการทำงานอัตโนมัติ สมัครรับ
batch.completedเพื่อเริ่มต้น Workflow ปลายทาง เช่น อัปเดตฐานข้อมูล ส่งการแจ้งเตือน หรือประมวลผลต่อ โดยไม่ต้อง Polling - ชื่อ Batch จะถูกสร้างอัตโนมัติหากไม่ระบุ หากไม่ส่งฟิลด์
nameระบบจะสร้างชื่อ "Batch YYYY-MM-DD HH:mm" โดยใช้เวลาอัปโหลด ควรระบุชื่อเสมอสำหรับ Workflow ในระบบ Production
