set_text_model_param
— Setzen von Parametern eines Textmodells.
set_text_model_param( : : TextModel, GenParamName, GenParamValue : )
set_text_model_param
setzt Parameter eines Textmodells. Welche
Werte für GenParamName
zulässig sind hängt davon ab, welcher
Mode
bei der Erstellung des Textmodells mittels
create_text_model_reader
gewählt wurde. Im Folgenden werden zuerst
die erlaubten Parameterwerte für Textmodelle mit Mode
=
'auto' und anschließend diese für Textmodelle mit
Mode
= 'manual' beschrieben.
Die Parameter und ihre Werte werden in GenParamName
und
GenParamValue
übergeben werden. Die folgenden Parameter können
gesetzt werden:
Parameter für Textmodelle mit Mode = 'auto'
Segmentierungseigenschaften
Minimaler Kontrast zwischen Buchstaben und ihrem Hintergrund.
Werteliste: Integer- oder float-Werte zwischen 1 und 255 für Byte-Bilder und zwischen 1 und 65.535 für uint2-Bilder.
Defaultwert: 15
'dark_on_light' wenn der zu segmentierende Text dunkler ist als sein Hintergrund, 'light_on_dark' wenn der zu segmentierende Text heller ist als sein Hintergrund und 'both' falls beide Arten von Text segmentiert werden sollen.
Werteliste: 'dark_on_light' , 'light_on_dark' , 'both'
Defaultwert: 'both'
'true' wenn Regionen, die den Rand des Definitionsbereichs des Bildes berühren verworfen werden sollen, ansonsten 'false' .
Werteliste: 'true' ,'false'
Defaultwert: 'false'
'true' wenn Fragmente wie der Punkt auf einem 'i' zu den segmentierten Buchstaben hinzugefügt werden sollen. Das kann allerdings auch dazu führen, dass Störungen zu den segmentierten Buchstaben hinzugefügt werden.
Werteliste: 'true' ,'false'
Defaultwert: 'true'
Bestimmt die Trennung von Paaren oder kleinen Gruppen nebeneinander liegender Zeichen, die als eine einzige Region segmentiert werden. Wird 'standard' oder 'enhanced' gewählt, werden solche Regionen erkannt und in zwei oder mehrere einzelne Zeichen aufgeteilt. Während die Methode 'enhanced' genauere Ergebnisse liefert, ist die Methode 'standard' weniger komplex und damit schneller. Wird 'separate_touching_chars' auf 'false' gesetzt, wird keine Trennung von sich berührenden Zeichen durchgeführt.
Anmerkung: Für die Methode 'enhanced' wird die Datei find_text_support.hotc aus dem ocr Unterverzeichnis des Hauptverzeichnisses der HALCON-Installation benötigt. Es ist auch möglich, diese Datei im aktuell verwendeten Verzeichnis abzulegen.
Werteliste: 'false' , 'standard' , 'enhanced'
Defaultwert: 'standard'
Buchstabengröße
Minimale Höhe eines Buchstabens in Pixel. Um Buchstaben jeglicher Höhe zu segmentieren, kann der Wert 'auto' übergeben werden. 'min_char_height' schränkt die Höhe von Buchstaben ein, jedoch nicht die Höhe von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Maximale Höhe eines Buchstabens in Pixel. Um Buchstaben jeglicher Höhe zu segmentieren, kann der Wert 'auto' übergeben werden. 'max_char_height' schränkt die Höhe von Buchstaben ein, jedoch nicht die Höhe von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Minimale Breite eines Buchstabens in Pixel. Um Buchstaben jeglicher Breite zu segmentieren, kann der Wert 'auto' übergeben werden. 'min_char_width' schränkt die Breite von Buchstaben ein, jedoch nicht die Breite von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Maximale Breite eines Buchstabens in Pixel. Um Buchstaben jeglicher Breite zu segmentieren, kann der Wert 'auto' übergeben werden. 'max_char_width' schränkt die Breite von Buchstaben ein, jedoch nicht die Breite von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Minimale Strichbreite eines Buchstabens in Pixel. Soll die minimale Strichbreite während der Textsegmentierung automatisch geschätzt werden, kann der Wert 'auto' übergeben werden. 'min_stroke_width' schränkt die Strichbreite von Buchstaben ein, jedoch nicht die Strichbreite von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Maximale Strichbreite eines Buchstabens in Pixel. Soll die maximale Strichbreite während der Textsegmentierung automatisch geschätzt werden, kann der Wert 'auto' übergeben werden. 'max_stroke_width' schränkt die Strichbreite von Buchstaben ein, jedoch nicht die Strichbreite von Satz- oder Trennzeichen.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Sonderzeichen
'true' wenn kleine Satzzeichen, die nahe an der Grundlinie der Textzeile liegen (wie Punkt oder Komma), zu den segmentierten Buchstaben hinzugefügt werden sollen.
Werteliste: 'true' ,'false'
Defaultwert: 'true'
'true' wenn Trennzeichen wie ein Minus oder das Gleichheitszeichen zu den segmentierten Buchstaben hinzugefügt werden sollen.
Werteliste: 'true' ,'false'
Defaultwert: 'true'
Punktdruck-Buchstaben
'true' wenn der zu segmentierende Text Punktdruck-Buchstaben enthält, ansonsten 'false' .
Werteliste: 'true' ,'false'
Defaultwert: 'false'
'true' wenn die Lücken zwischen benachbarten Buchstaben kleiner sind als die Lücke zwischen zwei Punkten innerhalb eines Buchstabens, ansonsten 'false' . Falls 'dot_print' auf 'false' gesetzt ist, hat dieser Parameter keine Auswirkung. Ist die genaue Größe der kleinsten Lücke zwischen benachbarten Buchstaben bekannt, kann diese stattdessen mittels 'dot_print_min_char_gap' gesetzt werden. In diesem Fall wird der Wert von 'dot_print_tight_char_spacing' ignoriert.
Werteliste: 'true' ,'false'
Defaultwert: 'false'
Größe der kleinsten Lücke zwischen zwei Buchstaben in Pixel. Dieser Parameter kann in Fällen, in denen die Lücken zwischen Buchstaben kleiner sind als die zwischen Punkten innerhalb der Buchstaben, zu einer genaueren Segmentierung führen. Falls die minimale Größe nicht bekannt oder größer als die maximale Lücke zwischen den Punkten innerhalb eines Buchstaben ist, kann der Wert 'auto' übergeben werden. Falls 'dot_print' auf 'false' gesetzt ist, hat dieser Parameter keine Auswirkung. Sind Buchstaben sehr nah nebeneinander gedruckt, jedoch die Größe der minimalen Lücke unbekannt, kann stattdessen 'dot_print_tight_char_spacing' gesetzt werden.
Werteliste: Integer- oder float-Werte größer gleich 0
Defaultwert: 'auto'
Größe der größten Lücke zwischen
zwei Punkten innerhalb eines Buchstabens in Pixel. Um beliebige
Punktdruck-Buchstaben zu segmentieren kann der Wert 'auto'
übergeben werden. Falls 'dot_print' auf 'false'
gesetzt ist, hat dieser Parameter keine Auswirkung. Ist die größte
Lücke zwischen zwei Punkten größer als die kleinste Lücke zwischen
zwei Buchstaben, sollte zusätzlich 'dot_print_tight_char_spacing'
oder 'dot_print_min_char_gap' entsprechend gesetzt werden. Wird
'dot_print_max_dot_gap' gesetzt, kann die Laufzeit von
find_text
erheblich reduziert werden.
Werteliste: Integer- oder float-Werte größer gleich 1
Defaultwert: 'auto'
Struktur der Textzeilen
legt die Struktur des gesuchten Textes fest. Für jede Zeile wird der Abstand zwischen aufeinanderfolgenden Buchstaben berechnet. Ausgehend von diesen Abständen wird die Zeile in einzelne Buchstabenblöcke aufgeteilt. Hierbei werden sehr kleine Zeichen wie z.B. '.', '_' und '-' vernachlässigt und als Leerzeichen interpretiert. Darüber hinaus können zusätzliche Trennzeichen angegeben werde, die ebenfalls vernachlässigt werden sollen, siehe 'text_line_separators' . Für die entstandenen Buchstabenblöcke wird dann geprüft ob sie einer der übergebenen Strukturen entsprechen.
Eine Struktur besteht aus einem String, der die Anzahl der Buchstaben/Ziffern pro Buchstabenblock enthält, welche durch Leerzeichen getrennt sind. Soll zum Beispiel ein Datum mit jeweils zwei Ziffern für Tag, Monat und Jahr gefunden werden, wäre die Struktur '2 2 2'. Kann das Jahr auch aus vier Ziffern bestehen, wäre die Struktur '2 2 2-4', so dass der letzte Block aus zwei bis vier Buchstaben/Ziffern bestehen kann. Es ist möglich mehr als eine Struktur zu setzen, indem ein Index an den Parameter angehängt wird, z.B. 'text_line_structure_0', 'text_line_structure_1'. Wenn 'text_line_structure' auf einen leeren String ' ' gesetzt ist, kann der zu findende Texte aus jeder beliebigen Struktur bestehen.
Jede gefundene Struktur wird als einzelne Zeile gespeichert. Folglich
bezieht sich dann 'line' in get_text_object
auf die gefundenen
Strukturen. Soll stattdessen die komplette Zeile zurückgeliefert werden,
die eine Struktur enthält, kann 'return_whole_line' auf
'true' gesetzt werden.
Defaultwert: ' '
String von Trennzeichen, die bei der Suche nach Strukturen vernachlässigt werden sollen, siehe 'text_line_structure' . Hierbei ist zu beachten, dass ein solches Trennzeichen immer auch im Klassifikator enthalten sein muss. Sollen z.B. die Zeichen ':' und '\' als Trennzeichen behandelt werden, kann der String ':\\' übergeben werden. Hierbei ist zu beachten, dass das vorrangeführte '\' die Verwendung des Symbols '\' als Literal ermöglicht.
Werteliste: '/' ,':' , ':\\' , '\\/:' ,...
Defaultwert: ' '
'true' falls nur die gefundenen Strukturen als Zeilen zurückgegeben werden sollen, 'false' falls jede Zeile, die eine passende Stuktur enthält komplett zurückgegeben werden soll.
Werteliste: 'true' ,'false'
Defaultwert: 'false'
OCR Klassifikator
OCR Klassifikator, der für die
Textsegmentierung und Klassifikation verwendet wird. Ein
initialer Klassifikator wird bereits bei der Erstellung des Textmodells
gesetzt. Siehe create_text_model_reader
für weitere
Informationen.
Anzahl der zu bestimmenden besten Klassen
für jeden Buchstaben. (Falls zum Beispiel 'num_classes' auf 2
gesetzt wird, speichert find_text
für jeden Buchstaben die Klasse
mit der höchsten und der zweithöchsten erreichten Konfidenz ab). Die
entsprechenden Klassen können anschließend mit get_text_result
abgefragt werden.
Falls der Wert 'num_classes' die Anzahl der Klassen des im
Textmodell gespeicherten Klassifikators überschreitet, wird
'num_classes' intern entsprechend reduziert. Die tatsächlich
verwendete Anzahl von Klassen kann mittels get_text_result
abgefragt werden. Für Klassifikatoren mit Rückweisungsklasse sollte
'num_classes' mindestens 2 sein, um auf das
zweitbeste Klassifikationsergebnis zurückgreifen zu können, falls ein
Buchstabe als Rückweisungsklasse erkannt wurde.
Werteliste: Integer größer oder gleich 1.
Defaultwert: 2
Parameter für Textmodelle mit Mode = 'manual'
Höhe eines Buchstabens in Pixel. Dieser Wert bezieht sich auf einen Großbuchstaben. Standardwert: 30px
Breite eines Buchstabens in Pixel. Dieser Wert bezieht sich auf einen Großbuchstaben. Standardwert: 20px
Strichbreite eines Buchstabens in Pixel. Standardwert: 4.0px
Maximale Abweichung der Buchstaben von der Grundlinie einer Zeile in Prozent der Buchstabenhöhe. Standardwert: 0.15
'dark_on_light' wenn der zu segmentierende Text dunkler ist als sein Hintergrund, ansonsten 'light_on_dark' . Standardwert: 'dark_on_light'
'true' wenn der zu segmentierende Text nur Großbuchstaben oder Zahlen enthält, ansonsten 'false' . Standardwert: 'false'
'true' wenn der zu segmentierende Text ein Punktdruck ist, ansonsten 'false' . Standardwert: 'false'
'true' wenn der zu segmentierende Text sehr viele lokale Änderungen der Polarität aufgrund von Reflektionen enthält, ansonsten 'false' . Standardwert: 'false'
'true' wenn sich Linien in der Nähe des zu segmentierenden Textes befinden, ansonsten 'false' . Standardwert: 'false'
'true' wenn Regionen, die den Rand der Bilddomäne berühren verworfen werden sollen, ansonsten 'false' . Standardwert: 'false'
Maximale Anzahl zu findender Zeilen.
Null oder ein negativer Wert impliziert keine Begrenzung. Wird
'manual_max_line_num' auf einen kleinen Wert gesetzt, kann dies
einen positiven Einfluss auf die Laufzeit von find_text
haben.
Standardwert: ohne Begrenzung
'true' wenn Interpunktionszeichen (wie Punkt oder Komma) zu den segmentierten Buchstaben hinzugefügt werden sollen. Standardwert: 'true'
'true' wenn Trennzeichen wie ein Minus oder das Gleichheitszeichen zu den segmentierten Buchstaben hinzugefügt werden sollen. Standardwert: 'true'
'true' wenn Fragmente wie der Punkt auf einem 'i' zu den segmentierten Buchstaben hinzugefügt werden sollen. Das kann auch dazu führen, dass Störungen zu den segmentierten Buchstaben hinzugefügt werden. Standardwert: 'true'
minimale Größe von Fragmenten die hinzugefügt werden, sofern 'manual_add_fragments' auf 'true' gesetzt ist. Standardwert: 1
legt die Struktur des zu findenden Textes fest um den Suchraum zu verkleinern und falsche Treffer zu vermeiden. Die Struktur besteht aus einem String, der die Anzahl der Buchstaben/Ziffern pro Buchstabenblock enthält, welche durch Leerzeichen getrennt sind. Soll zum Beispiel ein Datum mit jeweils zwei Ziffern für Tag, Monat und Jahr gefunden werden, wäre die Struktur '2 2 2'. Kann das Jahr auch aus vier Ziffern bestehen, wäre die Struktur '2 2 2-4', so dass der letzte Block aus zwei bis vier Buchstaben/Ziffern bestehen kann. Es ist möglich mehr als eine Struktur zu setzen, indem ein Index an den Parameter angehängt wird, z.B. 'manual_text_line_structure_0', 'manual_text_line_structure_1'. Wenn 'manual_text_line_structure' auf einen leeren String ' ' gesetzt ist, kann der zu findende Texte aus jeder beliebigen Struktur bestehen.
'true' wenn ausgewählte
Zwischenergebnisse in der Ausgabe von find_text
vorgehalten werden
sollen, damit sie später mittels get_text_result
oder
get_text_object
abgefragt werden können.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
TextModel
(input_control, Zustand wird modifiziert) text_model →
(handle)
Textmodell.
GenParamName
(input_control) string(-array) →
(string)
Zu setzende Parameter.
Defaultwert: 'min_contrast'
Wertevorschläge: 'add_fragments' , 'dot_print' , 'dot_print_max_dot_gap' , 'dot_print_min_char_gap' , 'dot_print_tight_char_spacing' , 'eliminate_border_blobs' , 'max_char_height' , 'max_char_width' , 'max_stroke_width' , 'min_char_height' , 'min_char_width' , 'min_contrast' , 'min_stroke_width' , 'num_classes' , 'ocr_classifier' , 'polarity' , 'return_punctuation' , 'return_separators' , 'return_whole_line' , 'separate_touching_chars' , 'text_line_separators' , 'text_line_structure' , 'text_line_structure_0' , 'text_line_structure_1' , 'text_line_structure_2' , 'manual_add_fragments' , 'manual_base_line_tolerance' , 'manual_char_height' , 'manual_char_width' , 'manual_eliminate_border_blobs' , 'manual_eliminate_horizontal_lines' , 'manual_fragment_size_min' , 'manual_is_dotprint' , 'manual_is_imprinted' , 'manual_max_line_num' , 'manual_persistence' , 'manual_polarity' , 'manual_return_punctuation' , 'manual_return_separators' , 'manual_stroke_width' , 'manual_text_line_structure' , 'manual_text_line_structure_0' , 'manual_text_line_structure_1' , 'manual_text_line_structure_2' , 'manual_uppercase_only'
GenParamValue
(input_control) string(-array) →
(integer / real / string)
Werte der Parameter.
Defaultwert: 10
Wertevorschläge: 'true' , 'false' , 'dark_on_light' , 'light_on_dark' , 'both' , 'auto' , 'standard' , 'enhanced'
read_image (Image, 'numbers_scale') create_text_model_reader ('auto', 'Document_Rej.omc', TextModel) * Optionally specify text properties set_text_model_param (TextModel, 'min_char_height', 20) find_text (Image, TextModel, TextResultID) * Return character regions and corresponding classification results get_text_object (Characters, TextResultID, 'all_lines') get_text_result (TextResultID, 'class', Class)
Sind alle Eingabeparameter korrekt, gibt set_text_model_param
den
Wert 2 (H_MSG_TRUE) zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt.
OCR/OCV