do_ocr_word_svmT_do_ocr_word_svmDoOcrWordSvmDoOcrWordSvm (Operator)

Name

do_ocr_word_svmT_do_ocr_word_svmDoOcrWordSvmDoOcrWordSvm — Klassifikation einer Zeichengruppe mit einem OCR-Klassifikator.

Signatur

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

Herror T_do_ocr_word_svm(const Hobject Character, const Hobject Image, const Htuple OCRHandle, const Htuple Expression, const Htuple NumAlternatives, const Htuple NumCorrections, Htuple* Class, Htuple* Word, Htuple* Score)

void DoOcrWordSvm(const HObject& Character, const HObject& Image, const HTuple& OCRHandle, const HTuple& Expression, const HTuple& NumAlternatives, const HTuple& NumCorrections, HTuple* Class, HTuple* Word, HTuple* Score)

HTuple HRegion::DoOcrWordSvm(const HImage& Image, const HOCRSvm& OCRHandle, const HString& Expression, Hlong NumAlternatives, Hlong NumCorrections, HString* Word, double* Score) const

HTuple HRegion::DoOcrWordSvm(const HImage& Image, const HOCRSvm& OCRHandle, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, HString* Word, double* Score) const

HTuple HRegion::DoOcrWordSvm(const HImage& Image, const HOCRSvm& OCRHandle, const wchar_t* Expression, Hlong NumAlternatives, Hlong NumCorrections, HString* Word, double* Score) const   (Nur Windows)

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

HTuple HOCRSvm::DoOcrWordSvm(const HRegion& Character, const HImage& Image, const char* Expression, Hlong NumAlternatives, Hlong NumCorrections, HString* Word, double* Score) const

HTuple HOCRSvm::DoOcrWordSvm(const HRegion& Character, const HImage& Image, const wchar_t* Expression, Hlong NumAlternatives, Hlong NumCorrections, HString* Word, double* Score) const   (Nur Windows)

static void HOperatorSet.DoOcrWordSvm(HObject character, HObject image, HTuple OCRHandle, HTuple expression, HTuple numAlternatives, HTuple numCorrections, out HTuple classVal, out HTuple word, out HTuple score)

HTuple HRegion.DoOcrWordSvm(HImage image, HOCRSvm OCRHandle, string expression, int numAlternatives, int numCorrections, out string word, out double score)

HTuple HOCRSvm.DoOcrWordSvm(HRegion character, HImage image, string expression, int numAlternatives, int numCorrections, out string word, out double score)

Beschreibung

do_ocr_word_svmdo_ocr_word_svmDoOcrWordSvmDoOcrWordSvmDoOcrWordSvm verhält sich wie do_ocr_multi_class_svmdo_ocr_multi_class_svmDoOcrMultiClassSvmDoOcrMultiClassSvmDoOcrMultiClassSvm, indem es mit dem durch OCRHandleOCRHandleOCRHandleOCRHandleOCRHandle gegebenen OCR-Klassifikator zu den durch die Regionen CharacterCharacterCharacterCharactercharacter und die Grauwerte ImageImageImageImageimage gegebenen Zeichen die jeweils beste Klasse berechnet und diese in ClassClassClassClassclassVal zurückgibt.

Im Gegensatz zu do_ocr_multi_class_svmdo_ocr_multi_class_svmDoOcrMultiClassSvmDoOcrMultiClassSvmDoOcrMultiClassSvm behandelt do_ocr_word_svmdo_ocr_word_svmDoOcrWordSvmDoOcrWordSvmDoOcrWordSvm die Zeichengruppe als eine Einheit, die durch Aneinanderhängen von Klassennamen für jedes einzelne Zeichen ein Wort WordWordWordWordword liefert. Dies ermöglicht die Einschränkung der erlaubten Klassifikationsergebnisse auf Textebene durch Angabe eines Ausdrucks ExpressionExpressionExpressionExpressionexpression, der das erwartete Wort beschreibt.

Ein Ausdruck kann das Wort auf ein festes Lexikon, welches zuvor durch create_lexiconcreate_lexiconCreateLexiconCreateLexiconCreateLexicon oder import_lexiconimport_lexiconImportLexiconImportLexiconImportLexicon erzeugt wurde, einschränken, indem der Name des Lexikons in spitzen Klammern wie in '<meinlexikon>'"<meinlexikon>""<meinlexikon>""<meinlexikon>""<meinlexikon>" angegeben wird. Ist der Ausdruck nicht von dieser Form, so wird er als regulärer Ausdruck mit derselben Syntax wie für tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatchTupleRegexpMatch interpretiert. Bei Verwendung von Quantifikatoren wie '*' sollte man normalerweise mit einem Ausdruck der Form '^...'$'"$""$""$""$"' dafür sorgen, dass das gesamte Wort verwendet wird.

Im Gegensatz zu tuple_regexp_matchtuple_regexp_matchTupleRegexpMatchTupleRegexpMatchTupleRegexpMatch erlaubt do_ocr_word_svmdo_ocr_word_svmDoOcrWordSvmDoOcrWordSvmDoOcrWordSvm keine Angabe von zusätzlichen Optionen für ExpressionExpressionExpressionExpressionexpression in einem Tupel.

