OCR Implementation with Golang
This project was mainly focus on Thai language and tested with some Thai characters, English characters and Arabic digits
- Template generator
- Image adjustment (automatic thresholding and median filter)
- Rows and characters segmentation (horizontal histrogram and blob coloring)
- Character recognition (image resizing and template matching)
gocr --gentemp <charlist.txt> <fontfile.ttf>
Templates of character list in charlist.txt
with fontfile.ttf
fontface will be generated in /templates
directory
gocr <charlist.txt> <inputImage>
The inputImage
and charlist.txt
(the same one that use to generate templates) will be use for OCR. The output text file and images of each process will be saved in /outputs
directory.
234sohappy
sawasdeewansao
ลูกกิดมาล้าว
สุขใจหรรษา
อิอิzaa55บวก
NOTE: You can notice some incorrect character recognition here
No. | Font style | Capture method | Correctness |
---|---|---|---|
1 | Same as template | Screen capture | 58/58 |
2 | Same as template, double font size | Screen capture | 58/58 |
3 | Same as template | Phone camera | 57/58 |
4 | Different font | Screen capture | 32/58 |
5 | Different font | Phone camera | 34/58 |
- Support multi-object characters (ex. ะ, ญ)
- Better similar character recognition ( Dictionary? Machine Learning? Character type consideration?)
- A space in between word recognition
- Order recognition for lower and upper alphabet
- Handle system error (ex. can't open file)
- Golang : an open source programming language
- GoCV : allow Go to access OpenCV 3
- OpenCV : a computer vision library
Created by Withee Poositasai
Simple Thai OCR Project, CPE489 Image Processing and Computer Vision, KMUTT