ปัจจุบันเรามีเอกสารในรูปแบบ digital อยู่มากมายมี Word , Excel , Powerpoint และ PDF ซึ่ง PDF ที่มาจากการ scan ด้วยเครื่อง scan แทบจะนำไปใช้งานต่อไม่ได้เลยนอกจากการอ่านและเป็น Reference เท่านั้น เมื่อเราต้องการนำข้อความหรือเนื้อหานั้นๆ ไปใช้ต่อเราก็จะใช้เครื่องมือที่เรียกว่า OCR
Optical character recognition (OCR)
ปัจจุบันมี OCR หลายๆตัวที่เป็น Comercial และเป็น Open source มากมายหลายตัว แต่ตัวหนึ่งที่โดดเด่นมากคือ Tesseract ซึ่งเป็น Open source ตัวหนึ่งที่รองรับการอ่าน PDF ที่มาจากการ SCAN ซึ่งมีประสิทธิภาพและรองรับภาษาไทย และภาษาอื่นกว่า 100 ภาษาซึ่งน่าสนใจมาก เรามาลอง scan กันดูครับ

จากภาพเป็นตัวอย่าง pdf ซึ่งได้มาจากการ SCAN (ภาพค่อนข้างละเอียด มีคุณภาพที่ดี) พบว่าการแปลงจาก OCR ค่อนข้างแม่นยำ แต่มีจุดผิดพลาดบางจุดโดยเฉพาะ ตัวเลขไทย และ ภาษาอังกฤษ เช่น “๒๙” ก็ถูกแปลงเป็น “๒๘๙” หรือ เลข “๑” ก็ถูกแปลงเป็น ‘๏’ เป็นต้น
OCR กับเลขไทย
เนื่องจาก OCR Open source หลายๆตัวมี Technology. ต่างกันโดยเฉพาะ OCR ประเภทใช้ Machine Learning เช่น Tesseract เป็นต้นก็ใช้ Machine Learning ฉะนั้นจึงต้องมี Data ตัวอย่างเพื่อให้ Machine Learning. ทำการเรียนรู้ แต่พบปัญหาว่า Data Train ที่ถูกนำมาใช้งานกลับเป็น Data ที่ไม่ค่อยมี ตัวเลขไทยสักเท่าไหร่ ทำให้ผลของการแปลงออกมามีความผิดพลาดโดยเฉพาะเลขไทย และประกอบกับ เลขไทยส่วนใหญ่ใช้ในเอกสารทางราชการเท่านั้นจึงไม่ค่อยพบ Data ที่เป็นเลขไทยที่พร้อมจะนำมา Train ได้เลย เราจึงสร้าง Data ที่มีเลขไทยนำมา Train เพื่อให้ Tesseract สามารถอ่านเลขไทยได้เก่งขึ้น

ผลลัพธ์หลังจากการเทรนจะพบว่า tesseract สามารถอ่านเลขได้ดีขึ้นจริง เช่นจากเดิมที่อ่านเลข ‘๑’ เป็น ‘๏’ ก็ถูกแก้ไขแล้วและอย่างเช่น ‘๒๙’ ซึ่งจากเดิมแปลงออกมาเป็น ‘๒๘๙’ ก็ถูกแก้ไขแล้วเช่นกัน
LSTM
เนื่องจาก Tesseract ใช้ LSTM ซึ่งเป็น deep learning ประเภทหนึ่งที่เรียนรู้จาก Character ก่อนหน้าเพื่อ ทำนายตัวอักษรถัดไป เราจึงพบว่าหาก Data Train ที่เราจำลองมาเป็นเลขไทยล้วนย่อมไม่สามารถทำให้ model ฉลาดได้เช่น
“๓๔๕๖๗๑๒๓๖๒” หาก Data Train เป็นแบบนี้ Model ย่อมรู้ว่า หาก character ก่อนหน้าเป็นเลขไทย เลขถัดไปก็ควรเป็นเลขไทยด้วยซึ่งจริงแล้วก็ถูกต้องตามที่คิดไว้ แต่จะเป็นอย่างไรหาก Data train มีความสมจริงขึ้นเช่น
“พ.ศ. ๒๕๖๗” หากตัวอักษร “พ.ศ. ” ก็มีความเป็นไปได้ที่ตัวอักษรถัดไปเป็นเลขไทยเป็นต้น ฉะนั้นการเตรียม Data Train เราจึงเน้น Train data ที่มีความหลากหลายเช่น ตัวอักษรและตามด้วยตัวเลข เช่น “พ.ศ. ๒๕๖๗” ตัวเลขที่มีเครื่องหมายลูกน้ำ “๒๔,๖๓๔ บาท”
ปัจจุบัน tessaract ใช้ Bi-LSTM ซึ่งมีการตรวจสอบ Character ข้างหลังอีกด้วย ทำให้การ ตรวจคำว่า “บาท” ต่อท้ายย่อมมีโอกาสที่ตัวอักษรข้างหน้าเป็นตัวเลขไทยอีกด้วย
Conclusion
OCR สำหรับภาษาไทย ปัจจุบันนี้สามารถถอดภาษาออกมาได้ค่อนข้างแม่นย่ำ แต่เลขไทยของเราซื่งปัจจุบันมีการใช้ลดน้อยลงกลับเป็นผลให้ OCR มีข้อมูลสำหรับใช้ Train ได้น้อยหากเราช่วยกันสร้างฐานข้อมูลภาษาไทยรวมถึงเลขไทยก็จะช่วยให้เทคโนโลยีของไทยไม่เพียงแค่ OCR ก็จะก้าวหน้าเพียงแต่เราต้องช่วยกันครับ