Falls das aus den jeweils besten Klassen abgeleitete Wort dem Ausdruck nicht genügt, versucht do_ocr_word_svmdo_ocr_word_svmDoOcrWordSvmDoOcrWordSvmDoOcrWordSvm eine Korrektur durch Berücksichtigung der NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternatives besten Klassen für jedes Zeichen, so wie sie von do_ocr_single_class_svmdo_ocr_single_class_svmDoOcrSingleClassSvmDoOcrSingleClassSvmDoOcrSingleClassSvm für ein einzelnes Zeichen bestimmt werden. Hierzu werden alle möglichen Korrekturen ausprobiert, bei denen die Klassifikation von höchstens NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections Zeichenregionen geändert wird. Zu beachten ist hierbei, dass NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternatives und NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections Auswirkungen auf die Komplexität des Algorithmus haben und daher in manchen Fällen intern beschränkt werden müssen. Für weitere Informationen siehe den Abschnitt 'Komplexität' weiter unten.

Falls der Ausdruck ein Lexikon beschreibt und die obige Prozedur nicht zum Erfolg führte, so wird das ähnlichste Wort aus dem Lexikon zurückgegeben, solange für die Korrektur weniger als NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections Editieroperationen benötigt werden (siehe suggest_lexiconsuggest_lexiconSuggestLexiconSuggestLexiconSuggestLexicon).

Das Ergebnis wird mit einem ScoreScoreScoreScorescore zwischen 0.0 (keine Korrektur gefunden) und 1.0 (ursprüngliches Wort war schon korrekt) bewertet. Verringert wird der ScoreScoreScoreScorescore durch das Anbringen einer Strafe entsprechend der Anzahl korrigierter Zeichen und einer (kleineren) Strafe für das Ignorieren besserer Klassen um um einen Ausdruck ExpressionExpressionExpressionExpressionexpression zu erhalten:

wobei num_corr die Anzahl tatsächlich angebrachter Korrekturen und num_alt die Anzahl ignorierter Alternativen ist.

Ausführungsinformationen

Parameter

CharacterCharacterCharacterCharactercharacter (input_object)  region(-array) objectHRegionHRegionHobject

Zu erkennende Zeichen.

ImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHobject (byte / uint2)

Grauwerte der Zeichen.

OCRHandleOCRHandleOCRHandleOCRHandleOCRHandle (input_control)  ocr_svm HOCRSvm, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des OCR-Klassifikators.

ExpressionExpressionExpressionExpressionexpression (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Ausdruck, der die erlaubte Wortstruktur beschreibt

NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternatives (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl der Klassen pro Zeichen, die für die interne Wortkorrektur berücksichtigt werden.

Defaultwert: 3

Wertevorschläge: 3, 4, 5

Typischer Wertebereich: 1 ≤ NumAlternatives NumAlternatives NumAlternatives NumAlternatives numAlternatives

NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrections (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Maximale Anzahl der korrigierten Zeichen.

Defaultwert: 2

Wertevorschläge: 1, 2, 3, 4, 5

Typischer Wertebereich: 0 ≤ NumCorrections NumCorrections NumCorrections NumCorrections numCorrections

ClassClassClassClassclassVal (output_control)  string(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Ergebnis der Klassifikation der Zeichen durch die SVM.

Parameteranzahl: Class == Character

WordWordWordWordword (output_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Text des Wortes nach Klassifikation und Korrektur.

ScoreScoreScoreScorescore (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Ähnlichkeitsmaß von korrigiertem Wort zum Original.

Komplexität

Die Komplexität des Prüfens aller möglichen Korrekturen hat die Größenordnung , wobei a die Anzahl der Alternativen, n die Anzahl der Zeichenregionen und c die Anzahl der erlaubten Korrekturen ist. Als Absicherung gegen quasi-unendliche Schleifen im Falle von großem n wird der Wert von c intern beschränkt auf 5, 3, oder 1, falls a*n >= 30, 60, bzw. 90.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert do_ocr_word_svmdo_ocr_word_svmDoOcrWordSvmDoOcrWordSvmDoOcrWordSvm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

trainf_ocr_class_svmtrainf_ocr_class_svmTrainfOcrClassSvmTrainfOcrClassSvmTrainfOcrClassSvm, read_ocr_class_svmread_ocr_class_svmReadOcrClassSvmReadOcrClassSvmReadOcrClassSvm

Alternativen

do_ocr_multi_class_svmdo_ocr_multi_class_svmDoOcrMultiClassSvmDoOcrMultiClassSvmDoOcrMultiClassSvm

Siehe auch

create_ocr_class_svmcreate_ocr_class_svmCreateOcrClassSvmCreateOcrClassSvmCreateOcrClassSvm, classify_class_svmclassify_class_svmClassifyClassSvmClassifyClassSvmClassifyClassSvm

Modul

OCR/OCV