We are working on an android application that involves free hand character recognition.
The application requires to student to draw the free hand image of an alphabet on the android screen,and the application process the image drawn and returns the accuracy of the alphabet written.
We are considering two options
a. Using tesseract.
b. Using our own algorithm on which we are still working
Problems
a. Tesseract is not at all helping in recognizing free hand characters.Any pointers on how to train tesseract for the same will be highly appreciated.
b. None of our algorithm are working to our expectation.
Tesseract is actually the wrong approach for recognizing characters written to the screen because it needlessly discards some very valuable info: how the image was originally drawn. How it breaks down into strokes, the order / direction of each stroke, etc - Tesseract has to spend a tremendous amount of time trying to figure out the underlying structure of each character when your software already knows it.
What you want is an actual "handwriting recognition" library, not just an OCR library like Tesseract; you specifically want an "online" handwriting recognition library, "online" meaning that you can capture the actual sequence of points that the user drew to the screen. There are a number of open-source libraries available for this, for example Unipen and LipiTk.
You might want to check out the built-in support for gesture recognition and training tools:
http://developer.android.com/reference/android/gesture/package-summary.html
They offer a pluggable overlay to detect and recognize gestures using a "dictionary" of predefined shapes. Its not automatic like OCR and requires training, but at this point (its been available since Android 1.6) there might be free or commercial handwriting gesture dictionaries available.