Tesseract OCR

Optical Character Recognition ( OCR ) เป็น Open Source OCR Engine ที่ใช้ในการแปลง Image เป็น Text ของ Google เพื่อให้สามารถจัดเก็บข้อมูลในรูปแบบดิจิตอล โดยสามารถเรียกใช้ผ่าน Command Line หรือจะเขียนโปรแกรมด้วยภาษาอย่าง Python ก็ได้ นอกจากนี้ยังรองรับภาษาได้มากกว่า 100 ภาษา


Tesseract

Tesseract จะทำการ Process Image ภายในก่อน โดยใช้ Library ที่ชื่อ Leptonica ก่อนที่จะใช้ Actual OCR โดยทั่วไปแล้วมันทำงานได้ดีในระดับหนึ่ง แต่ก็มีหลายกรณีที่ทำให้ Accuracy ความแม่นยำลดลง ซึ่งเราสามารถดูการทำงานของ Tesseract ได้ โดยกำหนด Configuration Variable ที่ชื่อ tessedit_write_images เป็น true ซึ่งเมื่อทำการรันจะได้ไฟล์ tessinput.tif หากมีปัญหาให้ทำ Image Pre-Processing ก่อนที่จะส่งไปยัง Tesseract หรือดูวิธีการแก้ปัญหาจาก FAQ

Image Pre-Processing

ก่อนที่เราจะนำ Image มาทำการแปลงเป็น Text จะต้องมีการทำ Image Pre-Processing เพื่อปรับภาพให้มีความเหมาะสม Skew Orientation Noise

  • Invert Image : จะใช้เทคนิคในการแปลงภาพให้เป็นขาวดำ Grayscale โดยใช้ Image Threshold ด้วย OpenCV โดย Tesseract เวอร์ขั่น 4.x จะใช้สีดำเป็น Text และสีขาวเป็น Background ถ้าใช้เวอร์ชั่นต่ำกว่าจะใช้สีขาวเป็น Text และสีดำเป็น Background แทน สลับกัน ซึ่งบนตัว Tesseract เองก็มีการแปลงภาพให้เป็นขาวดำเหมือนกัน โดยใช้ Otsu Algorithm
  • Rescale : บน Tesseract จะทำงานได้ดีที่สุดกับภาพที่มี DPI อย่างน้อย 300 dpi ขึ้นไป Willus Dotkom ได้ทำการทดสอบที่น่าสนใจ Optical Image Resolution สำหรับความสูงของตัวอักษรพิมพ์ใหญ่ Capital Letter ใน Pixel
  • Noise Removal : เป็นความแปรผันแบบสุ่ม Random Variation ของ Brightness หรือ Color บนรูปภาพ ที่ทำให้ภาพอ่านยากขึ้น และมี Accuracy ความแม่นยำลดลง
  • Rotation / Deskewing : เป็นการหมุนภาพให้ตรง และปรับภาพที่มีการบิดเบี้ยว เพื่อให้ Text Line อยู่ในแนวนอน Horizontal
  • Border : เป็นการลบบริเวณขอบดำของรูปภาพ เนื่องจากหากบริเวณที่ไม่ใช่ Text เป็นสีดำ อาจทำให้เกิดความผิดพลาด
  • Transparency / Alpha Channel : รูปภาพบาง Format สามารถมี Alpha Channel เพื่อทำให้ภาพมีลักษณะโปร่งใส Transparency Feature ซึ่งบน Tesseract 4.0 จะลบ Alpha Channel ด้วยฟังก์ชัน pixRemoveAlpha(): ของ Leptonica ส่วนบน Tesseract 3.0 ขึ้นไป ต้องการให้ลบ Alpha Channel ออกก่อนด้วย ImageMagick โดยใช้คำสั่ง
convert input.png -alpha off output.png

Tool & Library

Thai Language OCR

ปัจจุบันการใช้งาน OCR กับภาษาไทยถือว่าเริ่มถูกนำไป Integrate มากขึ้นเรื่อย ๆ เช่น Line, Google Drive แต่ยังแปลได้ไม่ดีเท่าภาษาอื่น เนื่องจากภาษาไทยเป็นภาษาที่ยากมีทั้งวรรณยุกต์และสระ Service Provider ที่ให้บริการ OCR กับภาษาไทย เช่น i2OCR, ArnThai

อ่านเพิ่มเติม : https://bit.ly/2JBKWXK


Leave a Reply

Your email address will not be published. Required fields are marked *