The LEADTOOLS OMR (Optical Mark Recognition) Module extends the functionality of LEADTOOLS SDKs by providing methods and callbacks for easily incorporating fast, automated, and accurate optical mark recognition into your application. Optical Mark Recognition is used in surveys, polls, academic exams and official applications, to recognize the bubbles that applicants fill in to indicate their selections. Supported marks include tick marks, X's, lines, checkmarks, and scribbles. Supported shapes (or frames) include boxes, circles and ellipses.
The OMR features are included as an add-on module to extend the functionality of the LEADTOOLS OCR engines by providing methods and callbacks for easily incorporating the OMR engine into your applications.
For background and full details, see:
The printed frame should at least be 50 x 50 pixels to be recognized properly. Also the printed frame needs to be noticeable (This is easily accomplished by setting the scanner brightness.)
OMR is automated, very fast and accurate. It also has multiple options for different types of applications.
OMR options include "Frame detection options" and "Mark recognition sensitivity". For more information refer to the L_OcrZoneManager_SetOMROptions structure.
"Mark recognition sensitivity" specifies how sensitive OMR will be to filling marks. (Highest, High, Low and Lowest). For example: if the applicant filled the frames with small ticks then the highest mark recognition sensitivity should be set. But if the application or exam requires the applicant to fill the frame completely, then the lowest mark recognition sensitivity can be set.
Also if the printed frames are empty and applicants are supposed to fill them using simple marks, then it is best to use the highest mark recognition sensitivity. (See the figure below)
If the printed frames contain letters or numbers and applicants are supposed to fill them completely, then it is best to use the lowest mark recognition sensitivity. (See the figure below)
Some types of OMR paper are designed to be used with specific types of hardware. Usually these types contain bubbles with letters or numbers. The characters and bubbles are printed in red or light gray and allow the hardware to recognize the color of such areas. As a result, when the paper is scanned, the bubbles and characters will drop out. This leaves only the filled marks visible. See the following figure:
Although it is not recommended to use hardware-specific paper, the following tips help ensure obtaining the most accurate results when using such types of paper.
To make bubbles and characters scanning clearer, the scanner brightness should be set to High. This will cause the lighter color of the bubbles and characters to drop out. See the following figure:
Another possibility is to set the scanner brightness to low. See figure below:
✎ NOTE
Do NOT use the auto-brightness settings when scanning hardware-specific paper. This will damage the frames (bubbles) and make them vague. See the following figure:
There is no support for auto-recognizing OMR fields currently. Instead, you should do the following:
Add an L_OcrZone object to the page zones list by calling either L_OcrPage_AddZone or L_OcrPage_InsertZone. Set the following members of the L_OcrZone structure:
L_OcrZone.ZoneType to L_OcrZoneType_OMR
L_OcrZone.Bounds to the rectangle surrounding the zone in page coordinates
Repeat for every OMR on the page.
Perform OCR recognition on the page using L_OcrPage_Recognize.
After the recognition process is complete, get the recognized characters by calling L_OcrPage_GetRecognizedCharacters. For each OMR zone added, the recognized characters will contain one item (L_OcrCharacter) with the following properties:
L_OcrCharacter.Code - Will contain the current OMR character used for "filled" and "unfilled" values as set by L_OcrOMROptions.StateRecognitionCharacters. Default values are '1' for filled and '0' for unfilled.
L_OcrCharacter.Confidence - Will be a number between 0 and 100 (where 100 is maximum confidence) that indicate the after-recognition confidence the OCR engine has in the accuracy of the state.
You can also use the L_OcrOMROptions structure to control how the LEADTOOLS OCR engine performs OMR recognition. With this structure, you can:
Change the frame detection method by calling the L_OcrOMROptions.FrameDetectionMethod. Frames stand for the checkboxes that may exist around OMR fields.
Change the sensitivity of the OMR detection engine by calling L_OcrOMROptions.Sensitivity.
Change the characters used as replacements for unfilled and filled OMR marks in the output document (for example, in a PDF file) by calling L_OcrOMROptions.StateRecognitionCharacters.
After setting all OMR options via the L_OcrOMROptions structure, call the L_OcrZoneManager_SetOMROptions method to set these options into the engine.
To use OMR in LEADTOOLS, you need a special key to unlock the OMR capabilities, for more information, refer to Unlocking Special LEAD Features.
For an example on using OMR in LEADTOOLS, refer to L_OcrZoneManager_SetOMROptions.