do_ocr_word_cnn — Classify a related group of characters with an CNN-based OCR classifier.
do_ocr_word_cnn works like
as it computes the best class for each of the characters given by the
Character and the gray values
Image with the
OCRHandle, and returns the classes in
and the corresponding confidences (probabilities) of the classes
In contrast to
treats the group of characters as an entity which yields a
by concatenating the class names for each character region. This allows
to restrict the allowed classification results on a textual level by
Expression describing the expected word.
Expression may restrict the word to belong to a predefined
lexicon created using
or by specifying the name of the lexicon in angular brackets as in
'<mylexicon>'. If the
Expression is of any other form, it
is interpreted as a regular expression with the same syntax as specified
tuple_regexp_match. Note that you will usually want to use an
expression of the form '^...$' when using
variable quantifiers like '*', to ensure that the entire word is used in the
expression. Also note that in contrast to
do_ocr_word_cnn does not support passing extra options in
an expression tuple.
If the word derived from the best class for each character does not match
do_ocr_word_cnn attempts to correct it by
NumAlternatives best classes for each character.
The alternatives used are identical to those returned by
do_ocr_single_class_cnn for a single character. It does so by
testing all possible corrections for which the classification result
is changed for at most
NumCorrections character regions.
NumCorrections affect the
complexity of the algorithm, so that in some cases internal restrictions
are made. See the section 'Complexity' below for further information.
In case the
Expression is a lexicon and the above procedure did
not yield a result, the most similar word in the lexicon is returned as long
as it requires less than
NumCorrections edit operations for the
The resulting word is graded by a
Score between 0.0 (no correction
found) and 1.0 (original word correct). The
Score is lowered by
adding a penalty according to the number of corrected characters and another
(minor) penalty depending on how many classes with higher confidences have
been ignored in order to match the
num_corr being the actual number of applied corrections and
num_alt the total number of discarded alternatives.
Note that this is a combinatorial score which does not reflect the
Confidence of the best
A string of the number
displayed as '\0x1A') in
Class signifies that the region has been classified as rejection
Characters to be recognized.
→object (byte / uint2)
Gray values of the characters.
Handle of the OCR classifier.
Expression describing the allowed word structure.
Number of classes per character considered for the internal word correction.
Default value: 3
Suggested values: 3, 4, 5
Typical range of values:
Maximum number of corrected characters.
Default value: 2
Suggested values: 1, 2, 3, 4, 5
Typical range of values:
Result of classifying the characters with the CNN.
Number of elements: Class == Character
Confidence of the class of the characters.
Number of elements: Confidence == Character
Word text after classification and correction.
Measure of similarity between corrected word and uncorrected classification results.
The complexity of checking all possible corrections is of magnitude , where a is the number of alternatives, n is the number of character regions, and c is the number of allowed corrections. However, to guard against a near-infinite loop in case of large n, c is internally clipped to 5, 3, or 1 if a*n >= 30, 60, or 90, respectively.
If the parameters are valid, the operator
do_ocr_word_cnn returns the value 2 (H_MSG_TRUE). If
necessary, an exception is raised.