Alc-Dateien

Zu jeder Klassifikator-Datei wird eine zugehörige Alc-Datei mitgeliefert. Sie hat die Funktion einer Protokolldatei. Dies ist eine Textdatei, in welcher die dem Klassifikator bekannten Kennungen (Labels) abgelegt sind. Die Kennungen sind dabei in Gruppen aufgeteilt, welche den Alc-Konstanten entsprechen.So findet sich beispielsweise unter [numeric] in der Datei ttfde.alc folgender Eintrag:

[numeric]
font=0123456789
size=0:1
font+=0w121|32 02
size+=0:1 0.3:1
      

Dies bedeutet, dass der Klassifikator unter ALC_NUMERIC die Labels '0 ', '1 ', '2 ',... '9 ' , '0w', '12', '1|', '32' und '02' enthält. Alle diese Zeichen werden in ihrer Zeile wie ein grosses 'A' erwartet, nur das Zeichen 02 ist kleiner. Es handelt sich um das Zeichen o, das oft als Null verwendet wird. Sofern die Zweitkennung im Normalfall nicht mit Blank (' ') besetzt ist, wird dies mit einem zusätzlichen Eintrag in der Alc-Datei vermerkt. So findet sich etwa in der Datei hand.alc unter [numeric] der zusätzliche Eintrag ext=_. Unter den Einträgen font und size beziehungsweise font+ und size+ können noch Einträge xminmax und yminmax stehen. Dort sind dann - wie unter size und size+ - die minimal und maximal zulässige Ausdehnung der Zeichen in x- und y-Richtung festgelegt, gemessen in Bildpunkten. Ein Beispiel:

[numeric]
font=0123456789 
size=0.0:1.0 
xminmax=10:20 
yminmax=15:30
      

Die unter font gegebenen Zeichen müssen hier mindestens 10 Bildpunkte, dürfen höchstens jedoch 20 Bildpunkte breit sein (xminmax). Die Höhe eines Zeichen muss mindestens 15 Bildpunkte, darf höchstens jedoch 30 Bildpunkte betragen (yminmax). Ist eine der Bedingungen nicht erfüllt, erfolgt eine Rückweisung des Zeichens. Aus der Alc-Datei ist auch ersichtlich, welche Kennungen Zeichen gleicher Form beschreiben. Diese finden sich unter [equivalence] bei dem Eintrag moma=.... Beim Klassifikator ttfde.rec finden wir in der zugehörigen Alc-Datei etwa unter anderem folgende moma-Äquivalenzen:

, ' - _ . '2· * *2*4 / '|,|1|I|\ l|| 0 02O o ° 12l
      

Bei den moma-äquivalenten Zeichenklassen erfolgt keine Rückweisung von Alternativen, falls beim Aufruf von re?_do() unter options OPTIONS_EXCLUDE gesetzt sein sollte. Es würde ja sonst ein zufälliges Resultat erzwungen.
Beispiel einer Alc-Datei

[comment] Kommentarteil dieser Alc-Datei
ttfde.alc
Generated by RecMaker from ttf.rec and ttfde.al0
Generation Time ##-Feb-200# 11:50
crc=0x7ab8

[general]
representation=CODE_ISO_8859_1

[lcalpha] Rubrik der Kleinbuchstaben
font=acemnorsuvwxz bdfhklt gpqy    iäöü   j       ss     
size=0.3:1         0:1     0.3:1.4 0.1:1  0.1:1.4 0:1.1
font+=a2    g2    i|    j|      l2l|
size+=0.3:1 0.1:1 0.1:1 0.1:1,4 0:1
      

font= Zeichen dieser Rubrik mit 1-Byte-Kennung
size= Grösse der jeweiligen Zeichenblöcke Oberkante:Unterkante mit Massstab gemessen an einem grossen A mit dem Wert 0 Oberkante und 1 Unterkante
font+= Zeichen dieser Rubrik mit 2-Byte-Kennung
size+= siehe size=

[ucalpha] Rubrik der Grossbuchstaben
font=ABCDEFGHIJKLMNOPRSTUVWXYZ Q     ÄÖÜ
size=0:1                       0:1.1 -0.2:1
font+=I|
size+=0:1        
      

font= Zeichen dieser Rubrik mit 1-Byte-Kennung
size= Grösse der jeweiligen Zeichenblöcke Oberkante; Unterkante mit Massstab gemessen an einem grossen A mit dem Wert 0 Oberkante und 1 Unterkante
font+= Zeichen dieser Rubrik mit 2-Byte-Kennung
size+= siehe size=

[numeric] Rubrik der Ziffern
font=012345689
size=0:1
font+=0w121|32 02
size+=-0:1     0.3:1        
      

font= Zeichen dieser Rubrik mit 1-Byte-Kennung
size= Grösse der jeweiligen Zeichenblöcke Oberkante:Unterkante mit Massstab gemessen an einem grossen A mit dem Wert 0 Oberkante und 1 Unterkante
font+= Zeichen dieser Rubrik mit 2-Byte-Kennung
size+= siehe size=

[special] Rubrik der Sonderzeichen
font=!#%&()/?[\]{|}£¥ "'    $§       *+      ,       -·      .     :    ...
size=0:1              0:0.2 -0.1:1.1 0.3:0.7 0.8:1.2 0.5:0.6 0.7:1 0.4:1
font+=*4e$ '2'|  *2    ,|
size+=0:1  0:0.2 0:0.4 0.8:1.2
      

