Coder Social home page Coder Social logo

gocr's Introduction

gOCR

OCR Implementation with Golang

This project was mainly focus on Thai language and tested with some Thai characters, English characters and Arabic digits

gOCR

Implemented functions

  • 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)

How to use

Generate the Templates

gocr --gentemp <charlist.txt> <fontfile.ttf>

Templates of character list in charlist.txt with fontfile.ttf fontface will be generated in /templates directory

OCR

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.

Example

Input image

Median filter + automatic thresholding

Rows segmentation

Characters segmentation

Text output

234sohappy
sawasdeewansao
ลูกกิดมาล้าว
สุขใจหรรษา
อิอิzaa55บวก

NOTE: You can notice some incorrect character recognition here

Terminal output

Test cases

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

What should be improve

  • 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)

Main Resources

  • Golang : an open source programming language
  • GoCV : allow Go to access OpenCV 3
  • OpenCV : a computer vision library

About the project

Created by Withee Poositasai

Simple Thai OCR Project, CPE489 Image Processing and Computer Vision, KMUTT

gocr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gocr's Issues

Help please

github.com/Th1nkK1D/gocr

Th1nkK1D\gocr\common.go:85:2: too many arguments to return
have (gocv.Mat, error)
want (gocv.Mat)
Th1nkK1D\gocr\main.go:98:21: cannot use rowImg (type gocv.Mat) as type *gocv.Mat in argument to gocv.Rectangle
Th1nkK1D\gocr\rowsegment.go:113:12: cannot use img (type gocv.Mat) as type *gocv.Mat in argument to gocv.Line
Th1nkK1D\gocr\rowsegment.go:114:12: cannot use img (type gocv.Mat) as type *gocv.Mat in argument to gocv.Line
Th1nkK1D\gocr\threshold.go:49:16: cannot use imgOut (type gocv.Mat) as type *gocv.Mat in argument to gocv.Threshold

undefined

Hi display this to compile, help

.\main.go:37:5: undefined: GenTemplate
.\main.go:37:17: undefined: ReadCharList
.\main.go:56:11: undefined: AutoThreshold
.\main.go:63:15: undefined: MedianFilter
.\main.go:63:28: undefined: GetImgArray
.\main.go:64:11: undefined: GetImgMat
.\main.go:71:18: undefined: ReadTemplate
.\main.go:71:31: undefined: ReadCharList
.\main.go:76:19: undefined: SplitLine
.\main.go:78:5: undefined: DrawRowSegment
.\main.go:78:5: too many errors

Fonts

In the reader it seems that you got problems with different fonts.
Did you use the trained data from the OCR part of opencv ?
They have trained on 4000000 documents and thousands of fonts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.