ReParm
typedef struct ReParm_tag {
long general;
long prep;
short deskew_min;
short filler1;
short noise_diameter_percent;
short noise_diameter_pixel;
short noise_width_percent;
short noise_length_percent;
short noise_width_pixel;
short noise_length_pixel;
short rem_back_gray_delta;
short rem_back_gray_level;
RelGridParm *gridparm;
long gridparm_maxlen;
long typograph;
long filler2;
short line_space, base_line;
short char_space_min;
short char_space_max;
long options;
long labels_size;
short *wlabels;
short *wrejects;
long alc;
long font;
short reject_limit;
short filler3[3];
long pos;
INT_PTR hookparm;
} ReParm;
Elemente:
general
-
Dieser Parameter steuert die Arbeit von
re?_do().
Wenn GENERAL_PREP_ONLY gesetzt ist, wird nur die Vorverarbeitung durchgeführt.
Wenn GENERAL_LINESHADOW_ONLY gesetzt ist, bricht rec_do() auch nach der
Vorverarbeitung ab, und rel_do() bricht nach der Vorklassifizierung von Hand- und
Maschinendruck ab. Das flag GENERAL_HOOKENGINE_LOADED zeigt nach
re?_init() an, b eine Hook-Engine gefunden und geladen wurde.
Diese Hook-Engine kann mit GENERAL_HOOKENGINE_ON aktiviert werden.
GENERAL_...
GENERAL_LINESHADOW_ONLY steuert die Arbeit von re?_do()
GENERAL_HOOKENGINE_LOADED signalisiert nach re?_init(), ob eine Hook-Engine gefunden und geladen wurde.
GENERAL_HOOKENGINE_ON aktiviert eine Hook-Engine.
GENERAL_PREP_ONLY die KADMOS-Erkennung kann ausgeschaltet werden.
GENERAL_LINESHADOW_ONLY zu der Vorverarbeitung wird eine Klassifikation durchgeführt, die KADMOS-Erkennung ist ausgeschaltet.
GENERAL_LINEPOSITION_ONLY es wird nur die notwendige Vorverarbeitung durchgeführt, keine Zeichenerkennung. Die Ergebnisse von rep_do() werden wie gewohnt geliefert, die Ergebnisstrukturen enthalten nur die Position der (sonst zu erkennenden) Zeilen. Gleiches gilt für die Nachricht rep->hWND_line_message und die Hook-Funktion rep->rel_hook, falls vorhanden.
GENERAL_FEATURES_ONLY kann unter parm.general in der Struktur RecData gesetzt werden. Bei einem nachfolgenden rep_do()-Aufruf wird dann nach der Merkmalsbildung aufgehört. Mit der Funktion rec_get_features() können die Features abgefragt werden.
GENERAL_HOOKENGINE_LOADED zeigt an ob eine weitere Erkennungs-Engine geladen wurde.
GENERAL_HOOKENGINE_ON Eine zweite Erkennugs-Engine kann aktiviert werden
GENERAL_*CALL ist zum internen Gebrauch bestimmt
GENERAL_RECALL Maske für RECCALL bis GENERAL_RESPELLCALL
GENERAL_REPMULTITHREADING Threads-Verwaltung.
⚠️ Dieser Parameter sollte in Serverversionen von KADMOS nicht gesetzt werden, wenn mehrere KADMOS-Instanzen parallel gestartet werden.
GENERAL_MULTITHREADING Maske für die Multithreading-Parameter
prep
-
PREP_NOSPACEREMOVAL
- Bei den Modulen
REC, REL und REP gibt es die Möglichkeit, eine Schmutzentfernung
zu aktivieren. Dabei werden anschliessend die Bilder der Einzelzeichen so ausgeschnitten, dass sie an den Rändern
keine Weiss-Spalten oder -Zeilen haben. Mit PREP_NOSPACEREMOVAL kann diese Weiss-Rand- Entfernung
ausgeschaltet werden.
PREP_NOSPOTREMOVAL
- Ausschalten der Fleckentfernung.
Bei der Zeilen-Erkennung wird unter anderem geprüft, ob einzelne Zeichen mit Flecken behaftet sind, die von
ausserhalb in die Zeile ragen. Die Flecken werden normalerweise entfernt. Mit PREP_NOSPOTREMOVAL wird diese
Fleckentfernung ausgeschaltet.
PREP_AUTO_NOISEREDUCTION
- Adaptiv gesteuerte Schmutzentfernung.
PREP_SCALING
- Ist dieser Wert bei
prep gesetzt, und ist in den übergebenen Bildern eine Auflösung angegeben, so werden die
Bilder vor der Erkennung auf eine Auflösung von 300 dpi transformiert. Zeilen- und Einzelzeichenbilder mit mehr als
128 Pixelzeilen werden in jedem Fall verkleinert. Die Wirkung wurde ab Version 4.0i für Bilder ohne Angabe einer
Auflösung erweitert. Ist er gesetzt und die spezifizierte Auflösung xresolution==0 oder
yresolution==0, so werden die übergebenen Bilder in rel_do() oder rec_do() wie
folgt skaliert:
- Bei reinen Handschrift-Klassifikatoren auf eine Zeilenanzahl von 64 Pixel,
- bei Hand+Maschine-Klassifikatoren auf eine Zeilenanzahl von 48 Pixel,
- bei reinen Maschinenschrift-Klassifikatoren auf eine Zeilenanzahl von 32 Pixel.
PREP_RGB...
| before | after |
PREP_RGBTOGRAY_COLORMIN Mit diesem Parameter werden Farbbilder in Graubilder konvertiert wobei die Farben aufgehellt werden. |
 |  |
