Still, I think it requires context. I mean, given:
iprmoatnt
one doesn't think of important. I know I think of moats. and IP addresses.
But that'd be the first level of recognition... Hmmm. Assigning each word two values. One: length of the word. Two: sum of each character, as a number. Put all the words into a 3D matrix.. rows as lengths of the word, columns as the sum. Then from there, match.
So if we could teach our OCR (and voice recognition systems) grammar, we'd get better results. But that would require the systems to have knowledge of each word. That'd be the second level of recognition.
The third level would be common sense. That's going to be hard, considering how little of it's around. But just so it doesn't come up with "That tree humped." or something equally absurd. Of course, it depends on context... so...