I am trying to develop an iPhone application for children which will be able to draw characters on screen with touch and I want to know how to match the character drawn with
Wow, this sounds like a tough task. One possibility that comes to my mind would be to use a support vector machine.
1.) Generate an image of the drawing and "vectorize" it by attaching vectors to the path the user has drawn.
2.) You need support vectors to compare. What i would do is, implement a "training application". Let some kids draw (eg. 10 times an A, 10 times a B, aso...), put the vectors in a database and use them as support vectors.
3.) You need a rating algorithm which rates the user drawing by comparing it to the support vectors (this might be the most interesting part of it). I could think of measuring the distances of the support vectors start and end- points to the drawn vectors. The svm with the lowest distance is the letter you take. Then you might introduce a distance which is the "border", and take all user drawings above this border as unrecognized.
A second approach might be that you generate images with the Letters (eg. white background and black letter (non- anti aliased)). You generate again an image of the user drawing and resize it to the image to compare with, trying to "overlap" it exactly. Then you count the black pixels that matches in the two images and take the letter with the most matchings.
But, since i implemented something similar, i can tell that the svm approach is more satisfying since you can add support vectors if the result is not good enough. The quintessence is for sure your rating algorithm.
Anyhow sounds like a couple of weeks of work.
EDIT: Since this an interesting field i did some research and found a thesis about handwriting recognition. Have a look on this: http://risujin.org/cellwriter/. It basically describes the svm approach i mentioned and gives some algorithms that might help you.