PHP ติดตั้งและใช้งาน Tesseract OCR แปลงรูปภาพเป็นข้อความภาษาไทย

PHP-ติดตั้งและใช้งาน Tesseract-OCR
PHP-ติดตั้งและใช้งาน Tesseract-OCR

Tesseract คือ Engine ที่ใช้สำหรับกระบวนการแปลงสื่อสิ่งพิมพ์ เช่นกระดาษ นิตยาสาร สัญญา หรือข้อมูลอะไรก็ตามที่อยู่ในรูปของเอกสารกระดาษ ให้กลายเป็นเป็นข้อความ เรียกกระบวนการนี้ว่า Optical Character Recognition หรือเรียกสั้น ๆ ว่า OCR

Tesseract Engine สามารถแปลงข้อมูลในรูปภาพไปเป็นตัวอักษรภาษาต่าง ๆ ทั่วโลก เดิมที่ถูกพัฒนาโดย Hewlett-Packard ( HP ) และเปิดเป็นโอเพ่นซอร์สในปี 2005 จากนั้นในปี 2006 ทีมพัฒนาของ Google ได้นำมาพัฒนาต่อยอดให้มีความสามารถมากขึ้น สามารถเข้าดูได้ที่ https://opensource.google/projects/tesseract

ในบทความนี้จะมาแนะนำการติดตั้งและใช้งาน Tesseract OCR ในภาษา PHP บนระบบปฏิบัติการ Mac OS นะครับ สำหรับการทดสอบ เบื้องต้นให้เตรียม Environment ตามด้านล่างนะครับ

  • ติดตั้ง homebrew package manager
  • ติดตั้ง PHP 7.2 หรือเวอร์ชั่นที่สูงกว่า

ติดตั้ง Tesseract OCR

composer require thiagoalessio/tesseract_ocr

เมื่อติดตั้งสำเร็จเราจะได้โครงสร้างโปรเจคตามรูปด้านล่าง ลบ compser.lock ทิ้งไป

  • ติดตั้ง Tesseract OCR ใช้ homebrew โดยเปิด Terminal ขึ้นมาและพิมพ์คำสั่งดังนี้
brew install tesseract

หลังจากติดตั้ง tesseract เรียบร้อยแล้ว ถ้าเราอยากรู้คำสั่งต่างของ tesseract ให้พิมพ์ tesseract ที่ Terminal

tesseract –version คำสั่งสำหรับดูว่าเราติดตั้งเวอร์ชั่นอะไรไว้ในเครื่อง

tesseract –list-langs คำสั่งสำหรับตรวจสอบภาษาที่ tesseract สามารถ recognize ได้

  • ทดสอบการทำงาน โดยให้สร้างไฟล์ index.php ไว้ในโฟลเด้อ ocr จากนั้น ลองหาภาพที่มีข้อความภาษาอังกฤษวางในโฟลเด้อ images ตั้งชื่อไฟล์ว่า eng.png ดูตัวอย่างตามภาพ

และรูปภาพที่มีข้อความภาษาอังกฤษอยู่ในภาพ ใช้สำหรับทดสอบ

คำสั่งใน index.php


require_once "vendor/autoload.php";
use thiagoalessio\TesseractOCR\TesseractOCR;

echo (new TesseractOCR('images/eng.png'))
    ->lang('eng')
    ->executable('/usr/local/Cellar/tesseract/4.1.1/bin/tesseract')
    ->run();

ในส่วนของ executable หากเราไม่ทราบว่า tesseract ถูกติดตั้งไว้ที่ path ไหน ให้ใช้คำสั่ง brew list tesseract เพื่อดู path ที่เราติดตั้ง tesseract ได้ ผลลัพธ์คำสั่งตามด้านล่าง

/usr/local/Cellar/tesseract/4.1.1/bin/tesseract
/usr/local/Cellar/tesseract/4.1.1/include/tesseract/ (19 files)
/usr/local/Cellar/tesseract/4.1.1/lib/libtesseract.4.dylib
/usr/local/Cellar/tesseract/4.1.1/lib/pkgconfig/tesseract.pc
/usr/local/Cellar/tesseract/4.1.1/lib/ (2 other files)
/usr/local/Cellar/tesseract/4.1.1/share/tessdata/ (35 files)

ผลลัพธ์ที่ได้เมื่อเรารันคำสั่งใน index.php ผ่าน localhost:8080/ocr ตามรูปด้านล่างครับ สำหรับภาพที่ไม่ได้มีความซับซ้อนมาก เช่น ไม่มีพื้นหลัง ไม่มีเส้นตัดทับตัวอักษร ผลลัพธ์แม่นยำ 100% เลยครับ

ติดตั้ง tesseract ภาษาไทย

ติดตั้ง tesseract ภาษาไทย เบื้องต้นหลังจากเราติดตั้ง tesseract เรียบร้อยแล้ว จะมีภาษาที่สามารถ recognize ได้แค่ 3 ภาษานะครับ ในกรณีที่เราต้องการแปลงข้อมูลในภาพที่เป็นภาษาไทยให้เราติดตั้งภาษาใน tesseract เพิ่ม โดยใช้คำสั่ง

brew install tesseract-<langcode> สำหรับติดตั้งภาษาใดภาษาหนึ่ง

brew install tesseract-lang สำหรับติดตั้งทุกภาษา

ปรับ code ที่ไฟล์ index.php นิดหน่อยครับ โดยเพิ่มภาษาไทยเข้าไป

echo (new TesseractOCR('thai.png')) 
	->lang('tha','eng')
    ->executable('/usr/local/Cellar/tesseract/4.1.1/bin/tesseract')
    ->run(); 

ผลลัพธ์ที่ได้ สำหรับการแปลงเป็นภาษาไทย

Tesseract OCR กับ รูปภาพที่ซับซ้อน

ลองทดสอบ Tesseract OCR กับระบบภาพ Captcha หลาย ๆ แบบ ตั้งแต่ง่าย ๆ จนถึงยากมาก ( แบบที่คนเองยังอ่านลำบาก )

รูปแบบตัวเลขล้วน อ่านได้ปกติ

แบบข้อความผสมตัวเลข ยังอ่านได้อยู่

แบบเบลอ ๆ เอียง ๆ ยังพออ่านได้

แบบยากมาก มีเส้นสีเดียวกันทับตัวอักษร อ่านไม่ได้แล้ว

ขอบคุณข้อมูลจากหลาย ๆ ที่สำหรับการทดสอบ

  • https://stackoverflow.com/questions/38091060/how-to-setup-and-running-tesseract-ocr-for-php-opensource
  • https://github.com/thiagoalessio/tesseract-ocr-for-php
  • https://github.com/tesseract-ocr/tesseract/wiki
  • https://fonts.google.com

Leave a Reply