Automate งานเอกสารด้วย Vision AI: อ่าน PDF และใบเสร็จเข้า Workflow อัตโนมัติ
บทความนี้จะพาคุณสร้าง pipeline สำหรับอ่านเอกสารที่มีทั้งข้อความและภาพด้วย Vision AI แยกข้อมูลสำคัญ ตรวจสอบความถูกต้อง และส่งต่อเข้า Google Sheets, Slack หรือระบบหลังบ้านแบบอัตโนมัติ ทำตามได้เป็นขั้นตอนพร้อมตัวอย่างโครงสร้างข้อมูลและโค้ด

VisionAI, DocumentAutomation, PDF, Workflow, Multimodal
งานเอกสารอย่าง PDF ใบเสร็จ ใบกำกับภาษี หรือฟอร์มสแกน มักเป็นคอขวดของหลายทีม เพราะข้อมูลอยู่ในรูปแบบที่อ่านด้วยโปรแกรมได้ไม่สมบูรณ์ โดยเฉพาะเมื่อเอกสารมีทั้งข้อความ ตาราง ลายเซ็น หรือภาพประกอบ บทความนี้จะสอนสร้าง pipeline แบบ step-by-step สำหรับรับไฟล์เอกสาร แปลงเป็นข้อมูลที่ใช้งานต่อได้ด้วย multimodal model ตรวจสอบความถูกต้อง และส่งผลลัพธ์เข้า Google Sheets, Slack หรือระบบหลังบ้านอัตโนมัติ ก่อนเริ่มควรมีพื้นฐานเรื่อง API, JSON และการเขียนสคริปต์เบื้องต้นด้วย Python หรือ JavaScript
Step 1: ออกแบบ pipeline และกำหนดฟิลด์ที่ต้องดึงก่อน
ก่อนแตะเรื่องโมเดล ควรเริ่มจากการนิยามว่าเอกสารแต่ละประเภทต้องดึงอะไรบ้าง เพราะถ้าไม่กำหนด schema ให้ชัด ระบบจะดึงข้อมูลได้ไม่สม่ำเสมอ และตรวจสอบภายหลังได้ยาก
vendor_name, document_date, invoice_no, total_amount, tax_amountYYYY-MM-DD, ยอดรวมต้องมากกว่าศูนย์, เลขเอกสารห้ามว่างตัวอย่าง schema ที่ควรมีตั้งแต่ต้น
{
"document_type": "receipt",
"vendor_name": "ABC Store",
"document_date": "2026-05-28",
"invoice_no": "INV-2026-001",
"subtotal": 1000.00,
"tax_amount": 70.00,
"total_amount": 1070.00,
"currency": "THB",
"confidence": 0.94
}
เหตุผลที่ต้องเริ่มจากขั้นนี้ คือโมเดลจะทำงานได้ดีขึ้นเมื่อรู้ว่าต้องตอบในโครงสร้างแบบใด และทีมพัฒนาจะเชื่อมต่อ workflow ถัดไปได้ง่ายกว่า
Step 2: รับไฟล์เอกสารและเตรียมข้อมูลให้พร้อมสำหรับ Vision AI
เอกสารจริงมักมาได้หลายแบบ เช่น PDF ที่เป็น text-based, PDF สแกนจากเครื่องถ่ายเอกสาร, หรือภาพจากมือถือ ดังนั้นขั้นเตรียมข้อมูลสำคัญมาก เพราะมีผลต่อความแม่นยำของการอ่าน
แนวทางที่ควรทำมีดังนี้
ตัวอย่าง flow แบบง่าย
Upload/Email/Drive -> Preprocess PDF/Image -> Vision AI Extract -> Validate -> Route to Sheets/Slack/Backend
ถ้าเอกสารบางชุดมีข้อความชัดเจนอยู่แล้ว OCR อย่างเดียวอาจพอ แต่ถ้าเอกสารมีตราประทับ ตาราง หรือข้อความกระจัดกระจาย การใช้ multimodal model จะช่วยตีความบริบทของทั้งข้อความและภาพได้ดีกว่า
Step 3: ใช้ multimodal model แยกฟิลด์สำคัญให้อยู่ในรูปแบบ JSON
หัวใจของงานนี้คือการสั่งโมเดลให้อ่านเอกสารและตอบกลับเป็นโครงสร้างข้อมูลที่ชัดเจน ไม่ควรขอให้โมเดลตอบแบบอิสระ เพราะจะควบคุมผลลัพธ์ยากและเสี่ยงต่อการนำไปใช้ต่อไม่ได้
หลักการเขียน prompt ที่ดี
nullconfidence หรือเหตุผลสั้นๆ สำหรับฟิลด์ที่ไม่แน่ใจตัวอย่าง prompt
อ่านข้อความและภาพจากเอกสารนี้ แล้วดึงข้อมูลเป็น JSON ตาม schema ต่อไปนี้เท่านั้น:
- document_type
- vendor_name
- document_date
- invoice_no
- subtotal
- tax_amount
- total_amount
- currency
- confidence
กติกา:
- ถ้าไม่พบค่า ให้ใช้ null
- document_date ต้องเป็นรูปแบบ YYYY-MM-DD
- จำนวนเงินต้องเป็นตัวเลข
- ตอบกลับเป็น JSON อย่างเดียว
แนวคิดสำคัญคือให้โมเดลทำหน้าที่ extract ข้อมูลเชิงโครงสร้าง ไม่ใช่สรุปเอกสารแบบทั่วไป วิธีนี้จะช่วยลดงานเขียน rule ที่ซับซ้อนสำหรับเอกสารหลายรูปแบบ
Step 4: ตรวจสอบความถูกต้องก่อนส่งเข้า Workflow
ต่อให้โมเดลแม่นยำ ก็ยังควรมี validation layer คั่นกลางเสมอ เพราะเอกสารการเงินและเอกสารธุรกิจมีความเสี่ยงด้านข้อมูลผิดสูง ขั้นนี้จะช่วยกันข้อมูลผิดไม่ให้ไหลเข้าระบบปลายทาง
ตัวอย่าง rule ที่ใช้ได้จริง
vendor_name และ total_amount ต้องไม่ว่างsubtotal + tax_amount ใกล้เคียง total_amountconfidence ต่ำกว่าค่าที่กำหนด เช่น 0.85 ให้ส่งเข้า human reviewตัวอย่าง pseudo-code
def validate(doc):
errors = []
if not doc.get("vendor_name"):
errors.append("missing vendor_name")
if not doc.get("total_amount") or doc["total_amount"] <= 0:
errors.append("invalid total_amount")
if doc.get("confidence", 0) < 0.85:
errors.append("low confidence")
return errors
ถ้าพบข้อผิดพลาด ไม่ควรหยุดระบบทั้งหมดทันที แต่ควร route ไปยังคิวตรวจสอบ พร้อมแนบต้นฉบับและผล extraction เพื่อให้ทีมแก้ไขได้เร็ว
Step 5: ส่งข้อมูลต่อเข้า Google Sheets, Slack และระบบหลังบ้าน
เมื่อได้ข้อมูลที่ผ่าน validation แล้ว ขั้นสุดท้ายคือการเชื่อมต่อไปยังปลายทางที่ทีมใช้งานจริง โดยควรออกแบบให้เลือก route ตามสถานะของเอกสาร
ตัวอย่างการใช้งาน
ตัวอย่าง payload ที่จะส่งต่อ
{
"status": "validated",
"document_type": "receipt",
"vendor_name": "ABC Store",
"total_amount": 1070.00,
"document_date": "2026-05-28",
"source_file": "receipt_001.pdf"
}
ควรเก็บ log ทุกขั้น เช่น รับไฟล์เมื่อไร, ใช้โมเดลเวอร์ชันไหน, validation ผ่านหรือไม่, ส่งออกสำเร็จหรือไม่ เพื่อให้ตรวจสอบย้อนหลังและปรับปรุงระบบได้ง่าย
Troubleshooting / Tips
สรุปแล้ว การ automate งานเอกสารด้วย Vision AI ไม่ได้มีแค่การอ่านตัวอักษร แต่คือการสร้าง pipeline ที่ครบตั้งแต่รับไฟล์ แปลงข้อมูล แยกฟิลด์ ตรวจสอบ และส่งต่ออย่างเป็นระบบ หากเริ่มจาก schema ที่ชัด มี validation ที่ดี และเชื่อม workflow ให้เหมาะกับงานจริง คุณจะลดงาน manual ได้มากและเพิ่มความเร็วในการทำงานของทีมอย่างชัดเจน จากจุดนี้สามารถต่อยอดไปสู่การทำ human-in-the-loop, dashboard ติดตามคุณภาพ extraction หรือการรองรับเอกสารหลายภาษาในระบบเดียวได้