สร้าง Traindata สำหรับ OCR ด้วย Tesseract

 
     ในกระบวนการ Optical Character Recognition (OCR) นั้นจำเป็นจะต้องมีข้อมูลลักษณะ (Feature) ของตัวอักขระนั้นๆก่อน เพื่อนำมาประมวลผลเทียบเคียงกับข้อมูลที่ได้จากภาพ ข้อมูล Feature นี้นั้นได้มาจากการฝึกฝน (Train) ซึ่งค่อนข้างมีซับซ้อนในการพัฒนา ดังนั้นในบทความนี้จะใช้ Tool ที่ช่วยลดความยุ่งยากไปได้เยอะ โดยมีชื่อว่า Tesseract OCR


Tesseract OCR

     Tesseract OCR เป็น Engine ที่ใช้สำหรับการรู้จำอักขระทางภาพ พัฒนาขึ้นโดยบริษัท HP ระหว่างปี 1984-1985 โดยเริ่มต้นมาจากโปรเจควิจัยระดับปริญญาเอกในห้องปฏิบัติการณ์ HP โดยมีความตั้งใจเพื่อนำไปใช้กับงานเครื่องสแกนเนอร์เป็นหลัก ซึ่งในปี 2005 HP ก็ได้ปล่อยให้เป็น Open Source โดยมี google เป็นผู้สนับสนุน ซึ่งนักพัฒนาสามารถนำชุดคำสั่งนี้มาใช้งานได้ Tesseract นั้นถือว่าเป็นหนึ่งใน OCR Open Source ที่มีความแม่นยำสูง สามารถเข้าไปดาวน์โหลดได้ที่ https://code.google.com/p/tesseract-ocr/


Training Step

Step : 1
     สร้างไฟล์ box ซึ่งเป็นไฟล์ที่ใช้ระบุตำแหน่งของอักขระต่างๆ ที่อยู่ในรูปภาพที่จะนำมาใช้ฝึกฝน โดยตำแหน่งของอักขระจะถูกระบุเป็นพิกัด ซึ่งมีโปรแกรมที่แจกฟรีสำหรับการนำมาใช้สร้างไฟล์ box เช่น txt2img, jTessBoxEditor, Qt-box-editor ฯลฯ
หน้าตาโปรแกรมของ Qt-Box Editor
(Source : http://zdenop.github.io/qt-box-editor/)

Step : 2
     เมื่อมีไฟล์ box และรูปภาพที่ต้องการแล้ว ก็นำไฟล์ทั้งสองเข้าสู่ Tesseract-OCR โดยเรียกการใช้งานผ่าน command prompt โดยใช้คำสั่ง
tesseract tha.test_font.exp0.png tha.test_font.exp0.box nobatch box.train

Step : 3
     ใช้ utility unicharset_extractor เพื่อสร้างไฟล์ unicharset โดยใช้คำสั่ง
unicharset_extractor tha.test_font.exp0.box 

Step : 4
     สร้างไฟล์ font_properties ให้อยู่ใน directory เดียวกัน (เจ้าของบล๊อคใช้โปรแกรม Notepad++) โดยเซฟชื่อว่า tha.font_properties โดยข้อความภายในให้มีรูปแบบดังนี้
<fontname> <italic> <bold> <fixed> <serif> <fraktur>

โดย fontname คือ ชื่อของ font ที่เราต้องการจะ train ซึ่งในที่นี้คือ test_font ส่วน , , , และ นั้นเพียงแค่ระบุลักษณะตามต้องการเพียงแค่ใส่ 0 หรือ 1 เช่น test_font ที่ได้นำมา train นั้น ไม่ได้มีลักษณะพิเศษใดๆเลย จึงมีเพียงแค่

test_font 0 0 0 0 0

Step : 5
     ใช้คำสั่ง shapeclustering
shapeclustering -F font_properties -U unicharset tha.test_font.exp0.tr

Step : 6
     ใช้คำสั่ง mftraining
mftraining -F font_properties -U unicharset -O tha.unicharset tha.test_font.exp0.tr 

Step : 7
     ใช้คำสั่ง cntraining
cntraining tha.test_font.exp0.tr

Step : 8
     ใช้คำสั่ง combine_tessdata เป็นการสิ้นสุดของกระบวนการ
combine_tessdata tha.

เมื่อเสร็จเรียบร้อยแล้ว จะได้ไฟล์ tha.traineddata มา ซึ่งสามารถนำไปใช้เป็นไฟล์ข้อมูลสำหรับทำกระบวนการ OCR ได้

Comments

Popular posts from this blog

MCS-51 Based Tachometer (เครื่องวัดความเร็วรอบ)

การเชื่อมต่อและการเขียนโปรแกรมใช้งาน Rotary Encoder แบบ X4 Counting