image provider

Screen Capture OCR


Disclaimer

This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.

This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.

Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.

Please do not email me about this project without reading the disclaimer above.

There are some excellent screen capture programs such as FastStone that capture a bit map image of a region of the screen. However, they don’t give you the text just the image bits. You might ask, why not just use copy/paste? Because: Why not just use bit map captures?

Suggested Implementation

The program works much like a bit map image capture, except that you have the option of collecting just the text in some window. You might implement this in Java in a platform independent way or in Windows using tools to extract text data.

Your algorithm of last resort works roughly like this. You grab an image of the region to analyse. You find a single isolated letter. You measure its size. You then compare it bitwise with generated images from the various fonts installed on the machine looking for an exact match. Unlike regular OCR (Optical Character Recognition) you don’t have to deal with almost matches. You might be able to compute something analogous to a hashCode or F.B.I. fingerprint code to speed finding an exact match, e.g. measurements of the lowest and highest point taken several times across the letter. You coud even use a conventional hashCode like an Adler digest.

For the next letter to the right, you first try the same font, same font bold, same font italic of the correct geometry. If you scale each letter to the same height before matching, you can simplify the program of matching different sizes. One complication is font smoothing. You may need to match both anti-aliased and plain versions of a font. A pure Java implementation would not be able to recognise the fonts installed on the OS (Operating System) but not accessible to Java. You might give it some help by limiting the possible fonts a sizes to consider.

See the source code for Masker to see how you could compute bit maps for the exemplar letters.

You might even find somebody has solved the OCR problem for you already. Have a look at some of the OCR programs such as Nuance TextBridge, (née Xerox Textbridge later ScanSoft Textbridge) or Nuance Omnipage to see if they can accept bitmap images and if they can be integrated to be controlled by exec.

Masker: contains Java source to go in other direction, from text to bitmap
Optical Character Recognition

This page is posted
on the web at:

http://mindprod.com/project/screencapture.html

Optional Replicator mirror
of mindprod.com
on local hard disk J:

J:\mindprod\project\screencapture.html
Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

IP:[65.110.21.43]
Your face IP:[54.92.135.47]
You are visitor number