do_ocr_word_cnnT_do_ocr_word_cnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn (Operator)

Name

do_ocr_word_cnnT_do_ocr_word_cnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn — Klassifikation einer Zeichengruppe mit einem CNN-basiertem OCR-Klassifikator.

Signatur

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

Herror T_do_ocr_word_cnn(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)

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

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

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

HString HRegion::DoOcrWordCnn(const HImage& Image, const HOCRCnn& OCRHandle, const wchar_t* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const   (Nur Windows)

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

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

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

HString HOCRCnn::DoOcrWordCnn(const HRegion& Character, const HImage& Image, const wchar_t* Expression, Hlong NumAlternatives, Hlong NumCorrections, double* Confidence, HString* Word, double* Score) const   (Nur Windows)

static void HOperatorSet.DoOcrWordCnn(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.DoOcrWordCnn(HImage image, HOCRCnn OCRHandle, string expression, int numAlternatives, int numCorrections, out HTuple confidence, out string word, out double score)

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

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

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

def do_ocr_word_cnn(character: HObject, image: HObject, ocrhandle: HHandle, expression: str, num_alternatives: int, num_corrections: int) -> Tuple[Sequence[str], Sequence[float], str, float]

def do_ocr_word_cnn_s(character: HObject, image: HObject, ocrhandle: HHandle, expression: str, num_alternatives: int, num_corrections: int) -> Tuple[str, float, str, float]

Beschreibung

do_ocr_word_cnndo_ocr_word_cnnDoOcrWordCnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn verhält sich wie do_ocr_multi_class_cnndo_ocr_multi_class_cnnDoOcrMultiClassCnnDoOcrMultiClassCnnDoOcrMultiClassCnndo_ocr_multi_class_cnn, indem es zu den durch die Regionen CharacterCharacterCharacterCharactercharactercharacter und die Grauwerte ImageImageImageImageimageimage gegebenen Zeichen mit dem durch OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleocrhandle gegebenen OCR-Klassifikator die jeweils beste Klasse berechnet, und die Klassen in ClassClassClassClassclassValclass und die zugehörigen Konfidenzen (Wahrscheinlichkeiten) der Klassen in ConfidenceConfidenceConfidenceConfidenceconfidenceconfidence zurückgibt.

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

Ein Ausdruck kann das Wort auf ein festes Lexikon, welches zuvor durch create_lexiconcreate_lexiconCreateLexiconCreateLexiconCreateLexiconcreate_lexicon oder import_lexiconimport_lexiconImportLexiconImportLexiconImportLexiconimport_lexicon erzeugt wurde, einschränken, indem der Name des Lexikons in spitzen Klammern wie in '<meinlexikon>'"<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_matchTupleRegexpMatchTupleRegexpMatchTupleRegexpMatchtuple_regexp_match 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_matchTupleRegexpMatchTupleRegexpMatchTupleRegexpMatchtuple_regexp_match erlaubt do_ocr_word_cnndo_ocr_word_cnnDoOcrWordCnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn keine Angabe von zusätzlichen Optionen für ExpressionExpressionExpressionExpressionexpressionexpression in einem Tupel.

Falls das aus den jeweils besten Klassen abgeleitete Wort dem Ausdruck nicht genügt, versucht do_ocr_word_cnndo_ocr_word_cnnDoOcrWordCnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn eine Korrektur durch Berücksichtigung der NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternativesnum_alternatives besten Klassen für jedes Zeichen, so wie sie von do_ocr_single_class_cnndo_ocr_single_class_cnnDoOcrSingleClassCnnDoOcrSingleClassCnnDoOcrSingleClassCnndo_ocr_single_class_cnn für ein einzelnes Zeichen bestimmt werden. Hierzu werden alle möglichen Korrekturen ausprobiert, bei denen die Klassifikation von höchstens NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrectionsnum_corrections Zeichenregionen geändert wird. Zu beachten ist hierbei, dass NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternativesnum_alternatives und NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrectionsnum_corrections 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 NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrectionsnum_corrections Editieroperationen benötigt werden (siehe suggest_lexiconsuggest_lexiconSuggestLexiconSuggestLexiconSuggestLexiconsuggest_lexicon).

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

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

Diese Bewertung ist rein kombinatorisch und berücksichtigt nicht die ursprünglichen Konfidenzen der besten Klassen.

Eine Zeichenkette des Zahlenwertes '\032'"\032""\032""\032""\032""\032" (alternativ als '\0x1A'"\0x1A""\0x1A""\0x1A""\0x1A""\0x1A" dargestellt) im Resultat ClassClassClassClassclassValclass bedeutet, dass die Region als Rückweisungsklasse klassifiziert wurde.

Ausführungsinformationen

Parameter

CharacterCharacterCharacterCharactercharactercharacter (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Zu erkennende Zeichen.

ImageImageImageImageimageimage (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2)

Grauwerte der Zeichen.

OCRHandleOCRHandleOCRHandleOCRHandleOCRHandleocrhandle (input_control)  ocr_cnn HOCRCnn, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des OCR-Klassifikators.

ExpressionExpressionExpressionExpressionexpressionexpression (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Ausdruck, der die erlaubte Wortstruktur beschreibt

NumAlternativesNumAlternativesNumAlternativesNumAlternativesnumAlternativesnum_alternatives (input_control)  integer HTupleintHTupleHtuple (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 num_alternatives

NumCorrectionsNumCorrectionsNumCorrectionsNumCorrectionsnumCorrectionsnum_corrections (input_control)  integer HTupleintHTupleHtuple (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 num_corrections

ClassClassClassClassclassValclass (output_control)  string(-array) HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Ergebnis der Klassifikation der Zeichen durch das MLP.

Parameteranzahl: Class == Character

ConfidenceConfidenceConfidenceConfidenceconfidenceconfidence (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Konfidenz der Klasse der Zeichen.

Parameteranzahl: Confidence == Character

WordWordWordWordwordword (output_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Text des Wortes nach Klassifikation und Korrektur.

ScoreScoreScoreScorescorescore (output_control)  real HTuplefloatHTupleHtuple (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_cnndo_ocr_word_cnnDoOcrWordCnnDoOcrWordCnnDoOcrWordCnndo_ocr_word_cnn den Wert TRUE. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_ocr_class_cnnread_ocr_class_cnnReadOcrClassCnnReadOcrClassCnnReadOcrClassCnnread_ocr_class_cnn

Alternativen

do_ocr_multi_class_cnndo_ocr_multi_class_cnnDoOcrMultiClassCnnDoOcrMultiClassCnnDoOcrMultiClassCnndo_ocr_multi_class_cnn

Modul

OCR/OCV