Loading Search Modal Component...
https://thadaw.com/posts/feed.xml

ลอง EasyOCR ภาษาไทย และเล่น uv ครั้งแรกในโปรเจกต์ OCR แบบ Python สมัยใหม่

2025-05-16

cover

TL;DR

ภาษาไทย OCR ยังไม่สมบูรณ์แบบ แต่ก็พอใช้ได้ในระดับฟรี เอาไปใช้ร่วมกับ GPT ช่วยปรับแก้ได้ Github Code: https://github.com/mildronize/thai-ocr-with-easyocr

ช่วงนี้มีโจทย์น่าสนุกจากฝั่งงาน Dev ให้ช่วย Proof of Concept ระบบ OCR สำหรับเอกสารภาษาไทย
ก็เลยได้โอกาสลองของใหม่ 2 อย่างพร้อมกัน

  1. ลอง EasyOCR — ว่ามันอ่านภาษาไทยได้แค่ไหนในโลกจริง
  2. ลอง uv — เครื่องมือจัดการ Python project แบบ modern ที่มาแทน pip, venv, pip-tools ในตัวเดียว

เริ่มจากโจทย์ง่าย ๆ: อ่าน PDF ภาษาไทย

ใน POC รอบนี้ เราต้องอ่านไฟล์ PDF (ที่เป็น scanned document) แล้วแปลงเป็นข้อความ
คำถามในหัวคือ… “OCR ภาษาไทยปี 2025 มันพอไหวมั้ยนะ?”

เลยลอง setup เบื้องต้นแบบเร็ว ๆ:

  • ใช้ pdf2image แปลง PDF → Image
  • ใช้ easyocr รองรับภาษา ['th', 'en']
  • บันทึกผลลัพธ์ลงไฟล์ text

ผลลัพธ์ที่ได้ "พอใช้ได้ในระดับ OCR ฟรี" — ไม่เป๊ะทุกคำ แต่ถ้าเอกสารคม ๆ สะอาด ๆ ก็อ่านได้เยอะอยู่นะ โดยเฉพาะตัวอักษรพิมพ์ดีด/เอกสารราชการที่พิมพ์ตรง ๆ (ไม่ใช่สแกนเอกสารที่ซีดหรือเบี้ยว)

แต่ก็เอาไปใช้งานจริงไม่ได้เท่าไหร่นัก เลยเอาไปใช้ GPT ช่วยปรับแก้ให้เป็นข้อความที่อ่านง่ายขึ้น
(ซึ่งก็ทำได้ดีในระดับนึง แต่ก็ยังมีข้อผิดพลาดอยู่บ้าง)

แล้วก็ลองใช้ uv ดูครั้งแรก...

โอ้โห รู้สึกเลยว่า Python มัน modern ขึ้น!

ปกติถ้าจะเริ่มโปรเจกต์ Python เราต้องตั้ง venv, สร้าง requirements.txt, ลง pip, ทำ pip freeze, จัด lockfile — เยอะเวอร์ แต่ uv ทำให้ทุกอย่างง่ายเหลือแค่คำสั่งเดียว:

pip install easyocr pdf2image
pip freeze > requirements.txt

หรือถ้าจะจัดเต็มแบบ modern dev:

uv init
uv add easyocr pdf2image
uv sync

นอกจากจะเร็วกว่า pip เยอะมาก (เพราะเขียนด้วย Rust) ยังรวมระบบ lockfile แบบเดียวกับ bun, pnpm ไว้ด้วยเลย แถมใช้แทน virtualenv ได้เลยด้วย 🎉

สิ่งที่ได้คิดจากการลองของ

  • บางทีการกลับมาลอง tools ใหม่ ๆ มันทำให้เรา “รู้สึกสนุก” กับ Python ขึ้นอีกครั้ง
  • OCR ภาษาไทยยังไม่สมบูรณ์แบบ แต่ก็พอจะเอาไปใช้ในงานจริงได้ ถ้ารู้ว่าจุดแข็ง-จุดอ่อนมันอยู่ตรงไหน
  • เครื่องมือดี ๆ อย่าง uv ทำให้ Python ecosystem ดู “ทันสมัย” ขึ้นมาก โดยเฉพาะกับคนที่ชอบ style แบบ TypeScript / Bun

แล้วพบกันใหม่ สวัสดีครับ

ตัวอย่างโค้ดทั้งหมดอยู่ที่ https://github.com/mildronize/thai-ocr-with-easyocr