# OCRMax

Die OCRMax-Funktion schreibt und/oder überprüft eine Textzeichenfolge innerhalb eines Inspektionsbereichs (ROI), nachdem die Funktion mit vom Benutzer definierten Zeichen trainiert wurde. OCRMax führt durch Segmentierung und Klassifizierung eine optische Zeichenerkennung (OCR) aus. Die Segmentierung wird zuerst durchgeführt. Unter Verwendung von Schwellenwerttechniken werden Teile des Bilds identifiziert, die anscheinend Textzeilen enthalten. Nach dem Segmentieren des Texts in Zeichen werden die Zeichen trainiert und als Zeichensatz-Datenbank gespeichert. Die Klassifizierung findet während der Laufzeit statt. Dabei wird der bei der Segmentierung gefundene Text „gelesen“. Die Bilder der segmentierten Zeichen werden dazu mit den trainierten Zeichen im Datensatz verglichen.

Während des Segmentierungsvorgangs bestimmt die OCRMax-Funktion die Position der Textzeile innerhalb des Inspektionsbereichs und rechnet den Winkel, die Neigung und die Polarität des Texts aus. Der Bereich wird dann normalisiert, um ungewolltes Rauschen zu entfernen, bevor der Bereich in Vorder- und Hintergrund-Pixel binarisiert wird. Am binarisierten Bild wird eine Blobanalyse ausgeführt, um Zeichenfragmente zu produzieren, wobei jedes Zeichenfragment ein einzelnes Blob darstellt. Zeichenfragmente werden dann gruppiert, um Zeichen zu bilden, die einem Zeichenbereich zugeordnet werden. Der Zeichenbereich ist ein enger, nicht editierbarer Begrenzungsrahmen, der alle Vordergrund-Pixel (z. B. Farbe) im Inspektionsbereich (ROI) einschließt.

Die Textzeile im Inspektionsbereich ist in Bilder mit einzelnen Zeichen unterteilt, und jedes Zeichen ist von einem nicht editierbaren Zeichenrechteck umschlossen. Der ROI definiert die ungefähre Position, den Winkel und die Neigung der Textzeile. Mithilfe der Parameter „Winkelbereich“ und „Neigungsbereich“ auf der Registerkarte „Segmentierung“ können Sie, falls erforderlich, Abweichungen kompensieren.

## OCRMax – Eingaben

Das OCRMax-Eigenschaftsblatt bietet eine Reihe von Einstellungen für die Feinabstimmung der Ergebnisse der Funktion. Diese können über die Registerkarten des Eigenschaftsblatts aufgerufen werden: Allgemein, Segmentierung, Zeichensatz trainieren, Felderkennung, Ergebnisse und Diagnose.

Außerdem startet die Schaltfläche Auto-Tune auf dem OCRMax-Eigenschaftsblatt das Dialogfeld Dialogfeld „Auto-Tune“, mit dem die optimalen Parameter für die Segmentierung automatisch berechnet und eine Zeichensatzdatenbank trainiert werden kann. Wenn das Dialogfeld „Auto-Tune“ aktiv ist und ein oder mehrere Bilder geladen sind, wird jedes Bild untersucht, um zu überprüfen, dass die Zeichen korrekt segmentiert und klassifiziert werden. Wenn die Zeichen nicht korrekt segmentiert werden, berechnet der Auto-Tune-Algorithmus die optimalen Segmentierungsparameter für die Segmentierung des aktuellen Bilds, sowie die vorher trainierten Bilder. Das Trainieren weiterer Bilder macht den Auto-Tune-Algorithmus der OCRMax-Funktion zuverlässiger und genauer. Sobald zufriedenstellende Ergebnisse erzielt werden, wird das Dialogfeld „Auto-Tune“ geschlossen, es werden die neuen Segmentierungsparameter angewendet und die Zeichensatzdatenbank wird mit den neu trainierten Zeichen aktualisiert.

Hinweis: Das Dialogfeld „Auto-Tune“ bietet gegenüber dem manuellen Tuning der Segmentierungsparameter zwei Vorteile:

- Bilder benötigen nur einen Durchlauf, anstatt zwei (einmal zum Tuning der Segmentierungsparameter, und ein zweites Mal zum Trainieren).
- Die Lesegenauigkeit sollte besser sein, da die Zeichen automatisch mit den Segmentierungsparametern trainiert werden, die beim Tuningvorgang erhalten wurden.

## OCRMax – Ausgaben

Rückgabewert | Eine OCRMax-Datenstruktur mit der gelesenen Zeichenfolge oder #ERR, wenn mindestens ein Eingabeparameter ungültig ist.
Ergebnisse | Wenn OCRMax anfänglich in eine Zelle eingefügt wird, wird in der Tabelle automatisch eine Ergebnistabelle mit den folgenden OCRMax Vision Data Access functions erstellt.
Label | Funktion | Beschreibung
Zeichenfolge | GetString(OCRMax) | Gibt die Zeichenfolge in der referenzierten Datenstruktur zurück.
StringPass | GetPassed(OCRMax) | Gibt den Bestanden/Nicht bestanden-Status der Zeichenfolge in der referenzierten Datenstruktur zurück.
Index |  | Die indizierte Position des Zeichens.
Zeichen | GetChar(OCRMax, Index) | Gibt das Zeichen an der indizierten Position in der referenzierten Datenstruktur zurück.
Güte | GetScore(OCRMax, Index) | Gibt die Güte (0 bis 100) für das indexierte Zeichen in der referenzierten Datenstruktur zurück.
Passed | GetPassed(OCRMax, Index) | Gibt den Bestanden/Nicht bestanden-Status des indexierten Zeichens in der referenzierten Datenstruktur zurück.
Zweites Zeichen | GetScore(OCRMax, Index0, [Index1]) | Gibt das Zeichen mit der zweithöchsten Güte zurück.
Zweite Güte | GetScore(OCRMax, Index0, [Index1]) | Gibt die Güte des Zeichens mit der zweithöchsten Güte zurück.
Zeichenunterschied |  | Gibt den Unterschied zwischen der ersten und zweiten Güte des indexierten Zeichens zurück.