24
votes

What would you recommend for recognizing all characters from a screenshot? The screenshot is perfectly clear (only black text on a white background), also I can choose any standard font for the text (installed on Windows). I have tried some OCR ways (Tesseract and such), but it made mistakes in recognizing some characters (that baffled me, as the text is without slightest noise, and the fonts were some most common ones - Courier New, Fixedsys etc.), and I need it to be 100% accurate. Is there some library available for this specific purpose, some pattern recognition or something? or should I get the screenshot with some monospaced font, and iterate through the image moving to the right +font_size pixels and then comparing captured thing to in-memory representation of letters and number of same font in the same size? What would be the best approach to this problem? Thank you very much in advance.

UPDATE: I've finally managed to get 100% accuracy by training Tesseract with monospaced font (Courier New) in exact size that I'm screenshotting. Hope that helps someone in the future :)

5
OCR is never 100% accurate. It mainly depends on the quality of the image/document you are working with.Evan Mulawski

5 Answers

13
votes

Since this is the first result on Google for tesseract recognize screenshot, let me do bit of necromancy and add a much simpler solution.

Tesseract expects images at around 300 dpi or more and standard dpi for Windows is 96. Which means you need to rescale the image to 300%. After that, the results improve dramatically.

100%
1x scale
Result: Whal would you recommend for recognizing all characters from a screensnor 7

200%
2x scale
Result: What would you recommend for recognizing all chamcters from a screenth ?

300%
3x scale
Result: What would you recommend for recognizing all characters from a screenshot ?

Anything above 300% works just as well.

1
votes

I would be surprised if OCR would give so bad results on such a good quality input. Probably what you want to do is choose a font that has sharp edges, no anti-aliasing, bigger font size would also help.

Also, if acceptable, try the OCR font given in this SO question:

This should give you the best possible results - if this doesn't go 100%, then I don't know what will...

Don't know what you tried beside Tesseract, but if you did not, it might be worth trying some others. These seem to be updated recently (Tesseract was updated a year ago):

There are some online versions, too, such as:

that you can use to test a sample document. From this link:

it seems that you might need to go commercial to get what you want.

Hope this helps.

1
votes

I know you already solved your problem, but in case this helps someone else: Two issues I found when dealing with screenshots is that OCR engines are sensitive to the following: (1) resolution incorrectly set in image file headers, and (2) transparency issues (what looks like white background is actually marked transparent). For some reason these problems tend to occur often in screenshot images.

Also, aside from Tesseract, another possibility is to try the API at http://www.wisetrend.com/wisetrend_ocr_cloud.shtml based on the ABBYY OCR engine. (The advantage is that there's nothing to install/configure/etc to try it to make sure it will work on your images - just make an HTTP POST). Disclaimer: WiseTrend is my company's customer.

0
votes

Do you have the option to change text anti-aliasing on the OS level? Playing around with those settings (or even trying to turn it off) might give you better result with existing OCRs too.

0
votes

You can use Abby Fine Reader 12.0 for text extraction from PDF's and or Screenshot Images and directly save them into your desired file format.

See through: Abby Fine Reader 15 - Free Trial