tesseract  4.00.00dev
adaptive.h
Go to the documentation of this file.
1 /******************************************************************************
2  ** Filename: adaptive.h
3  ** Purpose: Interface to adaptive matcher.
4  ** Author: Dan Johnson
5  ** History: Fri Mar 8 10:00:49 1991, DSJ, Created.
6  **
7  ** (c) Copyright Hewlett-Packard Company, 1988.
8  ** Licensed under the Apache License, Version 2.0 (the "License");
9  ** you may not use this file except in compliance with the License.
10  ** You may obtain a copy of the License at
11  ** http://www.apache.org/licenses/LICENSE-2.0
12  ** Unless required by applicable law or agreed to in writing, software
13  ** distributed under the License is distributed on an "AS IS" BASIS,
14  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  ** See the License for the specific language governing permissions and
16  ** limitations under the License.
17  ******************************************************************************/
18 #ifndef ADAPTIVE_H
19 #define ADAPTIVE_H
20 
21 /*----------------------------------------------------------------------------
22  Include Files and Type Defines
23 ----------------------------------------------------------------------------*/
24 #include "oldlist.h"
25 #include "intproto.h"
26 #include <stdio.h>
27 
28 typedef struct
29 {
33 }
34 
35 
38 
39 typedef struct
40 {
45  int FontinfoId; // font information inferred from pre-trained templates
48 
49 typedef struct
50 {
52  int FontinfoId; // font information inferred from pre-trained templates
55 
56 typedef union
57 {
61 
62 typedef struct
63 {
65  uinT8 MaxNumTimesSeen; // maximum number of times any TEMP_CONFIG was seen
66  uinT8 dummy[2]; // (cut at matcher_min_examples_for_prototyping)
73 
74 typedef struct
75 {
79  uinT8 dummy[3];
83 
84 /*----------------------------------------------------------------------------
85  Public Function Prototypes
86 ----------------------------------------------------------------------------*/
87 #define NumNonEmptyClassesIn(Template) ((Template)->NumNonEmptyClasses)
88 
89 #define IsEmptyAdaptedClass(Class) ((Class)->NumPermConfigs == 0 && \
90 (Class)->TempProtos == NIL_LIST)
91 
92 #define ConfigIsPermanent(Class,ConfigId) \
93 (test_bit ((Class)->PermConfigs, ConfigId))
94 
95 #define MakeConfigPermanent(Class,ConfigId) \
96 (SET_BIT ((Class)->PermConfigs, ConfigId))
97 
98 #define MakeProtoPermanent(Class,ProtoId) \
99 (SET_BIT ((Class)->PermProtos, ProtoId))
100 
101 #define TempConfigFor(Class,ConfigId) \
102 ((Class)->Config[ConfigId].Temp)
103 
104 #define PermConfigFor(Class,ConfigId) \
105 ((Class)->Config[ConfigId].Perm)
106 
107 #define IncreaseConfidence(TempConfig) \
108 ((TempConfig)->NumTimesSeen++)
109 
110 void AddAdaptedClass(ADAPT_TEMPLATES Templates,
111  ADAPT_CLASS Class,
112  CLASS_ID ClassId);
113 
114 void FreeTempProto(void *arg);
115 
117 
119 
120 void free_adapted_class(ADAPT_CLASS adapt_class);
121 
123 
124 TEMP_CONFIG NewTempConfig(int MaxProtoId, int FontinfoId);
125 
127 
129 
131 
133 
134 void WriteAdaptedClass(FILE *File, ADAPT_CLASS Class, int NumConfigs);
135 
136 void WritePermConfig(FILE *File, PERM_CONFIG Config);
137 
138 void WriteTempConfig(FILE *File, TEMP_CONFIG Config);
139 
140 #endif
TEMP_CONFIG ReadTempConfig(tesseract::TFile *File)
Definition: adaptive.cpp:418
ADAPT_CLASS ReadAdaptedClass(tesseract::TFile *File)
Definition: adaptive.cpp:306
void free_adapted_templates(ADAPT_TEMPLATES templates)
Definition: adaptive.cpp:197
BIT_VECTOR PermConfigs
Definition: adaptive.h:68
int UNICHAR_ID
Definition: unichar.h:33
void free_adapted_class(ADAPT_CLASS adapt_class)
Definition: adaptive.cpp:134
UNICHAR_ID CLASS_ID
Definition: matchdefs.h:35
uinT8 ProtoVectorSize
Definition: adaptive.h:42
TEMP_PROTO NewTempProto()
Definition: adaptive.cpp:248
void FreeTempProto(void *arg)
Definition: adaptive.cpp:88
PERM_CONFIG_STRUCT * PERM_CONFIG
Definition: adaptive.h:54
BIT_VECTOR Protos
Definition: adaptive.h:44
uinT32 * BIT_VECTOR
Definition: bitvec.h:28
ADAPT_CLASS_STRUCT * ADAPT_CLASS
Definition: adaptive.h:72
CLUSTERCONFIG Config
TEMP_PROTO_STRUCT * TEMP_PROTO
Definition: adaptive.h:37
uinT8 MaxNumTimesSeen
Definition: adaptive.h:65
TEMP_CONFIG Temp
Definition: adaptive.h:58
INT_TEMPLATES Templates
Definition: adaptive.h:76
PERM_CONFIG Perm
Definition: adaptive.h:59
PROTO_ID MaxProtoId
Definition: adaptive.h:43
ADAPT_TEMPLATES_STRUCT * ADAPT_TEMPLATES
Definition: adaptive.h:82
TEMP_CONFIG_STRUCT * TEMP_CONFIG
Definition: adaptive.h:47
TEMP_CONFIG NewTempConfig(int MaxProtoId, int FontinfoId)
Definition: adaptive.cpp:221
uinT16 ProtoId
Definition: adaptive.h:30
uinT8 NumTimesSeen
Definition: adaptive.h:41
BIT_VECTOR PermProtos
Definition: adaptive.h:67
void AddAdaptedClass(ADAPT_TEMPLATES Templates, ADAPT_CLASS Class, CLASS_ID ClassId)
Definition: adaptive.cpp:50
uint8_t uinT8
Definition: host.h:35
PROTO_STRUCT Proto
Definition: adaptive.h:32
void WritePermConfig(FILE *File, PERM_CONFIG Config)
Definition: adaptive.cpp:519
uinT8 NumPermConfigs
Definition: adaptive.h:64
#define MAX_NUM_CONFIGS
Definition: intproto.h:46
ADAPT_CLASS NewAdaptedClass()
Definition: adaptive.cpp:111
void FreeTempConfig(TEMP_CONFIG Config)
Definition: adaptive.cpp:81
PERM_CONFIG ReadPermConfig(tesseract::TFile *File)
Definition: adaptive.cpp:392
#define MAX_NUM_CLASSES
Definition: matchdefs.h:31
uint16_t uinT16
Definition: host.h:37
UNICHAR_ID * Ambigs
Definition: adaptive.h:51
inT16 PROTO_ID
Definition: matchdefs.h:41
void WriteTempConfig(FILE *File, TEMP_CONFIG Config)
Definition: adaptive.cpp:543
void WriteAdaptedClass(FILE *File, ADAPT_CLASS Class, int NumConfigs)
Definition: adaptive.cpp:443