There are different considerations to be taken into account when you want to improve recognition accuracy. Typically, they also have consequences for the processing speed.
Image Quality
This is one of the most important factors that influences accuracy.
- A resolution of 300 dpi or 400 dpi is best for recognition.
- Use image preprocessing to enhance the quality of the given image to get more accurate auto-zoning and recognition.
- Load grayscale or color images into the recognition engine without any conversion (ImGearRecReductionMode Enumeration.NO) and combine this with image preprocessing in order to get more accurate output.
- When the Asian Recognition module is in use, the ideal font size for Asian language text is 12 points, scanned at 300 dpi, resulting in characters with around 48 x 48 pixels. The minimum pixel count is about 30 x 30, that is 10.5 points at 300 dpi. For characters smaller than this, 400 dpi should be used.
Auto-Zoning Algorithm to Apply
If auto-zoning is needed, use ImGearRecDecompositionMethod Enumeration.STANDARD, the most accurate page parser available in the recognition engine. Applying the STANDARD algorithm results in better throughput in overall accuracy, though in some complex cases it might require significantly more time to complete.
If processing speed is also important, consider using the LEGACY algorithm.
Finally, use FAST when the processing speed has a higher priority than accuracy, and the image content of the originals is simple enough (e.g., good quality letters without graphics or tables). In this case, it is recommended that the Non-gridded table detection algorithm be disabled (see DecompDetectNongriddedTablesEnabled Property).
Correct RM-FM Choice
The most suitable filling method and recognition module should be specified, as described in Recognition Modules.
If more than one recognition module supports a given filling method, consider whether for your application it is better to specify the recognition module in your program rather than accept the setting selected by the recognition engine through the ImGearRecRecognitionModule Enumeration.AUTO option.
By choosing different combinations of the auto-zoning algorithm and specific recognition modules, 2-3 times faster recognition speed at the cost of increased error rate (1.5-2 times more errors) can be achieved.
For example, when speed is an issue, consider using OMNIFONT_MTX, OMNIFONT_FRX, OMNIFONT_MOR, or OMNIFONT_PLUS2W, instead of the default omnifont module OMNIFONT_PLUS3W.
Trade-off Settings
These are set at engine level, and determine how thorough the recognition should be, i.e., whether more time should be taken to try for higher accuracy. There are three possible values: ACCURATE, BALANCED, FAST, set using the ImGearRecRecognitionSettings.Tradeoff Property. For more details, see Specifications for the recognition modules.
Module Specific Settings
The behavior, and hence accuracy, of some recognition modules can be influenced by separate module-specific settings. These settings are accessed via the Modules Property of ImGearRecognition Class. The Modules Property provides access to ImGearRecModuleCollection Class, which provides the following properties to access module-specific settings:
- MOR, PLUS2W and PLUS3W modules: ImGearRecognition.Modules Property.MOR
For poor-quality fax output, the fax compensation ImGearRecMORSettings.IsFaxed Property can be used. - Asian Recognition module: ImGearRecognition.Modules Property.Asian
- To allow wide characters to be used for Latin embedded text detected with Asian language text, the ImGearRecAsianSettings.AllowFullWidthLatinCharacters property can be used.
- To allow vertical punctuation in Asian text recognition results, use the ImGearRecAsianSettings.AllowVerticalPunctuation property.
- To instruct the auto deskew pre-processing to ignore images with Asian text, use the ImGearRecAsianSettings.IgnoreAsianTextForDeskew property.
- To instruct the auto orientation pre-processing to ignore images with Asian text, use the ImGearRecAsianSettings.IgnoreAsianTextForRotation property.
- To use a greater recognizable character set with the Asian recognition module, use the ImGearRecAsianSettings.UseFullCharacterSet property. This property has no effect when the Korean language is set.
In the Recognition module specifications each module has its own section, Accuracy Issues.
Character Set
This determines, at zone level, which set of characters should be considered as valid. By eliminating characters that are known not to appear in the zone, accuracy can be improved. If non-validated character shapes are encountered in a zone, they are either replaced by the rejection symbol or forced to a similar-shaped validated character. A major component of the Character Set is the language choice. Setting the wrong language(s) and/or language dictionary (or leaving unneeded ones enabled) is likely to slow down recognition and reduce accuracy considerably. The steps for defining the Character Set are given (with examples) in a following section, Defining the Character Set.
The Checking Subsystem
This consists of any combination of the following checking tools:
- Spell checking (language-based checking)
- User dictionary based checking (with words, strings or character patterns)
- User-written checking routines
The Checking subsystem will find characters, words, or zone contents that do not match program-specified rules for that zone. It can be instructed either to only mark these occurrences, or be given permission to change them when it finds a sufficiently similar acceptable solution. See the section (Improving Accuracy with the Checking Subsystem) for examples.
Character Set limitation and the Checking subsystem (CSS) both influence accuracy, but in different ways. Both, either or none of them can be used; the integrator should decide which balance is best. Their effects, when used separately, can be summarized as follows:
- Limiting the Character Set: Recognition results outside the Character Set will not be used.
- CSS with changes: Recognition results outside the CSS rules are less likely; both non-CSS solutions and changed items will be flagged.
- CSS used without changing: Text appears as recognized, but non-CSS solutions will be flagged.
Limiting the Character Set gives the program the greatest decision power, using the checking subsystem to only flag errors is safest, but requires more post-processing outside the recognition engine to check all non-conforming cases.
A typical balance would be to impose broad restrictions by limiting the Character Set, e.g., specifying the permissible languages, but using the checking subsystem for detailed control over parts of the recognized text where it's important that the original data be recognized and passed for checking precisely as it was written (e.g., for an ID Code incorporating a check-digit function). This later checking should make it possible to determine whether any error is due to optical recognition errors or was originally invalid.