OCR character recoginition advice.

Started by
7 comments, last by wease 18 years, 6 months ago
Hi I'm writing a program which requires that I take hand written numbers and convert them to characters. I think this can be achieved pretty acurately since a: I'm only dealing with 10 characters that are not that similar b: Numbers can be drawn on a grid so sizes should be similiar My handwritten numbers are going to be loaded as am image file (so it is not possible to get the strokes as they are occuring). I've found a bit of code using neural networks and I would rather not reinvent the wheel for this. I don't know if neural networks is the best for my situation though. I am looking for a simple way to do this and would love to just use some free code if it was available. I really appreciate any help or advice on this. thanks so much in advance
Advertisement
Neural networks have been used to do this and it works quite well.

Some numbers I heard: from ~2000 test images a NN (trained on a different set of ~7000 images) recognized ~94% correct, while a human recognized ~97%. Ofcourse other, more sophisticated algorithms should be able to outperform NNs (for example Support Vector Machines got ~96%).

I think your problem is common enough that you could even [GOOGLE] to find useful training data for your NN.
___________________________Buggrit, millennium hand and shrimp!
what is the simplest to implement? NN?
Probably a Nearest Neighbor Classifier.
I think Neural Networks are easy to get up and running, but can take a lot of time to fine tune. I don't really know about other methods.
___________________________Buggrit, millennium hand and shrimp!
Probably there are different transforms (example: wavelets ) usefull to resolve the problem; I think that this area is not well explored yet.
It might be worth exporing also Kohonen self-organizing maps. I think they suits your proublem pretty well.
Thanks everyone for the input. I've been researching this topic for a few days and have tried looking things up for your ideas. Here are my thoughts

transforms: doing different transforms would be a fun side project but I need an established method that I can get up and running relatively quite. I don't really have time right now to spend on research

Kohonen self-organizing maps: This seems similiar to some NN articles I have found. There is nothing specifically on OCR but it seems like some of the principles may be appicable

Nearest Neighbour: Couldn't find to much information on this

various NN: Seems to be the most common solution. Training might be annoying but I have found code that seems to automate it.


Final thoughts. Even with a little research, I am still very green on the subject so any other thoughts are welcome
Nearest Neighbour:
Take n samples (e.g. pictures of letters) a_1..a_n and classify them correctly. Define a distance metric d(p,q) (e.g. the number of pixels in p that differ from the corresponding pixels in q). Now to classify a new sample x, find the i that minimizes d(x,a_i). Speed it up with whatever data structure you like best.
___________________________Buggrit, millennium hand and shrimp!
ok, thank you everyone for responding. I have done more research, looked at a bunch of source code, and come to the conclusion that I do not want to reinvent the wheel or spend time doing OCR so I have the following proposal to anyone who feels competent enough to take on the challenge.

First, what I need is an OCR that can recognize hand written numbers. The numbers will be in separate boxes however they will vary due to different peoples' handwriting styles. I would like to be able to have some sort of class which contains a function that I can pass a bmp of the handwritten number to. The function should return an array which contains the percentage accuracy for each number. This seems like it would be a simple enough interface for me to work with and all the OCR stuff could happen behinds the scenes. Is this possible? Can I get accurate results? I figure since I am only dealing with 10 numbers and no letters, it might be pretty accurate.

I am willing to pay for this service. I do not have a lot of money right now but I can offer something if you believe this is possible. Furthermore, since I am planning on developing a product, I might be able to offer a percentage of the sales for a specified time period up to a maximum amount.

Let me now what you think and I will consider this more seriously.

jw970170@yahoo.com

This topic is closed to new replies.

Advertisement