# Learning Characters

This code snippet shows how to learn characters based on an image featuring a known text and save the corresponding font file.

## C++

```cpp
#include <eVision/EasyOcr/EasyOCR/EOCR.h>
```

```cpp
using namespace eVision;
// Image constructor
EImageBW8 srcImage;
// EOCR constructor
EOCR ocr;
// Text to be learned (all digits)
// Assuming the image contains this text
const std::string text = "0123456789";
// ...
// Create a new font
ocr.NewFont(8, 11);
// Adjust the segmentation parameters
ocr.SetTextColor(EOCRColor_BlackOnWhite);
ocr.SetMinCharWidth(15);
ocr.SetMinCharWidth(50);
ocr.SetMinCharHeight(15);
ocr.SetMinCharHeight(75);
ocr.SetNoiseArea(15);
// Segment the characters
ocr.BuildObjects(&srcImage);
ocr.FindAllChars(&srcImage);
// Learn the characters
ocr.LearnPatterns(&srcImage, text, EOCRClass_Digit);
// Save the font into a file
ocr.Save("myFont.ocr");
```

#### SEE ALSO
[`EOCR::NewFont`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a06855155687fbb8494daf1ac72a83b7e) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e0002af73f6a1462a5a0fb41c8b795d) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a879b41a49a25291afcd4f92d21f60635), [`EOCR::SetTextColor`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a91a7498c5d100201e4665dfd4a8db259) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#adfb04764da5bbddb5b85276d0c9fa541) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#afd5053420e5863a234ccd03d771ae30d), [`EOCR::SetMinCharWidth`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a71e9914413f4266393f8ad2104a50187) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a4f2d6039d7ef7c774544968d8c3fe14a) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a809d442091df9247f9cb328ff4be6a7c), [`EOCR::SetMaxCharWidth`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#ae8c85378d1bf4c72f635e5f385a73bc9) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#af113b3f59d667f341ca75dea2afe4e27) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a3c2659cd76112c237cadad69c50a8958), [`EOCR::SetMinCharHeight`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a8c9c71eb4f8cc7a263a83df05435688b) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#ac48ce3acf8f95a17da6eb108f8cab67c) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a49d27d8b67d7ac584c3e664703d2f624), [`EOCR::SetMaxCharHeight`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#ad6961eb9742559bac8d9774438d522f3) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a9a76a053bd1d36f7b557c76d5a521a9c) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a0d286787de629f7ea653feb549b37ad7), [`EOCR::SetNoiseArea`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a9c843eb5c699fbdc02902d2b1997c293) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a8e4fcefd8150b3149eb9324260d846d9) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a427e91396a037097105de907350c44ca), [`EOCR::LearnPatterns`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a9bbe3e4a66c5bfdf6e6e483e91f8a20b) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#aa5480c7879c4201dbbeb823ebac69c07) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#aaea348719f5e861cd0bbd6c9f04deec1), [`EOCR::BuildObjects`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a7bfddae7675c34a7627a42a7d145363e) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e8d0e47ac44cbf40cc250acbbd8aabb) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#ab4e986a8c1aaecc44cb36400400861cf), [`EOCR::FindAllChars`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#af8b6658ddc702d538f599fc2d50f7d33) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#af9dc4be712674e3a8543d9b38860159b) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#afb0cd4050b95a06d2bee88438dfd0cdc), [`EOCR::Save`](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a1e9fb381a88d5041c30c289e1c247f44) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a803e31ec01e72186953f1172aa15e319) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a615994f48851354031ce15dc26ea0886)

## C#

```cs
using eVision;
```

```cs
// Image constructor
EImageBW8 srcImage = new EImageBW8();
// EOCR constructor
EOCR ocr = new EOCR();
// Text to be learned (all digits)
// Assuming the image contains this text
string text = "0123456789";
// ...
// Create a new font
ocr.NewFont(8, 11);
// Adjust the segmentation parameters
ocr.TextColor = EOCRColor.BlackOnWhite;
ocr.MinCharWidth = 15;
ocr.MaxCharWidth = 50;
ocr.MinCharHeight = 15;
ocr.MaxCharHeight = 75;
ocr.NoiseArea = 15;
// Segment the characters
ocr.BuildObjects(srcImage);
ocr.FindAllChars(srcImage);
// Learn the characters
ocr.LearnPatterns(srcImage, text, (int)EOCRClass.Digit);
// Save the font into a file
ocr.Save("myFont.ocr");
```

