It's not THAT impressive. ocrad.js is just Tesseract, an ancient OCR engine from Google (EDIT: originally from HP).
For bounded-length sequences of small alphabet sizes (e.g. digits 0-9 only), it's possible to use a convolutional neural network to get human-level 98+% accuracy (see Google's street view house numbers paper).
Even for general purpose OCR, I personally built an OCR engine from scratch in 2013 using convolutional neural networks and cuDNN that readily beat Tesseract and was competitive with ABBYY (both use ad hoc methods). Character-level segmentation and classification (with distractors) can get you pretty far with enough training data.
It did take me 6 months of time though, and I had some help along the way...
"Despite being designed over 20 years ago, the current Tesseract classifier is incredibly difficult to beat with so-called modern methods. (Without changing features or upping the number of training fonts) Why?"
EDIT: It sounds like they were benchmarking a very constrained problem as well (only a single font, with certain features). One disadvantage with Tesseract is that it has to be trained by the user for specific fonts, my OCR was generalist (general shape-based character classification is practically designed for convolutional neural networks).
I'd love to give more details in a blog post soon.
14 comments
[ 2.8 ms ] story [ 38.6 ms ] thread[1] https://github.com/antimatter15/ocrad.js
For bounded-length sequences of small alphabet sizes (e.g. digits 0-9 only), it's possible to use a convolutional neural network to get human-level 98+% accuracy (see Google's street view house numbers paper).
Even for general purpose OCR, I personally built an OCR engine from scratch in 2013 using convolutional neural networks and cuDNN that readily beat Tesseract and was competitive with ABBYY (both use ad hoc methods). Character-level segmentation and classification (with distractors) can get you pretty far with enough training data.
It did take me 6 months of time though, and I had some help along the way...
https://github.com/tesseract-ocr/docs/blob/master/das_tutori...
"Despite being designed over 20 years ago, the current Tesseract classifier is incredibly difficult to beat with so-called modern methods. (Without changing features or upping the number of training fonts) Why?"
EDIT: It sounds like they were benchmarking a very constrained problem as well (only a single font, with certain features). One disadvantage with Tesseract is that it has to be trained by the user for specific fonts, my OCR was generalist (general shape-based character classification is practically designed for convolutional neural networks).
I'd love to give more details in a blog post soon.
"The latest stable version is 3.04.01, released in February 2016."
Was version 4 ever released?