OCR

Diese Gruppe enthält Funktionen zur optischen Zeichenerkennung (Optical Character Recognition).

Die OCR-Funktionen identifizieren Zeichen in einem Bild und geben die erkannte Zeichenkette als String zurück. Die Klassifizierung basiert auf klassischen Machine Learning Modellen. Die Modelle werden trainiert bereitgestellt, so dass die Funktionen direkt angewendet werden können. Zusätzliche Einstellungen oder ein eigenes Training sind nicht erforderlich. Die unterstützen Zeichen und Fonts hängen von den im Training verwendeten Daten ab. Daher gibt es verschiedene Modelle deren Funktionsumfang, sowie die generellen Vorbedingungen und Anforderungen, im Folgenden beschrieben werden.

Für alle Zeichen, die in einem Bild erkannt werden, ordnen die Modelle die einzelnen Zeichen einer bekannten Klasse zu, bei der die Übereinstimmung am höchsten ist. Das Ergebnis besteht also immer aus den bekannten Zeichen des verwendeten Modelles. Eine Zurückweisung oder Aussortierung unbekannter Zeichen ist nicht enthalten.

Die Funktionen unterstützen nur einzeilige Zeichenfolgen, mehrere Zeilen müssen in einzelne ROIs unterteilt und mit mehreren Funktionsaufrufen gelesen werden.

Generelle Anforderungen zur Erkennung von Zeichen:

Generelle Anforderungen an das Bild:

Anforderungen an die Fonts:

Modelle:

Das Enum ETcVnOcrModelType ermöglicht den Zugriff auf die folgenden Modelle:

Bei der Verwendung des kombinierten Modells (TCVN_OMT_NUMBERS_SC_UCLETTERS) kann es, aufgrund der großen Ähnlichkeit von bestimmten Zeichen, zu Verwechselungen kommen. Beispiele dafür sind O und 0, S und 5 sowie B und 8.

Wenn bekannt ist an welcher Stelle eine Zahl oder ein Buchstabe steht, sollte alternativ die Expert-Funktion mit der Formatierungsvorgabe (sPattern) und der Kombination von den separaten Modellen verwendet werden. Alternativ können im Anschluss die Zeichen des Ergebnisstrings (ipCharacters) auch einzeln analysiert werden, so dass man individuell entscheiden kann ob z.B. anstatt O auch eine 0 akzeptiert wird.

Funktionen initialisieren

Um die OCR-Funktion mit einem oder mehreren Modellen verwenden zu können, muss die Funktion zuvor über den Baustein FB_VN_InitializeFunction mit den jeweiligen Modellen initialisiert werden.

Die Dauer für das Laden der Modelle ist abhängig von der Leistungsfähigkeit des verwendeten IPC, sowie der Modellgröße und kann mehrere hundert Millisekunden, bis hin zu mehreren Sekunden dauern. Daher ist bei kürzeren Taskzykluszeiten mit Zykluszeitüberschreitungen zu rechnen.

Wenn das kombinierte Modell TCVN_OMT_NUMBERS_SC_UCLETTERS verwendet werden soll, muss aufgrund der Dateigröße der Router Speicher auf mindestens 512 MB gesetzt werden.

Die genaue Größe ist abhängig von der sonstigen Verwendung des Router Speichers und evtl. vorhandener Fragmentierung. Wenn der Baustein FB_VN_InitializeFunction z.B. einen Return Code 0x80004005 zurückgibt, deutet das auf zu wenig Router Speicher hin. Daher sollte zuerst der Router Speicher geprüft und ggf. vergrößert werden. Nach dem Laden eines Modells wird ein Großteil des Speichers wieder freigegeben und steht für die Anwendung zur Verfügung.

Interpretation des HRESULT

Beispiele für die Verwendung von sPattern

Die F_VN_OCRExp stellt mit den Parametern sPattern und eOcrOptions zusätzliche Möglichkeiten bereit. Je nach Kombination der Zeichen auf dem Eingangsbild, den Angaben von sPattern und eOcrOptions und den erkannten Zeichen, wird bei einer Nicht-Übereinstimmung S_FALSE zurückgegeben. Danach können die Zeichen des Ergebnis-Strings (ipCharacters) auch einzeln analysiert werden, da z.B. bei abweichender Länge auch S_FALSE zurückgegeben wird. Die Beispiele beziehen sich auf die Verwendung des TCVN_OMT_NUMBERS_SC_UCLETTERS Modells.

Zeichen auf dem ipSrcImage

sPattern

eOcrOptions

ipCharacters

HRESULT

12/34

dd.dd

 

12/34

S_OK

12534

dd.dd

 

12534

S_OK

12/34

dd!dd

 

1234

S_OK

12 34

dd!d

 

124

S_OK

12534

dd!dd

 

1234

S_OK

12 34

dd_dd

 

12 34

S_OK

AB12/

uudd#

 

AB12/

S_OK

12 34

dddd

WITHBLANKS

12 34

S_OK

12/4

dd#d

WITHBLANKS

12/4

S_OK

12 34

dd_dd

WITHBLANKS

12 34

S_OK

12 34 56

dd_dddd

WITHBLANKS

12 34 56

S_OK

12 3 4

dd.dd

WITHBLANKS

12 3 4

S_FALSE

12 34

dd!dd

 

124

S_FALSE

12 34

dd.dd

 

1234

S_FALSE

1234

!dddd

 

234

S_FALSE

12 34

dd_dd

 

12.34

S_FALSE

12 3

dd_dd

 

123

S_FALSE

12 3 4

dd_d_d

 

123 4

S_FALSE

AB12/

uddd#

 

AB12/

S_FALSE

AB12/

uuddd

 

AB12/

S_FALSE