ข้ามไปยังเนื้อหาหลัก

โอเพนเวท

OpenThai 2.0 OCR Text

โมเดล OCR ภาษาไทยและอังกฤษแบบเปิด เล็กพอที่จะรันบน CPU

  • พารามิเตอร์1.02ล้าน
  • สัญญาอนุญาตApache-2.0
  • ภาษาไทยตัวพิมพ์ 12 ชุด87.8คะแนน
  • CPU หนึ่ง worker0.39วินาทีต่อหน้า

ดาวน์โหลดน้ำหนักโมเดลใช้ผ่าน API

น้ำหนักโมเดลแบบเปิดจาก iApp Technology บน Hugging Face ดาวน์โหลดได้ฟรี

ทำอะไรได้บ้าง​

  • อ่านภาษาไทยและอังกฤษตัวพิมพ์คืนข้อความของหน้าตามลำดับการอ่าน พร้อมกรอบและค่าความมั่นใจทุกบรรทัด ไม่เขียนตารางหรือ Markdown ถ้าต้องการให้ใช้ OpenThai 2.0 OCR Markdown
  • รันบน CPU0.39 วินาทีต่อหน้า A4 ที่ข้อความแน่น อ่านทีละหน้า worker หนึ่งตัวใช้ 0.5 วินาที CPU ต่อหน้าและหน่วยความจำราว 450 MB Xeon 8 คอร์จึงอ่านได้ราว 950 หน้าต่อนาที ไม่ต้องใช้ GPU
  • ขนาดเล็ก1.02 ล้านพารามิเตอร์ ในไฟล์สองไฟล์ขนาด 1.8 MB และ 2.4 MB คือตัวหาบรรทัดข้อความ และตัวอ่านบรรทัดภาษาไทย
  • รับมือหน้าเอกสารจริงหมุนหน้าที่ตะแคงหรือกลับหัวตามทิศที่บรรทัดอ่านได้ดีที่สุด ปรับภาพสแกนที่เอียง อ่านหน้าสองและสามคอลัมน์ทีละคอลัมน์ คงลำดับแถวของตารางและเอกสารงบประมาณ และอ่านตัวอักษรสีอ่อนบนพื้นเข้มได้ ผ่านครบทั้ง 22 เงื่อนไขในชุดทดสอบความทนทาน
  • เทรนต่อได้มีน้ำหนักของตัวอ่านบรรทัดให้สำหรับเทรนต่อ

ผลการทดสอบ​

ทุกโมเดลอ่านหน้าเดียวกันและให้คะแนนแบบเดียวกัน คือความแม่นยำระดับตัวอักษร 100 × (1 − อัตราตัวอักษรผิด) ยิ่งสูงยิ่งดี หลังตัดมาร์กอัปออกทั้งสองฝั่ง และนับลำดับการอ่านด้วย ค่าเฉลี่ยคิดจาก 12 ชุดตัวพิมพ์ ลายมือแสดงแยกไว้

โมเดลนี้OpenThai 2.0 OCR MarkdownTyphoon OCR V2 2B
เฉลี่ย 12 ชุดตัวพิมพ์87.890.389.6
คำพิพากษาศาลปกครอง97.096.296.2
ราชกิจจานุเบกษา96.398.094.6
เอกสารงบประมาณ (ตรวจแล้ว)99.598.297.3
หนังสือเก่า77.179.777.2
หน้าเอกสาร ThaiOCRBench82.090.687.3
ลายมือ10.378.976.7
วินาทีต่อหน้า0.39 บน CPU2.97 บน H100 ‡16.72 บน H100 †

สรุป: แม่นที่สุดใน 15 โมเดลที่ทดสอบสำหรับคำพิพากษา ค่าเฉลี่ยต่ำกว่าอันดับหนึ่ง 2.5 คะแนน ซึ่งเป็นของ OpenThai 2.0 OCR Markdown ที่รันบน GPU และใช้แค่ CPU ส่วนโมเดลที่รันบน GPU อ่านตาราง ภาพถ่าย และลายมือได้ดีกว่า ข้อมูลเทรนมีภาพสแกนคำพิพากษาศาลปกครอง แต่ไม่ใช่ 150 ฉบับที่ใช้ทดสอบ

