RecResult, RelResult
typedef struct RelResult_tag {
long left, top;
long width, height;
long result_flags;
void *result_image;
long result_width;
long result_height;
long projection[2];
short italic, bold;
short strokelen, black;
#if defined(__STDC__)
char rec_char[REC_ALT][REC_CHAR_SIZE];
#else
union {
char rec_char[REC_ALT][REC_CHAR_SIZE];
short rec_char2[REC_ALT][REC_CHAR_SIZE/2];
};
#endif
unsigned char rec_value[REC_ALT];
long rec_top[REC_ALT];
long rec_bottom[REC_ALT];
} RelResult;
#define RecResult RelResult
Elemente:
left, top;
- Zeichenposition in der Zeile.
width, height
- Höhe und Breite des Zeichens.
result_flags
- Das Element
result_flags wird mit RESULT_FLAG_RESPELL besetzt, wenn das
entsprechende Resultat durch ein Wörterbuch bestätigt wurde (RESPELL).
RESULT_FLAG_RESPELL_CONFIRMED | Wird gesetzt wenn durch RESPELL bestätigt wurde. |
RESULT_FLAG_RESPELL_GENERATED | Wird gesetzt wenn durch RESPELL generiert wurde. |
RESULT_FLAG_RESPELL | Zur Abfrage ob RESULT_FLAG_RESPELL_CONFIRMED oder RESULT_FLAG_RESPELL_GENERATED gesetzt wurden. |
RESULT_FLAG_ACCENT_TOP | Wird gesetzt wenn der Akzent über dem betreffenden Zeichen steht. |
RESULT_FLAG_ACCENT_BOTTOM | Wird gesetzt wenn der Akzent unter dem betreffenden Zeichen steht. |
RESULT_FLAG_ACCENT | RESULT_FLAG_ACCENT_TOP | RESULT_FLAG_ACCENT_BOTTOM |
RESULT_FLAG_ACCENT_START | Erstes Element eines akzentuierten Zeichens. |
RESULT_FLAG_ACCENT_MEMBER | Element eines akzentuierten Zeichens. |
RESULT_FLAG_ACCENT_END | Letztes Element eines akzentuierten Zeichens. |
*result_image
- Wenn
TYPO_KEEPIMG bei dem Parameter parm.typograph gesetzt ist, werden die
segmentieren Einzelzeichen intern gespeichert. Der benötigte Speicher ist von REL allokiert und verwaltet,
kann aber direkt mit der Funktion rel_freeimages() freigegeben werden. Bilder sind zeilenweise gespeichert,
die oberste Zeile ist die erste. Die Zeilen sind pixelweise von links nach rechts gespeichert. Jedes Pixel wird als 1 Byte
dargestellt. result_height beinhaltet die Zeilenanzahl, result_width die Spaltenanzahl des Bildes.
In den Datenstrukturen RecData und RelResult steht vor result_image das umschreibende
Rechteck von result_image. Dies beschreibt die Position des Bildes im Gesamtbild, welches zur Erkennung
übergeben wurde. Zu beachten ist, dass die Dimensionen von result_image und dem umschreibenden Rechteck
nicht identisch sein müssen, da grosse Bilder vor der Erkennung komprimiert werden und result_image aus dem
komprimierten Bild gewonnen wird.
result_width
- Breite von result_image (kann komprimiert sein).
result_height
- Höhe von result_image (kann komprimiert sein).
projection[2]
- Projektion gemäss Schräglage von Anfang und Ende des Zeichens auf die Grundlinie.
italic, bold
Schräglage der Zeichen (italic)

Hier werden die ermittelte Schräglage des Zeichens sowie dessen Strichdicke zurückgeliefert. Bereits die
Definition der Schräglage eines Zeichens ist nicht ganz einfach. Wir legen dazu je eine Tangente von oben und
von unten an das jeweilige Zeichen und verbinden den oberen mit dem unteren Berührungspunkt. Der Berührungspunkt
selbst wird gegebenenfalls durch Mittelwertsbildung bestimmt. Man beachte, dass hierbei verschiedene Zeichen wie etwa
L oder k in ihrer Normallage stets eine Schräglage nach links haben, andere nach rechts. Für langgezogene
Zeichen wie Minuszeichen ist die Angabe einer Schräglage sinnlos. Der bei italic zurückgegebene Wert lässt
sich inhaltlich wie folgt beschreiben:
normierte Zeilenhöhe mit 64 Pixel

Man nehme zunächst einen senkrechten Strich und drehe diesen um seinen Mittelpunkt in die entsprechende Schräglage.
Nun messe man bei einer Zeilenhöhe von 64 Pixel die Anzahl der Pixel vom Schnittpunkt der senkrechten Geraden mit der
Oberkante der Zeile bis zum Schnittpunkt der gedrehten Geraden. Dieser Wert wird unter italic eingetragen. Diese
Definition hat gegenüber einer Winkelangabe den Vorteil, dass der berechnete italic-Wert unmittelbar für eine
Schräglagen-Korrektur durch horizontale Scherung verwendet werden kann. Unter bold wird die Strichdicke des Zeichens
zurückgegeben, gemessen in Einheiten halber Pixelbreite. Ein Wert von 3 entspricht somit einer mittleren Strichdicke
von 1 1/2 Pixel.
strokelen, black
- Unter
strokelen wird die Gesamt-Strichlänge des Zeichens zurückgegeben.
Multipliziert mit der oben beschriebenen mittleren Strichdicke bold erhält man eine grobe Schätzung
für die (doppelte) Anzahl der Schwarzpunkte des Zeichens. Einen genaueren Wert liefert black - dort
wird die prozentuale Schwärzung des übergebenen Bildes zurückgegeben (100 * Schwarzpunkte / Bildpunkte).
rec_char, rec_char2
- Unter
rec_char wird für das zugehörige Zeichen die 2-Byte-Kennung je nach
eingestellter Codepage zurückgegeben, das Resultat der Erkennung. Das erste Zeichen ist im allgemeinen
der zugehörige ANSI-Code, das zweite charakterisiert gegebenenfalls Formklassen. Beispielsweise wird
für eine normale Handschrift-Null "0_", für eine durchgestrichene Handschrift-Null
"0W" zurückgeliefert. Ist das Resultat der Erkennung nicht eindeutig, so werden bis zu 8
(REC_ALT) Alternativen in Reihenfolge absteigender Sicherheit zurückgeliefert. Ein leerer oder
mit Blank besetzter String bedeutet "kein Resultat" oder "keine weiteren Alternativen". Eine Übersicht der
in KADMOS verfügbaren Kennungen und Formklassen mit ihren 2-Byte-Kennungen finden Sie in unserer Webseite.
rec_char2 hat die gleiche Bedeutung und Position wie rec_char. Es beschreibt die
Kennungen im Unicode, also mit dem Datentyp short anstelle von char.
rec_value
- Für jedes erkannte Zeichen wird hier - gegebenenfalls für alle Alternativen - die Sicherheit der
jeweiligen Erkennung zurückgegeben. Kleine Werte stehen für hohe Sicherheit, Werte über 128 stehen für
grosse Unsicherheit.
rec_top, rec_bottom
- Für jede der erkannten Alternativen wird hier zurückgegeben, wo sich das Zeichen in der Zeile
korrekterweise befinden sollte. Die Werte werden analog zu
image_top und image_bottom gebildet,
bezogen auf die spezifizierte base_line. Wurde der Wert von base_line beim Aufruf von
rec_do nicht spezifiziert, so beziehen sich die zurückgegebenen Werte auf base_line=64.
Verweise: