ClassesClassesClassesClasses | | | | Operators

do_ocr_word_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn (Operator)

Name

do_ocr_word_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn — Classify a related group of characters with an OCR classifier.

Signature

do_ocr_word_knn(Character, Image : : OCRHandle, Expression, NumAlternatives, NumCorrections : Class, Confidence, Word, Score)

Herror do_ocr_word_knn(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_knn(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_knn(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_knn(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::DoOcrWordKnn(const HImage& Image, const HOCRKnn& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, double* Confidence, char* Word, double* Score) const

HTuple HRegionArray::DoOcrWordKnn(const HImage& Image, const HOCRKnn& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Confidence, HTuple* Word, HTuple* Score) const

HTuple HOCRKnn::DoOcrWordKnn(const HRegionArray& Character, const HImage& Image, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Confidence, HTuple* Word, HTuple* Score) const

void DoOcrWordKnn(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::DoOcrWordKnn(const HImage& Image, const HOCRKnn& OCRHandle, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, HTuple* Confidence, HString* Word, double* Score) const

HString HRegion::DoOcrWordKnn(const HImage& Image, const HOCRKnn& OCRHandle, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const

HString HRegion::DoOcrWordKnn(const HImage& Image, const HOCRKnn& OCRHandle, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const

HTuple HOCRKnn::DoOcrWordKnn(const HRegion& Character, const HImage& Image, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, HTuple* Confidence, HString* Word, double* Score) const

HString HOCRKnn::DoOcrWordKnn(const HRegion& Character, const HImage& Image, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const

HString HOCRKnn::DoOcrWordKnn(const HRegion& Character, const HImage& Image, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const

void HOperatorSetX.DoOcrWordKnn(
[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.DoOcrWordKnn(
[in] IHImageX* Image, [in] IHOCRKnnX* OCRHandle, [in] BSTR Expression, [in] Hlong NumAlternatives, [in] Hlong NumCorrections, [out] VARIANT* Confidence, [out] BSTR* Word, [out] double* Score)

VARIANT HOCRKnnX.DoOcrWordKnn(
[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.DoOcrWordKnn(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.DoOcrWordKnn(HImage image, HOCRKnn OCRHandle, string expression, int numAlternatives, int numCorrections, out HTuple confidence, out string word, out double score)

string HRegion.DoOcrWordKnn(HImage image, HOCRKnn OCRHandle, string expression, int numAlternatives, int numCorrections, out double confidence, out string word, out double score)

HTuple HOCRKnn.DoOcrWordKnn(HRegion character, HImage image, string expression, int numAlternatives, int numCorrections, out HTuple confidence, out string word, out double score)

string HOCRKnn.DoOcrWordKnn(HRegion character, HImage image, string expression, int numAlternatives, int numCorrections, out double confidence, out string word, out double score)

Description

do_ocr_word_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn works like do_ocr_multi_class_knndo_ocr_multi_class_knnDoOcrMultiClassKnndo_ocr_multi_class_knnDoOcrMultiClassKnnDoOcrMultiClassKnn 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 of the classes in ConfidenceConfidenceConfidenceConfidenceConfidenceconfidence. The confidences lie between 0.0 and 1.0. The larger the value, the more reliable is the classification of the single characters.

In contrast to do_ocr_multi_class_knndo_ocr_multi_class_knnDoOcrMultiClassKnndo_ocr_multi_class_knnDoOcrMultiClassKnnDoOcrMultiClassKnn, do_ocr_word_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn 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_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn 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_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn 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_knndo_ocr_single_class_knnDoOcrSingleClassKnndo_ocr_single_class_knnDoOcrSingleClassKnnDoOcrSingleClassKnn 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 determined 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.

Parallelization

Parameters

CharacterCharacterCharacterCharacterCharactercharacter (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Characters to be recognized.

ImageImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Gray values of the characters.

OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleOCRHandle (input_control)  ocr_knn HOCRKnn, HTupleHTupleHOCRKnn, HTupleHOCRKnnX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle of the OCR classifier.

ExpressionExpressionExpressionExpressionExpressionexpression (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Expression describing the allowed word structure.

NumAlternativesNumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternatives (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

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 ≤ 5

NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

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 ≤ 5

ClassClassClassClassClassclassVal (output_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Result of classifying the characters with the k-NN.

Number of elements: Class == Character

ConfidenceConfidenceConfidenceConfidenceConfidenceconfidence (output_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Confidence of the class of the characters.

Number of elements: Confidence == Character

WordWordWordWordWordword (output_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Word text after classification and correction.

ScoreScoreScoreScoreScorescore (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Measure of similarity between corrected word and uncorrected classification results.

Complexity

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.

Result

If the parameters are valid, the operator do_ocr_word_knndo_ocr_word_knnDoOcrWordKnndo_ocr_word_knnDoOcrWordKnnDoOcrWordKnn returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.

Possible Predecessors

trainf_ocr_class_knntrainf_ocr_class_knnTrainfOcrClassKnntrainf_ocr_class_knnTrainfOcrClassKnnTrainfOcrClassKnn, read_ocr_class_knnread_ocr_class_knnReadOcrClassKnnread_ocr_class_knnReadOcrClassKnnReadOcrClassKnn

Alternatives

do_ocr_multi_class_knndo_ocr_multi_class_knnDoOcrMultiClassKnndo_ocr_multi_class_knnDoOcrMultiClassKnnDoOcrMultiClassKnn

See also

create_ocr_class_knncreate_ocr_class_knnCreateOcrClassKnncreate_ocr_class_knnCreateOcrClassKnnCreateOcrClassKnn, classify_class_knnclassify_class_knnClassifyClassKnnclassify_class_knnClassifyClassKnnClassifyClassKnn

Module

OCR/OCV


ClassesClassesClassesClasses | | | | Operators