ความเร็ววัดแบบอ่านทีละหน้า โมเดลนี้อ่าน 24 หน้าตัวพิมพ์จากชุดด้านบน ‡ หน้าคำพิพากษา 24 หน้า ซึ่งเป็นหน้า A4 ที่ข้อความแน่นเต็มหน้า † หน้าตารางเอกสารไทย 65 หน้า รันด้วย --enforce-eager ซึ่งจำเป็นบน vLLM รุ่นที่ใช้ ตารางเต็มของทั้ง 15 โมเดล รายละเอียด 12 ชุด และวิธีวัดความเร็วอยู่ในการ์ดโมเดล

วิธีรัน​

hf download iapp/OpenThai2.0-OCR-Text --local-dir OpenThai2.0-OCR-Text
pip install openvino opencv-python-headless pyclipper numpy
cd OpenThai2.0-OCR-Text
from runtime.line_engine import LineOCR

ocr = LineOCR(".", threads=1) # det.onnx, rec.onnx, rec_dict.txt, config.json
r = ocr.read("page.png") # a path, bytes, a BGR array or a PIL image
print(r["text"]) # lines in reading order, columns one after another
r["lines"] # [{"text", "confidence", "row", "box"}], boxes in the input image's coordinates

ถ้าต้องการอ่านจำนวนมาก ให้รันหนึ่ง worker ต่อหนึ่งคอร์ด้วย threads=1 เพราะการเพิ่มเธรดในโปรเซสเดียวเร็วขึ้นได้แค่ราวสองคอร์ ใช้ ONNX Runtime แทน OpenVINO ได้

ต้องการบริการที่พร้อมใช้? OpenThai 2.0 OCR Text API สร้างบนโมเดลนี้ อ่านเป็นข้อความหน้าละ 0.049 IC และเป็น JSON พร้อมเลย์เอาต์ หรือไฟล์ Word, PowerPoint, Excel และ PDF ที่ค้นหาได้ หน้าละ 0.15 IC

ข้อจำกัด​

  • อ่านได้เฉพาะตัวพิมพ์ ลายมือและข้อความในภาพถ่ายฉากอ่านได้ไม่ดี สำหรับงานเหล่านี้ให้ใช้โมเดลภาพและภาษา เช่น OpenThai 2.0 OCR Markdown
  • ฟอนต์ตกแต่ง ข้อความสั้นในฟอนต์ที่ประดิษฐ์มาก อาจอ่านผิด
  • ตราประทับและตราสัญลักษณ์ออกมาเป็นข้อความ เพราะเป็นข้อความบนหน้า
  • ความเร็ว CPU ที่ระบุต้องใช้ AMX (Intel Sapphire Rapids ขึ้นไป) ซึ่งรันแบบ bfloat16 CPU อื่นรันแบบ float32 ช้ากว่า

การเทรน​

ตัวอ่านบรรทัดปรับจูนด้วยบรรทัดข้อความจริง 410,270 บรรทัด ได้แก่ 261,877 บรรทัดจากภาพสแกนคำพิพากษาศาลปกครอง ใช้ข้อความของศาลเองเป็นป้ายกำกับ 41,101 บรรทัดจาก PDF เอกสารงบประมาณของรัฐสภา เก็บเฉพาะบรรทัดที่ชั้นข้อความใน PDF ตรงกับผลอ่านของตัวอ่านบรรทัด และ 107,292 บรรทัดจากหนังสือเก่าใน Wikisource พร้อมบรรทัดภาษาไทยและอังกฤษสังเคราะห์ที่เรนเดอร์จากฟอนต์สัญญาอนุญาตเปิด 85 แบบ ไม่ใช้ชุดข้อมูลส่วนบุคคล และตัดเอกสารที่ใช้ทดสอบออกทั้งหมด

สัญญาอนุญาต​

Apache-2.0 ตัวหาบรรทัดคือ PP-OCRv6-tiny ของ PaddlePaddle ตามที่เผยแพร่ ส่วนตัวอ่านบรรทัดปรับจูนจากตัวอ่านของ PP-OCRv6-tiny โดยเปลี่ยนชั้นผลลัพธ์เป็นภาษาไทย ทั้งสองใช้สัญญาอนุญาต Apache-2.0 และมีประกาศอยู่ในรีโพ

พัฒนาโดย iApp Technology เทรนบน GPU NVIDIA H100 ที่สนับสนุนโดย Siam AI Corporation

Siam AI Corporation