I recently evaluated three vendors of OCR technology for a C# .NET desktop app. Basically the software needed to accurately read and report the results of scanned “bubble” tests – the kind that you took as a kid for your Iowa tests (yes I’m from the midwest) and SAT’s. In addition to reading bubbles, the software needed to accurately read barcodes, OCR or printed characters (the test takers name) and ICR or hand-written characters (for hand-written answers).
The vendors that I evaluated were as follows:
All three of these vendors have huge software packages. I was impressed by the range of features their sales reps described. Demos worked like a charm. The sales teams were friendly and eager.
Unfortunately, problems arose as we delved down into the details. It seems that every vendor uses a set of cherry-picked forms to put on a good show, but if you commit to a format before picking a vendor, you could be in real trouble.
I started off with Leadtools. These guys have been in the business forever, so I expected great things from them. Unfortunately, I found that their software had serious problems when it came to page alignment with our forms. In addition, ICR barely worked (they use a third party engine which they do not control). In terms of client attention, support would take a couple days to get back to me on a regular basis, and in general it didn’t seem like they had a thorough understanding of the software. It was always “I’ll need to check with the engineers about that”, which meant another two day delay. After a month (!) of back and forths it became apparent that we needed to look for a backup vendor.
In general, I was displeased with the Leadtools sample code, as well as with their API. The object structure was convoluted, the naming was incomprehensible, and the documentation was poor. The more I dug in, the more disappointed and frustrated I became.
While we were battling out the second month with Leadtools, we introduced two more vendors, Pegasus Accusoft and ABBYY. I didn’t give Accusoft a lot of attention, to be honest. I found their API to be messy and ill-organized, probably even worse than the Leadtools code. ABBYY, by comparison, had great documentation, a clear, well-organized API, and a very responsive and helpful support staff.
The more I worked with ABBYY to get our problems ironed out, the more I was impressed with their company. I kid you not, these guys were basically writing code for me. Whenever their existing samples didn’t cover a topic, they would prepare a special sample for my use (and for future customers with the same problem). Smart!
The ABBYY FineReader Engine 9.0 software fell short of in two places, but the support team was creative in coming up with solutions:
Basically, page alignment was tricky for us because of the way our forms were built. To combat this, ABBYY asked us to anchor off some text in the upper left and lower right corners of the form. By comparing to our master form, we could determine X and Y shift and scale factors, and thereby know the coordinates of recognition zones on the page. This solution worked very well.
The software had trouble picking up the filled bubble marks, because our forms had light gray letters (“A”, “B”, “C”, etc) within the confines of each bubble. ABBYY helped us to try several solutions, but eventually they gave us some code which detected a filled bubble based on the black pixel count within the recognition zone. This solution worked very well and boosted our accuracy to well over 99%.
Overall, I would highly recommend ABBYY and will definitely go to them if I have a need in the future. The API was a dream to use – naming was clear and there was a lot of thought put into the object hierarchy.
Several months after the project was completed, I received an email from Leadtools indicating that they had just made some enhancements that could help with our “issue”. Too little too late.