RelGraph

Auswertung der Struktur RelGraph

Am bequemsten wertet man die Erkennungsresultate einer Zeile aus, indem man die Funktion rel_textline aufruft. Sie liefert das wahrscheinlichste Ergebnis unter Berücksichtigung aller gesetzten Optionen, wie des Kontextes, der Positionen u.a.. Interessiert man sich jedoch auch für andere erkannte Alternativen, so kann man alle Informationen dazu in den Feldern rel_graph und rel_result der Struktur RelData finden.

Da verschiedene Erkennungsresultate einer Textzeile nicht nur auf verschiedene Ergebnisse für einzelne Zeichen, sondern auch auf alternative Trennmöglichkeiten verwachsener Buchstaben zurückzuführen sind, können alle Möglichkeiten nicht mehr linear sondern nur in einem Graphen zurückgegeben werden. Dieser ist im Feld rel_graph abgelegt. Jeder Knoten steht für eine Trennstelle. Seine Informationen sind in einer Struktur RelGraph zusammengefasst. An jeder Trennstelle werden maximal 4 Alternativen berücksichtigt, jede von ihnen ist durch den Bereich bis zur nächsten Trennstelle sowie das Erkennungsresultat für diesen Bereich gekennzeichnet. Ein Bereich i (i=0,1,2,3) wird jeweils durch die Angabe der folgenden Trennstelle next[i] definiert, wobei next[i] der Index des entsprechenden Knoten im Graphen ist, oder gleich -1, falls sich der Bereich bis zum Zeilenende erstreckt. Das zugehörige Erkennungsresultat wird in einer Struktur RelResult beschrieben, die Variable result_number[i] verweist auf den entsprechenden Index im Feld rel_result.

Zur Illustration dient das nebenstehende Bild, das die verbundenen Buchstaben bi enthält. Die Erkennung wurde mit dem Klassifikator HAND.REC und den voreingestellten Standard-Optionen durchgeführt (andere Klassifikatoren oder andere Parameter können abweichende Ergebnisse - auch bei der Trennung - ergeben, da eine Rückkoppelung zwischen der Buchstabentrennung und Erkennung besteht). Es ist zu empfehlen, das Beispielprogramm RelWin im Debug-Modus nach dem Aufruf von rel_do zu unterbrechen und die Struktur rel sowie deren Variablen anzuzeigen.

Es werden hier insgesamt 5 Trennstellen (einschließlich des Starts) gefunden, das Feld rel_graph hat die Länge rel_graph_len=5.

 

Knoten 0 (rel.rel_graph[0]), 4 Alternativen:

  1. result_number[0]=1 next[0]=1:
    rel.rel_result[1].rec_char[0]="b_"  Fortsetzung bei Knoten 1.
    rel.rel_result[1].rec_value[0]=34
  2. result_number[1]=0 next[1]=-1:
    rel.rel_result[0].rec_char[0]="k_"  Ende der Zeile.
    rel.rel_result[0].rec_value[0]=126
  3. result_number[2]=3 next[2]=2:
    rel.rel_result[3].rec_char[0]="b_"  Fortsetzung bei Knoten 2.
    rel.rel_result[3].rec_value[0]=25
  4. result_number[3]=5 next[3]=3:
    rel.rel_result[5].rec_char[0]="l1" u. a. Fortsetzung bei Knoten 3.
    rel.rel_result[5].rec_value[0]=44

Knoten 1 (rel.rel_graph[1]) 1 Alternative:

  1. result_number[0]=2 next[0]=-1:
    rel.rel_result[4].rec_char[0]="i_"
    rel.rel_result[2].rec_value[0]=62

Knoten 2 (rel.rel_graph[2]) 3 Alternativen:

  1. result_number[0]=4 next[0]=-1:
    rel.rel_result[4].rec_char[0]="i_" Ende der Zeile.
    rel.rel_result[4].rec_value[0]=85
  2. result_number[1]=8 next[1]=4:
    rel.rel_result[8].rec_char[0]="uv" u.a. Fortsetzung bei Knoten 4.
    rel.rel_result[8].rec_value[0]=110
  3. result_number[2]=10 next[2]=1:
    result_number[2]=10 next[2]=1:
    rel.rel_result[10].rec_char[0]="._" u.a. Fortsetzung bei Knoten 1.
    rel.rel_result[10].rec_value[0]=85

Knoten 3 (rel.rel_graph[3]) 4 Alternativen:

  1. result_number[0]=6 next[0]=1:
    rel.rel_result[6].rec_char[0]="g1" u.a. Fortsetzung bei Knoten 1.
    rel.rel_result[6].rec_value[0]=145
  2. result_number[1]=7 next[1]=-1:
    rel.rel_result[7].rec_char[0]="n/" Ende der Zeile.
    rel.rel_result[7].rec_value[0]=122
  3. result_number[2]=11 next[2]=2:
    rel.rel_result[11].rec_char[0]="g1" u.a. Fortsetzung bei Knoten 2.
    rel.rel_result[11].rec_value[0]=93
  4. result_number[3]=12 next[3]=4:
    rel.rel_result[12].rec_char[0]="g_" u.a. Fortsetzung bei Knoten 4.
    rel.rel_result[12].rec_value[0]=160

Knoten 4 (rel.rel_graph[4]) 1 Alternative:rel.

  1. result_number[0]=9 next[0]=-1:
    rel.rel_result[9].rec_char[0]="i_" Ende der Zeile.
    rel.rel_result[9].rec_char[0]="i_"

Folgende Alternativen wurden also insgesamt gefunden:

1.     0->E(0)     k
2.     0 -> 1 (1) -> E ( 2)     bi
3.     0 -> 2 (3) -> E (4)     bi
4.     0 -> 2 (3) -> 4 (8) -> E (9)     bui
5.     0 -> 2 (3) -> 1 (10) -> E (2)     b.i
6.     0 -> 3 (5) -> E (7)     ln
7.     0 -> 3 (5) -> 2 (11) -> E (4)     lgi
8.     0 -> 3 (5) -> 2 (11) -> 4 (8) -> E (9)     lgui
9.     0 -> 3 (5) -> 2 (11) -> 1 (10) -> E (2)     lg.i
10.   0 -> 3 (5) -> 1 (6) -> E (2)     lgi
11.   0 -> 3 (5) -> 4 (12) -> E (9)     lgi