PREP_RGBTOGRAY_COLORMAX Mit diesem Parameter werden Farbbilder in Graubilder konvertiert wobei die Farben verstärkt werden. |
 |  |
 |  |
PREP_RGBTOGRAY_COLORGRAY
- Mit diesem Parameter werden Farbbilder in Graubilder konvertiert wobei ein Mittelwert zwischen
PREP_RGBTOGRAY_COLORMIN
und PREP_RGBTOGRAY_COLORMAX verwendet wird.
PREP_GRAYTOBIN_UNIFORM
- Ist dieser Parameterwert gesetzt, so wird die Schwellenbildung nicht adaptiv, sondern mit einer Schwelle für das ganze
Bild durchgeführt. Für gleichmässig ausgeleuchtete Bilder wird das Setzen dieses Wertes empfohlen.
PREP_GRAYTOBIN_*
- Diese Parameter erstellen aus einem Graubild ein Schwarz-Weiss-Bild. In fünf Stufen kann die Pixel-Schwärzung des
Ergebnisses eingestellt werden.
| Stufe 1 | PREP_GRAYTOBIN_VERY_THIN | Sehr schwache Schwärzung. |
| Stufe 2 | PREP_GRAYTOBIN_THIN | Schwache Schwärzung. |
| Stufe 3 | PREP_GRAYTOBIN_MEDIUM | Mittlere Schwärzung. |
| Stufe 4 | PREP_GRAYTOBIN_THICK | Starke Schwärzung. |
| Stufe 5 | PREP_GRAYTOBIN_VERY_THICK | Sehr starke Schwärzung. |
| Beispiel für Binarisierungsalternativen: |
| Originalbild: |  | Stufe 1: |  |
| Stufe 2: |  | Stufe 3: |  |
| Stufe 4: |  | Stufe 5: |  |
PREP_BINFILTER_*
-
Mit diesen Parametern lassen sich Zeichen glätten, ausgefranste Zeichen werden verdickt oder ausgedünnt.
Schmale Objekte wie z.B. Schmutzflecken lassen sich wegfiltern. Nadeldruck kann für die Erkennung aufbereitet werden.
Es sind fünf verschiedene Stufen möglich:
| Stufe 1 | PREP_BINFILTER_VERY_THIN | Glättung mit starker Ausdünnung |
| Stufe 2 | PREP_BINFILTER_THIN | Glättung mit Ausdünnung |
| Stufe 3 | PREP_BINFILTER_MEDIUM | Glättung ohne Ausdünnung |
| Stufe 4 | PREP_BINFILTER_THICK | Glättung mit Verdickung |
| Stufe 5 | PREP_BINFILTER_VERY_THICK | Glättung mit starker Verdickung |
| Beispiel Nadeldruck: |
| Originalbild: |  | Filter Stufe 1: |  |
| Filter Stufe 2: |  | Filter Stufe 3: |  |
| Filter Stufe 4: |  | Filter Stufe 5: |  |
| Example with Background Dirt: |
| Original image: |  | Filter Stufe 1: |  |
| Filter Stufe 2: |  | Filter Stufe 3: |  |
| Filter Stufe 4: |  | Filter Stufe 5: |  |
Beispiel mit allen Mögluchkeiten,
Originalbild: 
Bin → ↓ Filter | 1 | 2 | 3 | 4 | 5 |
| X |  |  |  |  |  |
| 1 |  |  |  |  |  |
| 2 |  |  |  |  |  |
| 3 |  |  |  |  |  |
| 4 |  |  |  |  |  |
| 5 |  |  |  |  |  |
PREP_INPLACE
- Beim Setzen dieses Parameters wird das zur Erkennung bereitgestellte Bild mit dem gefilterten bzw. dem von Grau nach
Schwarz-Weiss gewandelten Bild überschrieben. Somit wird der Zugriff auf das Resultat aus
PREP_BINFILTER_*
und PREP_GRAYTOBIN_* nach der Erkennung möglich.
PREP_SCALING
- transformiert Bilder auf eine Auflösung von 300 dpi.
deskew_min
- Schwellenwert, ab dem eine Aufrichtung erfolgt,
Null bedeutet keine Aufrichtung (Voreinstellung).
filler1
- 8 Byte Alignment.
noise_diameter_percent, noise_diameter_pixel
- Die Module
REC, REL und REP bieten die Möglichkeit,
Schmutz in Abhängigkeit von seinem Durchmesser zu klassifizieren und zu entfernen. Die Angabe kann sowohl relativ
zur Strichdicke der zugrundeliegenden Zeichen als auch absolut in Bildpunkten erfolgen. Sofern das Modul REC
von REL aufgerufen wird, erfolgt die Schmutzentfernung nur in REL, wird REL
von REP aufgerufen, so erfolgt die Schmutzentfernung nur in REP.
noise_width_percent, noise_length_percent,
noise_width_pixel, noise_length_pixel
- In den Modulen
REC, REL und REP kann die Schmutzentfernung nicht
nur über den Schmutz-Durchmesser gesteuert werden, sondern auch über Dicke und Länge des Schmutzes.
Sofern diese Schmutzentfernung relativ zur Strichdicke der zugrundeliegenden Zeichen erfolgen soll, besetze man die
Parameter noise_width_percent und noise_length_percent entsprechend. Für eine absolute
Angabe in Bildpunkten verwende man noise_width_pixel und noise_length_pixel. Die Angaben
unter .._percent und .._pixel wirken additiv, d.h. Schmutz wird dann detektiert und entfernt,
wenn er wenigstens eine der gegebenen Spezifikationen erfüllt.
- 🚧
rem_back_gray_delta
- Hintergrund aus einem Farbbild entfernen - maximaler Unterschied R-G-B als "graues" Pixel
🚧 rem_back_gray_level
- Hintergrund aus einem Farbbild entfernen - Welches ist das hellste Pixel ohne Hintergrundgrau?
*gridparm
- Feld von
RelGridParm-Strukturen.
gridparm_maxlen
- Dieser Parameter beschreibt die Grösse des in der Struktur
ReParm vom aufrufenden
Programm unter gridparm bereitgestellten Speichers zur Aufnahme der Beschreibung zu suchender
Grid-Elemente (Linien, Boxen, Kämme) in Struktureinheiten RelGridParm.
typograph
- Hier können den Modulen
REL oder REP zusätzliche Informationen
zum vorliegenden Schriftgut mitgegeben werden, um die Bearbeitung zu vereinfachen und zu beschleunigen, sofern diese
bekannt sind. Zur vereinfachten Beschreibung wurden dafür in KADMOS.h Konstanten bereitgestellt, die beliebig durch
logisches ODER "|" miteinander kombiniert dem Parameter typograph zugewiesen werden können,
sofern dies sinnvoll ist.
Für REL und REP:
TYPO_PROPORTIONAL Es kann Proportionalschrift vorausgesetzt werden.
TYPO_EQUIDISTANT Es kann äquidistante Schrift vorausgesetzt werden.
TYPO_NOLIGATURES Bei vielen Schriften, insbesondere jedoch bei Handschrift, sind benachbarte Zeichen ineinandergestellt.
Man bezeichnet dies als 'Ligaturen'. Die Segmentierung dieser Ligaturen ist oft ein sehr schwer lösbares Problem und
erfordert besondere Algorithmen. Insbesondere bei äquidistanten Maschinenschriften gibt es jedoch keine Ligaturen,
die entsprechenden Algorithmen können abgeschaltet werden. Dazu setze man diesen Wert.
TYPO_NOTOUCHINGCHARS
Es kann vorausgesetzt werden, dass keine sich berührenden Zeichen vorliegen.
TYPO_NOSEGALTERNATIV
Zu den schwierigsten Aufgaben bei der Zeichenerkennung gehört die Segmentierung der Einzelzeichen.
KADMOS versucht bei schlecht erkannten Zeichen eine erneute, veränderte Segmentierung. Will man dies ausschalten
(etwa bei sehr guten Vorlagen äquidistanter Zeichenteilung) so setze man diesen Wert.
TYPO_4_SEGALTERNATIV TYPO_8_SEGALTERNATIV
Es können 4 bzw. 8 Segmentieralternativen zugelassen werden.
TYPO_KEEPIMG
Bei einer guten Segmentierung ist es nicht mehr möglich, die segmentierten Einzelzeichen durch ihr umschreibendes
Rechteck zu charakterisieren. Falls man also direkt auf die segmentierten Einzelzeichen zugreifen will, muss dieser
Parameterwert bei typograph gesetzt werden. Auf die Einzelzeichen kann dann unter result_image
zugegriffen werden.
TYPO_EXTENDED_SEGMENTATION
Gibt insbesondere bei Maschinenschrift etwa 10% weniger Segmentierfehler, bei etwas längerer Rechenzeit.
filler2
- 8 Byte Alignment.
line_space, base_line
- Diese Parameter sind optional.
line_space ist nur dann zu besetzen, wenn innerhalb eines
mehrzeiligen Textbereiches erkannt werden soll. Der Wert gibt den Zeilenabstand an. Er wird von REC
benötigt, um etwa zwischen einem Komma auf der einen und einem Apostroph auf der nächsten Zeile unterscheiden zu
können. Um zwischen U und u unterscheiden zu können, wird ausser der Form des Zeichens Information benötigt,
wo das Zeichen in einer Zeile zu finden ist und welche Grösse es relativ zur Zeilenhöhe hat. Der Parameter
base_line legt den Massstab fest - die Höhe eines Grossbuchstabens wie 'A', 'B' oder 'C'. Das Modul
REP benutzt diesen Parameter - sofern er spezifiziert wurde - zur verbesserten Zeilentrennung.
char_space_min, char_space_max
- Diese Parameter beschreiben den minimalen und maximalen Abstand zweier aufeinanderfolgender Zeichen
des gegebenen fonts, also den Abstand vom Anfang eines Zeichens zum Anfang des nächsten, gemessen in Bildpunkten.
Sofern diese Werte bekannt sind, kann damit die Sicherheit der Zeichentrennung verbessert werden, ansonsten besetze
man sie mit 0.
options
-
OPTIONS_BASICLABELS
- Sollen bei der Erkennung die Basiskennungen zurückgeliefert werden anstelle der voreingestellten Gruppenkennungen
oder will man die Erkennung in Basiskennungen spezifizieren, so setze man diesen Wert.
OPTIONS_BASICLABELS_PARM
- Hier kann gewählt werden dass Basis- statt Gruppenkennungen in der Struktur
ReParm verwendet werden sollen.
OPTIONS_BASICLABELS_RESULT
- Hier kann gewählt werden dass Basis- statt Gruppenkennungen in der Struktur
RelResult oder RepResult verwendet werden sollen.
OPTIONS_EXCLUDE
- Sollen bei der Erkennung keine gut bewerteten Alternativen zurückgeliefert werden, also soll eine eindeutige
Entscheidung oder eine Rückweisung erzwungen werden, so setze man diesen Wert. In der Praxis sollte man sich
jedoch darüber im klaren sein, dass sich bestimmte Alternativen zuweilen nicht ausschliessen lassen - es sei an
die 0-O-Problematik oder an ein isoliert geschriebenes x erinnert. In diesen Fällen werden dennoch die nicht
auszuschliessenden Alternativen mit ggf. guter Bewertung zurückgeliefert. Die Besetzung von
OPTIONS_EXCLUDE
macht immer dann Sinn, wenn hohe Fehlersicherheit gefordert ist und dafür eine erhöhte Zahl von Rückweisungen
in Kauf genommen wird. So würde etwa ein Zeichen 5, welches mit grosser Ähnlichkeit zu einer 6 geschrieben wurde, unter
Umständen sowohl als 5 als auch als 6 mit nicht zu schlechtem Vertrauenswert erkannt. Bei Setzung von
OPTIONS_EXCLUDE werden in solchen Fällen Rückweisungen erzeugt.
⚠️ Wichtig: Beim Setzen dieser Option werden ähnlich viele Alternativen zurückgeliefert wie ohne,
beim Auftreten von Alternativen erhalten diese jedoch einen schlechten Vertrauenswert (rec_value).
OPTIONS_STRICTSELECT
- Ist man sicher, dass im vorgelegtem Belegmaterial die abgeschalteten Kennungen (
labels,alc) nie
vorkommen, so ist es sinnvoll, diese Option zu setzen. Beispiel: B ist deaktiviert und wird zur Erkennung vorgelegt.
Gesetztes OPTIONS_STRICTSELECT ergibt eine 8, nichtgesetztes OPTIONS_STRICTSELECT ergibt
eine Rückweisung. Dies gilt für Basiskennungen und Gruppenkennungen.
OPTIONS_FAST_GRID
- Aktivieren einer schnelleren Grid-Entfernung mit nur geringfügig schlechteren Resultaten. Es kann auch bei
re_layout() gesetzt werden sowie bei re_page().
OPTIONS_FAST_REC
- Das Setzen dieser Option bewirkt eine schnellere Erkennung bei den Handschrift-Klassifikatoren. Die Erkennungsqualität
ist geringfügig schlechter, indem manche Werte von
rec_value ungerechtfertigterweise niedriger sind
als ohne diese Option. Die Alternativen bleiben erhalten, etwas öfter als sonst wird Schmutz als ein sinnvolles
Zeichen erkannt.
OPTIONS_FAST
- Das setzen dieser Option bewirkt die Erkennung wie
OPTIONS_FAST_GRID and OPTIONS_FAST_REC zusammen.
OPTIONS_REL_REC_REPEAT
- Nach einem ersten Durchlauf von
rel_do() oder rep_do() werden die erkannten Einzelzeichen erneut
aus dem Farb- oder Graubild extrahiert und einzeln binarisiert und erkannt. Es resultiert eine deutlich verbesserte
Erkennungsqualität.
OPTIONS_REL_CLEAR
- Dieser Parameter ist zur Unterstützung des Lesens von Normschrift-Zeilen, etwa CMC7 oder E13b gedacht. Diese Zeilen
enthalten oft Schmutz am Anfang oder Ende. Dieser Schmutz wird wie üblich zu erkennen versucht. Gegebenenfalls
werden nun jedoch die als Schmutz erkannten Resultate aus
RelGraph und RelResult entfernt.
labels_size
- Allokationsgrösse von
wlabels.
REPARM_LABELS_SIZE_MAX Gibt die maximale Grösse von Wlabels an.
wlabels;
- Hier kann durch Angabe einzelner Zeichenklassen eine Auswahl aus dem im Klassifikator (Rec-Datei)
verfügbaren Zeichensatz getroffen werden. Enthält die Rec-Datei etwa die Zeichen {0,1,2,3,4,5,6,7,8,9,+,-},
so kann durch Besetzung von
labels mit "+ - " die Erkennung auf die Zeichen '+' und '-' beschränkt werden.
Jede dem Klassifikator bekannte Zeichenklasse durch zwei oder mehr short charakterisiert. Ein Leerstring
ist gleichbedeutend mit der Auswahl aller Zeichenklassen des jeweiligen Klassifikators, sofern der Parameter alc
nicht besetzt ist. Die Parameter alc und labels wirken additiv, wenn sie beide spezifiziert
wurden (siehe Beschreibung von alc). Welche Zeichenklassen einem Klassifikator (Rec-Datei) bekannt sind,
kann durch einen Aufruf von rec_info(), rel_info() oder rep_info() ermittelt werden.
Diese Funktionen liefern hier (unter labels) diese Zeichenklassen nach gleicher Konvention zurück.
Ausserdem findet man die dem jeweiligen Klassifikator bekannten Zeichenklassen in der zu diesem Klassifikator gehörigen
Alc-Datei. Eine solche Alc-Datei ist eine Text-Datei im Format der Windows INI-Dateien.
Zu beachten ist, dass KADMOS Gruppenkennungen und Basiskennungen unterscheidet. Als Beispiel sei die Gruppe der Zahlen
Handschrift-Neun genannt. Die Gruppenkennung hierzu ist 9_, in dieser Gruppe sind als Basiskennungen 9_, 91 und 93 enthalten.
Der Integrator oder Anwender kann selbst bestimmen, ob die Kommunikation mit KADMOS über Gruppenkennungen oder
Basiskennungen erfolgen soll. Voreingestellt sind Gruppenkennungen.
wrejects
- Wird verwendet um im Klassifikator enthaltene Rückweisungsklassen zu selektieren und wird nur
für den Parameter OPTIONS_RESTRICT_LABELS verwendet
alc
- Hier kann, wie bei
wlabels, eine Auswahl aus dem im Rec-Datei verfügbaren Zeichensatz
getroffen werden. ALC steht für "Alphabet Code". Durch solche Einschränkungen kann man die
Erkennungssicherheit verbessern und die Arbeitsgeschwindigkeit erhöhen. Der Parameter alc wird bei
jedem Aufruf von re?_do() oder re?_info() ausgewertet, die ermittelten Kennungen werden ggf.
dem Parameter wlabels zugeschlagen. Dann wird alc stets wieder auf den
Wert 0 (=ALC_DEFAULT) zurückgesetzt. Der Wert 0 oder ALC_DEFAULT bedeutet keine
Einschränkung.
Welche Zeichenklassen für einen bestimmten Klassifikator zu den jeweiligen ALC-Konstanten
verfügbar sind und ausgewählt werden können, findet man auch im Klartext in der zu diesem Klassifikator
gehörigen Alc-Datei. Die ALC-Konstanten können mit logischem ODER
"|" verknüpft werden. _INC_PENWIN ist die Dekleration für PEN aus PEN-Windows.
Folgende ALC-Konstanten werden von KADMOS unterstützt:
ALC_DEFAULT | Voller Zeichensatz des Klassifikators, sofern wlabels leer ist. |
ALC_LCALPHA | Kleinbuchstaben |
ALC_UCALPHA | Grossbuchstaben |
ALC_ALPHA | Kleinbuchstaben und Grossbuchstaben |
ALC_NUMERIC | Ziffern |
ALC_ALPHANUMERIC | Kleinbuchstaben, Grossbuchstaben und Ziffern |
ALC_SPECIAL | Satz- und Sonderzeichen. |
ALC_ACCENT | Akzentbezeichnung |
ALC_ALL | Alle Zeichen |
ALC_GESTURES | Zur Zeit nicht benutzt. |
font
- Dieser Parameter beinhaltet den gegebenen font.
font_HAND
font_MACHINE
font_HM (font_HAND|font_MACHINE)
font_LATIN
font_FRAKTUR
font_GREEK
font_CYRILLIC
font_ARABIC
font_FARSI
font_HEBREW
font_THAI
font_LANGUAGE(font_LATIN|font_FRAKTUR|font_GREEK|font_CYRILLIC
|font_ARABIC|font_FARSI|font_HEBREW|font_THAI)
font_OCRA
font_OCRB
font_F7B
font_SEMI
font_CMC7
font_E13B
font_LCD
font_BRAILLE
font_NORM (font_OCRA|font_OCRB|font_CMC7|font_E13B|font_F7B
|font_SEMI|font_LCD|font_BRAILLE)
font_LN (font_LANGUAGE|font_NORM)
font_ALL
reject_limit
- Dieser Parameter bestimmt den Vertrauenswert (
rec_value), ab dem intern Alternativen
bereitgestellt und als Erkennungsergebnisse zurückgeliefert werden. Er hat wesentlichen Einfluss auf die Rechenzeit.
Voreinstellung ist ein Wert von 150.
filler3
- 8 Byte Alignment.
pos
- Das Modul
REL verwendet zur Unterscheidung von Zeichen Informationen über die Lage
des Zeichens in der Textzeile, so etwa zur Unterscheidung von U und u. Mit dem Parameter pos kann gesteuert
werden, inwieweit diese Lage der Zeichen in der Zeile zur Bewertung des Erkennungsergebnisses herangezogen werden soll.
POS_NOLINECONTEXT
- Sollen die Zeichen nur aus ihrer geometrischen Gestalt erkannt werden, ohne Berücksichtigung ihrer Lage in der
Zeile, so setze man diesen Wert.
POS_SOFTLINECONTEXT
- Wie oben beschrieben, verwendet REL zur Unterscheidung von Zeichen Informationen über die Lage des Zeichens in der Textzeile.
Dazu wird für jede Alternative der Erkennung ein Wert für die Grösse der Abweichung von der Soll-Zeilenlage
ermittelt. Dieser Wert wird zum Vertrauenswert
rec_value[i] jeder Alternative addiert. Ist
POS_SOFTLINECONTEXT gesetzt, so wird die berechnete Abweichung derart normiert, dass für das am besten
positionierte Zeichen ein Abweichungswert Null entsteht.
POS_HARDLINECONTEXT
- Soll die Lage der Zeichen in der Zeile besonders stark bewertet werden, so setze man diesen Wert.
POS_NOWORDCONTEXT
- Sollen die Zeichen nur aus ihrer geometrischen Gestalt und ihrer Lage in der Zeile erkannt werden, jedoch ohne
Berücksichtigung der anderen Zeichen eines Wortes (Zahlwort ...), so setze man diesen Wert.
hookparm
- Hier kann eine eigene Funktion angegeben werden die der vorgeschriebenen Deklaration genügt.
Die Module
REP und REL rufen nach erfolgter Zeilen- und Zeichensegmentierung letztendlich stets
die Funktion rec_do() des Moduls REC mit einer zugehörigen Struktur RecData auf.
Ist bei rec_hook eine Funktion eingetragen, so wird diese unmittelbar nach jedem dieser
rec_do()-Aufrufe mit der zugehörigen RecData-Struktur ausgeführt. Man hat dadurch
eine ganze Reihe von Möglichkeiten zur Verfolgung und sogar Steuerung der Einzelzeichen-Erkennung, zur Sammlung der
segmentierten Rasterbilder oder auch zum Abbruch der Erkennung. Es wird nämlich der Rückgabewert der Funktion
rec_hook derart ausgewertet, dass bei einem Wert verschieden von RE_SUCCESS das Modul
rel_do() seine Arbeit beendet und ebenfalls mit diesem Rückgabewert zurückkehrt. Dadurch wird
auch gegebenenfalls das Modul rep_do() seine Arbeit beenden und mit diesem Wert zurückkehren. Will man
eine derartige hook-Funktion mit eigenen Parametern versorgen, so ist hierfür der Pointer
hookparm in der Struktur ReParm vorgesehen. Hinterlegt man etwa vor einem Aufruf von rel_do() bei
hookparm eine Adresse (z.B. auf private Daten), so wird diese Adresse von rel_do() vor jedem
Aufruf von rec_do() in die zugehörige Struktur RecData auf hookparm kopiert,
wo sie von der hook-Funktion abgerufen werden kann.
Verweise: