Click here to Skip to main content
15,888,325 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi Gurus,

After a lots search on the internet for OCRs engines. I see there are many OCR providers.

Asprise
ABBY (Fine Reader)
FormXtra
Omnipage
vndocr
Imagescan của CADPRO.
VietOCR.Net
Tesseract
OCROpus
Tess4j
FREEOCR
GHPOCR
Cuneiform
GOCR/JOCR
Recogniform ICR
Recogniform OCR
iDRS 14 SDK
TOCR
CVISION
OmniPage
ExperVision
Top10 OCR
Simple OCR
DotImage
OpenOCR (Cuneiform)
Gamera
HOCR
Ocrad
ClaraOCR
IRIS ReadIRIS
A2IA
RecoStar

I wonder if there is a Common Interface that can work with as many as OCRs in the above list, and through that Common Interface we can easy to add or remove an OCR out of the program. I hope that the experts can give an advice.

Thank you and regards,
Doan Huynh
Posted
Updated 19-Jan-12 21:11pm
v2

I can't believe there is a common interface. I can try to explain why. Can you keep a secret? :-) After looking through several OCR source code, I got the impression that many teams can be very good is some specific fields of Applied Mathematics while having no idea about programming. Nevertheless, they do programming and do what they do. So, some teams have no enough culture to understand interfaces and other stuff. In such cases, the code is very much proprietary, integration with other software is ugly or intrusive, etc. For example, I was really disappointed with support of different languages and Unicode, it looks like authors just did not know how Unicode works. Again, my experience is very limited and based only on Open Source codes. I don't want to finger-point to any product at this time.

(By the way, I found some very mature works on CodeProject, but all I found was not complete to make a working application. Please find the reference in my past answers:
OCR Software[^],
Apply online handwriting on neural network[^], look at 7 CodeProject article references here.)

—SA
 
Share this answer
 
Comments
JackDingler 20-Jan-12 17:14pm    
I agree, there is no reason to think that there would be a common interface.

You'll need to write one, if you need one.
doan0383 1-Feb-12 2:30am    
Thank you for your good reply.
I expect the existing of such an common interface because I see in the Scanning field, almost Scanner must implement following some common interfaces ex,TWAIN driver interface ... But reality is still reality.I dream in future they seat together and they will follow the same specification.
Thanks again.
20 years ago I helped develop one of the early OCR technologies into a commercially viable product. The company eventually merged with the main competitor at the time and they produced OmniPage.

I can tell you two things:

(1) There was no standardized interface at the time and there has never been any economic incentive to create one.

(2) Almost every OCR program has to be able to take an image as input and provide text as output. So the basic interface is exactly the same for all OCR at a high level of description.

Early OCR expected black and white images at 300 dpi (pretty standard for scanners of the time) or 200 dpi ("high quality fax") and gave you ascii (or unicode) text out. As memory and processing speeds increased, the accepted higher resolution and grey-scale and eventually color images.

I think you can get away with defining your interface as accepting an image (preferrably not jpeg as the compression is not good for text) and yeilding text.

Write all your higher level logic to that interface, and then beneath that interface you may need to add code to convert image formats and text representations to and from a specific OCR engine.

As a general rule, I'd recommend you at least include OmniPage as one of your OCR engines -- they have an incredibly vast proprietary training set that they train their OCR with. Very few of the newcomers (less than 10 years old) will have had the resources or the time to compile a training set anywhere near as close to what they have. In the world of pattern recognition, the size and quality of the training set pretty much trumps the algorithm in determining the accuracy of the result. If speed and space are more important than accuracy, then the algorithm is key.
 
Share this answer
 
Comments
doan0383 1-Feb-12 2:33am    
Thank you very much for you reply.I agree with your suggestion architecture.
Regards,

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900