OCR Invoice Validation System for SAP Automation

Case Study: เมื่อ OCR “อ่านได้” ไม่ได้แปลว่า “ใช้งานได้” การออกแบบระบบ Validate ข้อมูลก่อนเข้า SAP

ในหลายองค์กร เวลาพูดถึง OCR คนมักคิดว่า

“แค่ดึงข้อความจาก Invoice ออกมาได้ ก็จบแล้ว”

แต่ในโลกจริง โดยเฉพาะระบบบัญชีและภาษี
สิ่งที่ยากที่สุดไม่ใช่ OCR

แต่คือ

“ทำอย่างไรให้ข้อมูลที่ OCR อ่านมา ‘เชื่อถือได้พอ’ สำหรับใช้ในกระบวนการทางธุรกิจต่อไป”

และนี่คือหนึ่งในระบบที่ผมพัฒนาขึ้น เพื่อจัดการกับปัญหานั้น


📌 Background ของระบบ

ระบบนี้เป็นส่วนหนึ่งของ workflow สำหรับ

  1. Upload invoice ไปยัง OCR engine
  2. Download ผลลัพธ์ OCR กลับมา
  3. Validate ข้อมูล
  4. ให้ผู้ใช้งานตรวจสอบ
  5. Post เข้า SAP อัตโนมัติ

จากโค้ดจริงของระบบ จะเห็นชัดว่า

“Validation” ถูกออกแบบเป็น core layer ของทั้ง workflow

ไม่ใช่ขั้นตอนเสริมทีหลัง


⚠️ ปัญหาที่แท้จริงของ OCR

OCR ไม่ได้ “ผิดทั้งหมด”

แต่ปัญหาคือ

  • อ่านได้ไม่ครบ
  • อ่านผิดบาง field
  • format ไม่คงที่
  • ข้อมูลสำคัญบางตัวหาย
  • บางครั้ง OCR อ่าน “ใกล้เคียง” แต่ไม่ถูกต้องเชิงธุรกิจ

ซึ่งในระบบบัญชี

“เกือบถูก” = “ผิด”

โดยเฉพาะข้อมูลอย่าง

  • Company Code
  • Vendor Code
  • Tax ID
  • Invoice Number
  • VAT Amount

เพราะถ้าผิดแม้เพียงตัวเดียว

  • posting ผิดบริษัท
  • vendor mapping ผิด
  • duplicate invoice
  • VAT report ผิด
  • audit trace มีปัญหา

🧠 แนวคิดหลักของระบบนี้

แทนที่จะเชื่อ OCR โดยตรง

ระบบถูกออกแบบบนแนวคิดว่า

“OCR เป็นเพียงผู้เสนอข้อมูล
แต่ระบบ validation ต้องเป็นผู้ตัดสินว่าข้อมูลนั้น ‘ใช้งานได้จริง’ หรือไม่”

ดังนั้นทุก record ต้องผ่าน

  • business rule validation
  • master data validation
  • structural validation
  • duplicate checking

ก่อนจะถูกส่งต่อไป SAP


⚙️ ตัวอย่าง Validation Logic จากระบบจริง

1. Validate Company Code

ระบบตรวจสอบว่า

  • Company Code ว่างหรือไม่
  • Company Code ตรงกับ business unit จริงหรือไม่

ถ้าพบว่าหาย:

  • ระบบเติมค่าให้อัตโนมัติในบางกรณี
  • หรือ mark สีเหลืองเพื่อให้ user ตรวจสอบ

นี่ไม่ใช่แค่ “เช็คข้อมูล”
แต่คือ

“repair + validation” ไปพร้อมกัน


2. Validate Vendor จาก Tax ID

ระบบไม่ได้เชื่อ Vendor Name จาก OCR โดยตรง

แต่ใช้

  • Tax ID
  • Branch
  • Vendor Master

เพื่อ cross-check ความสัมพันธ์ของข้อมูล

เพราะในโลกจริง