font= Zeichen dieser Rubrik mit 1-Byte-Kennung
size= Grösse der jeweiligen Zeichenblöcke Oberkante:Unterkante mit Massstab gemessen an einem grossen A mit dem Wert 0 Oberkante und 1 Unterkante
font+= Zeichen dieser Rubrik mit 2-Byte-Kennung
size+= siehe size=


[reject]
labels=#X#x0<0[0]1<1[1]2<2[2]3<3[3]4<4[4]5<5[5]6<6[6]7<7[7]8<8[8]9<9[9]
      

labels= Zeichenklassen (labels), die zurückgewiesen werden sollen

[slant] Rubrik Zeichen mit natürlicher Schräglage mit 2-Byte-Kennung
base=64
label=' , F J P d f j p r y   /  L   Q b h k q  \
slant=10                      20 -10 -5         -20
korr='|,|/ 1|I|\ l||        
      

base= Angenommene Zeichenhöhe in Pixel
label= Zeichen dieser Rubrik mit 2-Byte-Kennung.
slant= Schräglage in Pixel, negative Zahlen mit Schräge nach links, positive Zahlen nach rechts.
korr= Zeichen, bei denen die Schräglage für die Erkennung stark bewertet werden soll.

[width] Breitenvorgabe der Zeichen mit 2-Byte-Kennung
base=16 Angenommene Zeichenhöhe 16 Pixel
blank=4 Breite eines Standard-Leerzeichens
prop=11 Durchschnittsbreite der Zeichen bei Proportionalschrift

prop3=! " ' '2'|, ,|1|. ; I|i|l|| .
prop4=( ) - [ ] j|{ }
prop5=* *2+ . = ° 
prop6=/ j l
prop7=1 12< > \ _ i ¢ 
prop8=? @ I J f l2s ~ § 
prop9=# 020w3 5 7 a2c e o r t u z £ ä ö 
prop10=$ *40 2 324 6 8 9 E F L a b d h k n v x 
prop12=M U V X m y ¥ Ä Ö Ü 
prop13=w
prop14=W

equi=9   Durchschnittsbreite der Zeichen bei äquidistanter Schrift
equi3=! " ' '2'|( ) , ,|- 1|: ; I|[ ] i|j|l|{ | } · 
equi6=* *2+ . / 1 12< = > \ _ i j l ¢ ° 
equi12=% & A B C D G H K M N O P Q R S T U V W X Y Z e$g g2m p q w y 
       ¥ Ä Ö Ü ss        
      

prop?= Breite dieser proportionalen Zeichen bezogen auf die angenommene Höhe
equi?= Breite dieser äquidistanten Zeichen bezogen auf die angenommene

[equivalence]        Rubrik formgleicher oder namensgleicher Zeichen
moma=, '   - _   . '2·   * *2*4  / '|,|1|I|\ l||   0 02O o °   12l2
moma=C c   i|j|  Ö ö   P p   S s   U u   Ü ü   V v   W w   X x   Y y
moma=Z z

rename=* * *2*4  , , ,|  0 0 0w02  1 1 121|  3 3 32  I I I|  a a a2  g g g2
rename=i i i|  j j j|  l l l2l|  ' ' '2'|        
      

moma= Die 2-Byte-Kennungen in jedem Block stehen für Zeichen, die in ihrer Gestalt identisch mit anderen Zeichen sind wie z.B. 0,O,o,°.

rename= Die erste 2-Byte-Kennung in jedem Block stellt die Gruppen-Kennung für den ganzen Block dar. Die folgenden 2-Byte-Kennungen (Basis-Kennungen) stehen für die einzelnen Gruppen-Mitglieder. Z.B. umfasst die Gruppen-Kennung 9_ (Handschrift 9) die Basis-Kennungen 9_ (gebogene 9), 91 (gerade 9) und 93 (wie kleines q). Es kann mit der Gruppen-Kennung oder mit den Basiskennungen gearbeitet werden.

[words] In der aufgeführten Rubrik können die nachstehenden Zeichen in einem Wort enthalten sein. Diese Worterkennung ist wichtig, um z.B. in Zahlworten die Ziffer 2 nicht als Z zurückzuliefern (siehe POS_NOWORDCONTEXT).

lcalpha+=, . / : ; ' '|,|\ | 
ucalpha+=, . / : ; ' '|,|\ | 
numeric+=, . / : ; ' '|,|\ | 
 
machine=[ ]  0w1232a2e$g2i|'2'|*2*4,|021|I|j|l2l|        
      

[fontgroup] Hier sind Informationen darüber abgelegt, ob es sich bei den entsprechenden Zeichen um Handschrift, Maschinenschrift, OCRA oder anderes handelt. Wird etwa unter Maschinenschrift-Zeichen ein Handschrift-Zeichen detektiert, so ist wohl Vorsicht geboten (Anhebung von rec_value nach der Erkennung). Das Leerzeichen in den eckigen Klammern am Anfang bedeuten, dass alle Kennungen mit Blank an der zweiten Stelle ebenfalls Maschinenschrift-zeichen sind.

[segmentation] Gruppe von Zeichen, bei denen trotz gutem Ergebnis eine alternative Segmentierung probiert wird. Beispielsweise kann aus einem m bei entsprechender Segmentierung ein r und ein n erkannt werden. Es ist also in jedem Fall noch eine weitergehende Segmentierung zu prüfen (“trymore”).

tryless=trymore="#%49HKLMNPTUVWYbdhkmnpquwÜü!'(*,./1:;<>CIJV[\cijlnrv{|