gocr is a go based OCR module
- Linear Mean Scanner
- Circular Scanner (Currently the best)
- NNPredictor (kNN with k = 1)
- CNNPredictor (Need to install tensorflow first) (Doesn't upport custom train)
- Sauvola Segmentation
- Better character detection
- Better symbol detection
- Spelling Correction
To use OCR we have some generated Model that we train using tensorflow. We use Convolutional Neural Network as the model architecture and produce good detection.
You can load and use the model to CNN Predictor
like this example below:
d, _ := os.Getwd()
image, _ := gocr.ReadImage(d + "/imagetext_3.png")
s := gocr.NewCNNPredictorFromDir(modelPath + "tensor_4/")
// Define the image size
s.InputHeight, s.InputWidth = 64, 64
strings := gocr.ScanToStrings(s, image)
for _, s := range strings {
fmt.Println(s)
}
However you can also use your own train data. Currently the predictor that support custom training only NNPredictor
. Training takes csv
file that have file image path and string representation.
ie:
a.gif,a
b.gif,b
A1.gif,A
B1.gif,B
Train the sample data to model and scan image
d, _ := os.Getwd()
// Load the sample data and save it in model.cbor file
err := gocr.TrainAverage(d+"/English/Fnt/", d+"/English/")
if err != nil {
panic(err)
}
image, _ := gocr.ReadImage(d + "/imagetext_3.png")
s := gocr.NewCNNPredictorFromDir(modelPath + "sample1/model.cbor")
strings := gocr.ScanToStrings(s, image)
for _, s := range strings {
fmt.Println(s)
}
gocr is released under the Apache 2.0 License. se LICENSE for details.