#### SEE ALSO
[`EOCR.NewFont`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e0002af73f6a1462a5a0fb41c8b795d) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a06855155687fbb8494daf1ac72a83b7e) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a879b41a49a25291afcd4f92d21f60635), [`EOCR.TextColor`](../../../../doxygen_cs/classeVision_1_1EOCR.html#adfb04764da5bbddb5b85276d0c9fa541) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a8b4497dd63a486909a397e7a388ca3a8) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#afd5053420e5863a234ccd03d771ae30d), [`EOCR.MinCharWidth`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a4f2d6039d7ef7c774544968d8c3fe14a) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a850741c3fca2626db9065a2cb5d90c1f) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a809d442091df9247f9cb328ff4be6a7c), [`EOCR.MaxCharWidth`](../../../../doxygen_cs/classeVision_1_1EOCR.html#af113b3f59d667f341ca75dea2afe4e27) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a6b2053fbff13aee81535c20474353c16) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a3c2659cd76112c237cadad69c50a8958), [`EOCR.MinCharHeight`](../../../../doxygen_cs/classeVision_1_1EOCR.html#ac48ce3acf8f95a17da6eb108f8cab67c) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a40e5cd4cc5916b533d3d87b7c69559a5) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a49d27d8b67d7ac584c3e664703d2f624), [`EOCR.MaxCharHeight`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a9a76a053bd1d36f7b557c76d5a521a9c) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#abaeab24cbbfa25658839e17dad805d5a) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a0d286787de629f7ea653feb549b37ad7), [`EOCR.NoiseArea`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a8e4fcefd8150b3149eb9324260d846d9) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#af9285dca3d790cf37d227e5e9ee6b51f) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a427e91396a037097105de907350c44ca), [`EOCR.LearnPatterns`](../../../../doxygen_cs/classeVision_1_1EOCR.html#aa5480c7879c4201dbbeb823ebac69c07) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a9bbe3e4a66c5bfdf6e6e483e91f8a20b) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#aaea348719f5e861cd0bbd6c9f04deec1), [`EOCR.BuildObjects`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e8d0e47ac44cbf40cc250acbbd8aabb) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a7bfddae7675c34a7627a42a7d145363e) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#ab4e986a8c1aaecc44cb36400400861cf), [`EOCR.FindAllChars`](../../../../doxygen_cs/classeVision_1_1EOCR.html#af9dc4be712674e3a8543d9b38860159b) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#af8b6658ddc702d538f599fc2d50f7d33) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#afb0cd4050b95a06d2bee88438dfd0cdc), [`EOCR.Save`](../../../../doxygen_cs/classeVision_1_1EOCR.html#a803e31ec01e72186953f1172aa15e319) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a1e9fb381a88d5041c30c289e1c247f44) [<sub>Python</sub>](../../../../doxygen_python/classeVision_1_1EOCR.html#a615994f48851354031ce15dc26ea0886)

## Python

```py
import eVision
# Image constructor
src_image = eVision.EImageBW8()
# EOCR constructor
ocr = eVision.EOCR()
# Text to be learned (all digits)
# Assuming the image contains this text
text = "0123456789"
# ...
# Create a new font
ocr.NewFont(8, 11)
# Adjust the segmentation parameters
ocr.TextColor = eVision.EOCRColor.BlackOnWhite
ocr.MinCharWidth = 15
ocr.MinCharWidth = 50
ocr.MinCharHeight = 15
ocr.MinCharHeight = 75
ocr.NoiseArea = 15
# Segment the characters
ocr.BuildObjects(src_image)
ocr.FindAllChars(src_image)
# Learn the characters
ocr.LearnPatterns(src_image, text, eVision.EOCRClass.Digit)
# Save the font into a file
ocr.Save("myFont.ocr")
```

#### SEE ALSO
[`EOCR.NewFont`](../../../../doxygen_python/classeVision_1_1EOCR.html#a879b41a49a25291afcd4f92d21f60635) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a06855155687fbb8494daf1ac72a83b7e) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e0002af73f6a1462a5a0fb41c8b795d), [`EOCR.TextColor`](../../../../doxygen_python/classeVision_1_1EOCR.html#afd5053420e5863a234ccd03d771ae30d) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a8b4497dd63a486909a397e7a388ca3a8) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#adfb04764da5bbddb5b85276d0c9fa541), [`EOCR.MinCharWidth`](../../../../doxygen_python/classeVision_1_1EOCR.html#a809d442091df9247f9cb328ff4be6a7c) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a850741c3fca2626db9065a2cb5d90c1f) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a4f2d6039d7ef7c774544968d8c3fe14a), [`EOCR.MaxCharWidth`](../../../../doxygen_python/classeVision_1_1EOCR.html#a3c2659cd76112c237cadad69c50a8958) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a6b2053fbff13aee81535c20474353c16) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#af113b3f59d667f341ca75dea2afe4e27), [`EOCR.MinCharHeight`](../../../../doxygen_python/classeVision_1_1EOCR.html#a49d27d8b67d7ac584c3e664703d2f624) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a40e5cd4cc5916b533d3d87b7c69559a5) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#ac48ce3acf8f95a17da6eb108f8cab67c), [`EOCR.MaxCharHeight`](../../../../doxygen_python/classeVision_1_1EOCR.html#a0d286787de629f7ea653feb549b37ad7) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#abaeab24cbbfa25658839e17dad805d5a) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a9a76a053bd1d36f7b557c76d5a521a9c), [`EOCR.NoiseArea`](../../../../doxygen_python/classeVision_1_1EOCR.html#a427e91396a037097105de907350c44ca) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#af9285dca3d790cf37d227e5e9ee6b51f) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a8e4fcefd8150b3149eb9324260d846d9), [`EOCR.LearnPatterns`](../../../../doxygen_python/classeVision_1_1EOCR.html#aaea348719f5e861cd0bbd6c9f04deec1) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a9bbe3e4a66c5bfdf6e6e483e91f8a20b) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#aa5480c7879c4201dbbeb823ebac69c07), [`EOCR.BuildObjects`](../../../../doxygen_python/classeVision_1_1EOCR.html#ab4e986a8c1aaecc44cb36400400861cf) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a7bfddae7675c34a7627a42a7d145363e) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a3e8d0e47ac44cbf40cc250acbbd8aabb), [`EOCR.FindAllChars`](../../../../doxygen_python/classeVision_1_1EOCR.html#afb0cd4050b95a06d2bee88438dfd0cdc) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#af8b6658ddc702d538f599fc2d50f7d33) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#af9dc4be712674e3a8543d9b38860159b), [`EOCR.Save`](../../../../doxygen_python/classeVision_1_1EOCR.html#a615994f48851354031ce15dc26ea0886) [<sub>C++</sub>](../../../../doxygen_cpp/classeVision_1_1EOCR.html#a1e9fb381a88d5041c30c289e1c247f44) [<sub>.NET</sub>](../../../../doxygen_cs/classeVision_1_1EOCR.html#a803e31ec01e72186953f1172aa15e319)