Vendor Name OCR ผิดได้ง่าย
แต่ Tax ID มีความน่าเชื่อถือกว่า


3. Duplicate Invoice Detection

หนึ่งในปัญหาใหญ่ของ OCR workflow คือ

invoice เดิมถูก scan ซ้ำ

ระบบจึงสร้าง dictionary

  • Tax ID + Invoice Number

เพื่อใช้ detect duplicate ก่อน posting

นี่ช่วยลด

  • duplicate posting
  • payment duplication
  • accounting reconciliation issue

ได้อย่างมาก


4. Error Description Layer

ทุก validation ไม่ได้หยุดแค่ “เจอ error”

แต่ระบบเขียน

  • Error_Desc
  • คำอธิบาย
  • สาเหตุที่แก้ไข

เก็บไว้ในไฟล์ผลลัพธ์ด้วย

สิ่งนี้สำคัญมาก เพราะ

ระบบ automation ที่ดี ต้อง explain ตัวเองได้

ไม่ใช่แค่ “ผ่าน/ไม่ผ่าน”


🔄 Human-in-the-loop Design

สิ่งที่ผมตั้งใจในระบบนี้ คือ

ไม่ใช่ replace คน
แต่ทำให้คนตรวจเฉพาะ “จุดที่มีความเสี่ยง”

ดังนั้น workflow จริงคือ

  • OCR อ่าน
  • ระบบ validate
  • highlight anomaly
  • user review เฉพาะ exception
  • post เข้า SAP

แทนที่ user จะต้อง

  • เปิด invoice ทุกใบ
  • เช็คทุก field
  • ตรวจ manual ทั้งหมด

📊 ผลลัพธ์ที่ได้จากแนวคิดนี้

หลังมี validation layer

  • ลด manual checking จำนวนมาก
  • ลด duplicate posting
  • ลด vendor mismatch
  • ลด human error
  • เพิ่มความเร็วในการ prepare posting
  • ทำให้ OCR data “พร้อมใช้งานจริง”

เพราะในท้ายที่สุด

สิ่งที่องค์กรต้องการ ไม่ใช่ OCR ที่อ่านได้
แต่คือ “ข้อมูลที่เชื่อถือได้”


💡 Insight Layer

🧠 System Insight

ปัญหาของ OCR ในองค์กร ไม่ใช่ accuracy อย่างเดียว

แต่คือ

“ความไม่สอดคล้องกับ business rule”

OCR อาจอ่านถูกเชิงข้อความ
แต่ผิดเชิงธุรกิจได้เสมอ

ดังนั้น

validation layer คือส่วนที่เปลี่ยน “ข้อความ” ให้กลายเป็น “ข้อมูลธุรกิจ”


👥 Behavioral Insight

หลายองค์กรพยายามแก้ OCR ด้วย

  • model ที่แม่นขึ้น
  • AI ที่ฉลาดขึ้น
  • template ที่ละเอียดขึ้น

แต่สิ่งที่มักขาดคือ

business validation logic

ทั้งที่ในโลกจริง

  • คนบัญชีไม่ได้สนใจ OCR score
  • แต่สนใจว่า post เข้า SAP ได้หรือไม่

🔁 Reusable Principle

ถ้าระบบปลายทางเป็น

  • ERP
  • SAP
  • Financial posting
  • Tax reporting

อย่าเชื่อ OCR โดยตรง

แต่ต้องมี

  • validation layer
  • reconciliation logic
  • master data checking
  • explainable error handling

เสมอ


🚀 สรุป

ระบบนี้ไม่ได้ถูกออกแบบให้

“อ่าน Invoice ได้เก่ง”

แต่ถูกออกแบบให้

“ทำให้ข้อมูลจาก OCR เชื่อถือได้พอสำหรับระบบองค์กรจริง”

และในโลกของ enterprise automation

Validation คือหัวใจของความน่าเชื่อถือ
ไม่ใช่ OCR accuracy เพียงอย่างเดียว

Scroll to Top