For the sake of concreteness: let's suppose that the word "OCR" refers to any OCR system build on an R-CNN architecture. Similarly, in aims of simplicity, let's declare that we are interested in reading digits between 0 and 100.

Question: How should I construct a dataset (given the aforementioned goal and architecture) ?

My understanding is that I need to collect images of all the digits from 1 to 100 and label them with its corresponding digit. Is this premise correct?

My struggle is that I can't fully understand how this seemingly tedious procedure is generalized to OCR that read more general types of characters (language-characters for example or if I generalize the problem to detect the numbers from 0 to $10^{10}$).

Thanks in advance!


1 Answer 1


OCR used to recognize letters uses a different training dataset than OCR for digits. One that contains, well, letters.

Similarly, if you have to recognize a number with a lot of digits, you simply need to recognize each one of them. You don't actually train (most times) with numbers up to a hundred, you only train 0-9.

Generalization in such models refers to how well the model can detect your handwritten a if it was trained on my handwritten a, etc. It can't possibly recognize something as an "a" when all it has seen is 0-9.

Edit: If you are mostly worried about the actual construction of the labeled dataset (finding images and labeling them), yes it is a very tedious process. But someone (a human) has to teach the machine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.