It does not seem to recognise a single character in isolation. Even when I make it easier
y1 = ImageCrop[
ImageCrop[img1, {100, 225}, {Left, Bottom}], {20, 25}, {Left, Top}];
y2 = ImageResize[y1, Scaled[10]];
y3 = Sharpen[y2];
y4 = Binarize[y3]
We still have that
TextRecognize@y4
gives ""
. But there is hope, see the next section.
Recognizing multiple random characters
TextRecognize
can find characters that do not make up words (I'm not sure if sentences matter here). A key element here is that the characters are regularly spaced. Let's get an example from the docs
wolframImg =
ImageCrop[
ImageCrop[
ImageResize[
Import[
"http://reference.wolfram.com/language/ref/Files/TextRecognize.\
en/I_20.gif"]
,
Scaled[5]
]
,
{434, 240}
,
{Left, Bottom}
]
,
{408, Full}
,
{Right, Top}
]
![enter image description here][2]
TextRecognize
works reasonably well on this, as advertised.
TextRecognize[wolframImg]
ZSI-IC
HSKRN
CHKRVD
TextRecognize
actually often gives quite a few false positives, when it is confident about a lot of (other) characters. This gave me the (silly) idea to compose this image with characters from your example.
y4Copies = Table[y4, {2}, {5}];
y5 = ImageAssemble[y4Copies];
y6 = ImageResize[y5, First@ImageDimensions@wolframImg];
compoImg = ImageAssemble[{{y6}, {wolframImg}}]
Now we can do
TextRecognize[compoImg]
which gives
EEEEE
EEEEE
ZSHC
HSKRN
CHKRVD
TextRecognize
works is that it looks for groups of letters and guesses what the word is. So it's better for complete sentences, it's not good for individual letters. In this image especially the letters have a spatial arrangementTextRecognize
cannot make sense of, so you are better off usingImageCorrelate
and some sample letters (there are other Q&As about this). $\endgroup$TextRecognize
being used like this before, for example here, but it's just not very good at it. For varying spatial distributions it is a much safer bet to use image correlation. $\endgroup$