Name
do_ocr_word_mlpdo_ocr_word_mlpDoOcrWordMlpdo_ocr_word_mlpDoOcrWordMlpDoOcrWordMlp — Classify a related group of characters with an OCR classifier.
Herror do_ocr_word_mlp(const Hobject Character, const Hobject Image, const Hlong OCRHandle, const char* Expression, const Hlong NumAlternatives, const Hlong NumCorrections, char* Class, double* Confidence, char* Word, double* Score)
Herror T_do_ocr_word_mlp(const Hobject Character, const Hobject Image, const Htuple OCRHandle, const Htuple Expression, const Htuple NumAlternatives, const Htuple NumCorrections, Htuple* Class, Htuple* Confidence, Htuple* Word, Htuple* Score)
Herror do_ocr_word_mlp(Hobject Character, Hobject Image, const HTuple& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, char* Class, double* Confidence, char* Word, double* Score)
Herror do_ocr_word_mlp(Hobject Character, Hobject Image, const HTuple& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Class, HTuple* Confidence, HTuple* Word, HTuple* Score)
HTuple HRegion::DoOcrWordMlp(const HImage& Image, const HOCRMlp& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, double* Confidence, char* Word, double* Score) const
HTuple HRegionArray::DoOcrWordMlp(const HImage& Image, const HOCRMlp& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Confidence, HTuple* Word, HTuple* Score) const
HTuple HOCRMlp::DoOcrWordMlp(const HRegionArray& Character, const HImage& Image, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Confidence, HTuple* Word, HTuple* Score) const
void DoOcrWordMlp(const HObject& Character, const HObject& Image, const HTuple& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Class, HTuple* Confidence, HTuple* Word, HTuple* Score)
HTuple HRegion::DoOcrWordMlp(const HImage& Image, const HOCRMlp& OCRHandle, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, HTuple* Confidence, HString* Word, double* Score) const
HString HRegion::DoOcrWordMlp(const HImage& Image, const HOCRMlp& OCRHandle, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const
HString HRegion::DoOcrWordMlp(const HImage& Image, const HOCRMlp& OCRHandle, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const
HTuple HOCRMlp::DoOcrWordMlp(const HRegion& Character, const HImage& Image, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, HTuple* Confidence, HString* Word, double* Score) const
HString HOCRMlp::DoOcrWordMlp(const HRegion& Character, const HImage& Image, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const
HString HOCRMlp::DoOcrWordMlp(const HRegion& Character, const HImage& Image, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const
void HOperatorSetX.DoOcrWordMlp(
[in] IHUntypedObjectX* Character, [in] IHUntypedObjectX* Image, [in] VARIANT OCRHandle, [in] VARIANT Expression, [in] VARIANT NumAlternatives, [in] VARIANT NumCorrections, [out] VARIANT* Class, [out] VARIANT* Confidence, [out] VARIANT* Word, [out] VARIANT* Score)
VARIANT HRegionX.DoOcrWordMlp(
[in] IHImageX* Image, [in] IHOCRMlpX* OCRHandle, [in] BSTR Expression, [in] Hlong NumAlternatives, [in] Hlong NumCorrections, [out] VARIANT* Confidence, [out] BSTR* Word, [out] double* Score)
VARIANT HOCRMlpX.DoOcrWordMlp(
[in] IHRegionX* Character, [in] IHImageX* Image, [in] BSTR Expression, [in] Hlong NumAlternatives, [in] Hlong NumCorrections, [out] VARIANT* Confidence, [out] BSTR* Word, [out] double* Score)
static void HOperatorSet.DoOcrWordMlp(HObject character, HObject image, HTuple OCRHandle, HTuple expression, HTuple numAlternatives, HTuple numCorrections, out HTuple classVal, out HTuple confidence, out HTuple word, out HTuple score)
HTuple HRegion.DoOcrWordMlp(HImage image, HOCRMlp OCRHandle, string expression, int numAlternatives, int numCorrections, out HTuple confidence, out string word, out double score)
string HRegion.DoOcrWordMlp(HImage image, HOCRMlp OCRHandle, string expression, int numAlternatives, int numCorrections, out double confidence, out string word, out double score)
HTuple HOCRMlp.DoOcrWordMlp(HRegion character, HImage image, string expression, int numAlternatives, int numCorrections, out HTuple confidence, out string word, out double score)
string HOCRMlp.DoOcrWordMlp(HRegion character, HImage image, string expression, int numAlternatives, int numCorrections, out double confidence, out string word, out double score)
do_ocr_word_mlpdo_ocr_word_mlpDoOcrWordMlpdo_ocr_word_mlpDoOcrWordMlpDoOcrWordMlp works like do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp insofar
as it computes the best class for each of the characters given by the
regions CharacterCharacterCharacterCharacterCharactercharacter and the gray values ImageImageImageImageImageimage with the
OCR classifier OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleOCRHandle, and returns the classes in ClassClassClassClassClassclassVal
and the corresponding confidences (probabilities) of the classes
in ConfidenceConfidenceConfidenceConfidenceConfidenceconfidence.
In contrast to do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp, do_ocr_word_mlpdo_ocr_word_mlpDoOcrWordMlpdo_ocr_word_mlpDoOcrWordMlpDoOcrWordMlp
treats the group of characters as an entity which yields a WordWordWordWordWordword
by concatenating the class names for each character region. This allows
to restrict the allowed classification results on a textual level by
specifying an ExpressionExpressionExpressionExpressionExpressionexpression describing the expected word.
The ExpressionExpressionExpressionExpressionExpressionexpression may restrict the word to belong to a predefined
lexicon created using create_lexiconcreate_lexiconCreateLexiconcreate_lexiconCreateLexiconCreateLexicon or import_lexiconimport_lexiconImportLexiconimport_lexiconImportLexiconImportLexicon,
by specifying the name of the lexicon in angular
brackets as in '<mylexicon>'"<mylexicon>""<mylexicon>""<mylexicon>""<mylexicon>""<mylexicon>". If the ExpressionExpressionExpressionExpressionExpressionexpression is of
any other form, it is interpreted as a regular expression with the same
syntax as specified for tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch. 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
tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatch, do_ocr_word_mlpdo_ocr_word_mlpDoOcrWordMlpdo_ocr_word_mlpDoOcrWordMlpDoOcrWordMlp does not
support passing extra options in an expression tuple.
If the word derived from the best class for each character does not match
the ExpressionExpressionExpressionExpressionExpressionexpression, do_ocr_word_mlpdo_ocr_word_mlpDoOcrWordMlpdo_ocr_word_mlpDoOcrWordMlpDoOcrWordMlp attempts to correct it by
considering the NumAlternativesNumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternatives best classes for each character.
The alternatives used are identical to those
returned by do_ocr_single_class_mlpdo_ocr_single_class_mlpDoOcrSingleClassMlpdo_ocr_single_class_mlpDoOcrSingleClassMlpDoOcrSingleClassMlp for a single character. It does
so by testing all possible corrections for which the classification result
is changed for at most NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections character regions.
In case the ExpressionExpressionExpressionExpressionExpressionexpression 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 NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections edit operations for the
correction (see suggest_lexiconsuggest_lexiconSuggestLexiconsuggest_lexiconSuggestLexiconSuggestLexicon).
The resulting word is graded by a ScoreScoreScoreScoreScorescore between 0.0 (no correction
found) and 1.0 (original word correct), which is dominated by the number of
corrected characters but also adds a minor penalty for ignoring the second
best class or even all best classes (in case of lexica). Note that this
is a combinatorial score which does not reflect the original
ConfidenceConfidenceConfidenceConfidenceConfidenceconfidence of the best ClassClassClassClassClassclassVal.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Characters to be recognized.
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: 1
≤
NumAlternatives
NumAlternatives
NumAlternatives
NumAlternatives
NumAlternatives
numAlternatives
Maximum number of corrected characters.
Default value: 2
Suggested values: 1, 2, 3, 4, 5
Typical range of values: 0
≤
NumCorrections
NumCorrections
NumCorrections
NumCorrections
NumCorrections
numCorrections
Result of classifying the characters with the
MLP.
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
O((n*a)^min(c,n)),
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_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp returns the value 2 (H_MSG_TRUE). If
necessary, an exception is raised.
trainf_ocr_class_mlptrainf_ocr_class_mlpTrainfOcrClassMlptrainf_ocr_class_mlpTrainfOcrClassMlpTrainfOcrClassMlp,
read_ocr_class_mlpread_ocr_class_mlpReadOcrClassMlpread_ocr_class_mlpReadOcrClassMlpReadOcrClassMlp
do_ocr_multi_class_mlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpdo_ocr_multi_class_mlpDoOcrMultiClassMlpDoOcrMultiClassMlp
create_ocr_class_mlpcreate_ocr_class_mlpCreateOcrClassMlpcreate_ocr_class_mlpCreateOcrClassMlpCreateOcrClassMlp,
classify_class_mlpclassify_class_mlpClassifyClassMlpclassify_class_mlpClassifyClassMlpClassifyClassMlp
OCR/OCV