typedef struct ReInit_tag {
char version[8];
int rel_grid_maxlen;
int rel_graph_maxlen;
int rel_result_maxlen;
int options;
void *rep_memory;
long rep_memory_size;
void * (*zip_open) (const char *file_title, const char *mode);
void * (*zip_wopen) (const wchar_t *file_title, const char *mode);
int (*zip_compressed) (const char *file_title);
int (*zip_wcompressed) (const wchar_t *file_title);
int (*zip_read) (void *file, void *buf, unsigned long len);
int (*zip_close)(void *file);
INT_PTR interna1[4];
INT_PTR interna2[4];
} ReInit;
version[8]rel_grid_maxlenrel_grid.rel_graph_maxlenrel_graph.rel_result_maxlenin rel_result.options*rep_memoryrep_result(s).rep_memory_sizerep_do() verfügbare Speichergrösse.*zip_open*zip_wopen*zip_compressedzip_compressed nicht spezifiziert ist, wird für die Extension ".gz" dekomprimiert.*zip_wcompressedzip_(w)compressed nicht spezifiziert ist, wird für die Extension ".gz" dekomprimiert.*zip_read*zip_closeinterna1[4]interna2[4]
Bei der Erkennung einer Textseite fallen eine Fülle von Informationen an, die für die weitere Bearbeitung von
Bedeutung sein können. Der Umfang dieser Informationen hängt nicht nur von der Bildgrösse, sondern auch von der
Anzahl der Textzeilen sowie von der Anzahl der Einzelzeichen ab. Für die Aufnahme all dieser Daten muss Speicherplatz
bereitgestellt und nach der Auswertung wieder freigegeben werden. Wann die Freigabe erfolgen kann, ist Sache der
jeweiligen Applikation. Also muss dieser Speicherplatz auch von dem jeweils aufrufenden Programm verwaltet werden.
Unter rep_memory ist ein Pointer auf diesen Speicherplatz zu übergeben und unter rep_memory_size
die Grüsse des Speicherplatzes in Byte. Der Parameter rel_result_maxlen ist vor der Initialisierung mit der
Maximalanzahl der erwarteten Einzelzeichen je Zeile zu besetzen (siehe auch rel_graph_len und
rel_result_len in der Struktur RelData), ebenso rel_graph_maxlen.
rel_grid_maxlen wird vor der Initialisierung mit der Maximal-Anzahl der erwarteten Grid-Elemente pro Bild besetzt,
sofern diese gewünscht werden.
Wie gross ist der Speicherplatz für rep_memory zu wählen? Wir müssen dazu die Strukturen betrachten, die der
Aufnahme der Erkennungsresultate dienen. Es sind dies RelGrid, RelGraph und RelResult
zur Aufnahme der Resultate für eine Textzeile sowie RepResult zur Aufnahme der Resultate des Moduls REP.
Für jede Textzeile wird eine Struktur RepResult benötigt, für jedes Zeichen jeder Zeile je
eine Struktur RelGraph und RepResult, bei möglichen alternativen Trennstellen entsprechend mehr.
Will man auch über Linienelemente und Flecken informiert werden, muss auch noch Platz für entsprechende Struktur
vorgesehen werden. Bei RelGrid nur einmal. Das liegt daran, dass das Programm rep_do()
zunächst alle Grid-Elemente deklariert und in der ersten RepResult-Struktur zurückliefert.
In den weiteren RepResult-Strukturen finden sich dann die erkannten Texte der einzelnen Zeilen.

Pointer rep_result, RepResult[0] enthält gegebenenfalls Grid-Informationen RelGrid
Ponter rep_result, ein RepResult für jede Textzeile
Pointer rel_grid, ein RelGrid pro Linienelement
Pointer rel_graph, ein RelGraph für jeden Segmentierungspunkt
Pointer rel_result, ein RelResult pro Zeichen einer Textzeile
Ist durch MAX_LINE die maximale Anzahl von erwarteten Textzeilen gegeben, durch MAX_GRID
die maximale Anzahl von erwarteten Linienelementen und durch MAX_CHAR die maximale Anzahl von
erwarteten Zeichen pro Zeile, so lässt sich ein ausreichender Wert von rep_memory_size durch folgende Formel ermitteln:
rep.init.rep_memory_size = MAX_LINE*sizeof(RepResult) +
MAX_GRID*sizeof(RelGrid) + MAX_LINE*MAX_CHAR*sizeof(RelGraph) +
MAX_LINE*MAX_CHAR*sizeof(RelResult);
Sofern der Speicherbereich rep_memory zu klein gewählt wurde, gehen die nicht mehr ablegbaren
Resultate der Erkennung verloren! Man braucht jedoch für die Resultate nicht notwendig Speicherplatz zu reservieren,
die Werte von rep_memory und rep_memory_size können also mit NULL bzw. 0
besetzt sein. Dann stehen natürlich nach dem Aufruf von rep_do() unter rep_result auch keine
Resultate zur Verfügung. Die Erkennungs-Ergebnisse muss man sich in diesem Fall über eine Funktion rel_hook()
oder unter Windows über die Messages WM_USER, REP_LINE_CNT und WM_USER,
REP_RESULT abholen.
options ermöglicht es, von grossen Klassifikatoren (REC-Dateien) nur einen Ausschnitt einzulesen.
Dies hat den gleichen Effekt wie die Einschränkung von Klassifikatoren mit Chopper.exe und kann erhebliche Einsparungen an
Rechenzeit bewirken. Anwendung: Vor dem Aufruf von re?_init() besetze man ReInit.options mit dem
Wert OPTIONS_RESTRICT_LABELS sowie die Parameter ReParm.labels_size, ReParm.labels
und ReParm.rejects mit den gewünschten Kennungen. Dann werden von re?_init()
nur die Teile des Klassifikators eingelesen, die für das Erkennen dieser Zeichen notwending sind.