tesseract  4.0.0-1-g2a2b
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 <cstdio>
27 
28 typedef struct
29 {
30  uint16_t ProtoId;
31  uint16_t dummy;
33 }
34 
35 
38 
39 typedef struct
40 {
41  uint8_t NumTimesSeen;
42  uint8_t ProtoVectorSize;
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 {
64  uint8_t NumPermConfigs;
65  uint8_t MaxNumTimesSeen; // maximum number of times any TEMP_CONFIG was seen
66  uint8_t dummy[2]; // (cut at matcher_min_examples_for_prototyping)
73 
74 typedef struct
75 {
78  uint8_t NumPermClasses;
79  uint8_t 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
void free_adapted_templates(ADAPT_TEMPLATES templates)
Definition: adaptive.cpp:183
TEMP_CONFIG NewTempConfig(int MaxProtoId, int FontinfoId)
Definition: adaptive.cpp:204
int UNICHAR_ID
Definition: unichar.h:35
CLUSTERCONFIG Config
TEMP_CONFIG_STRUCT * TEMP_CONFIG
Definition: adaptive.h:47
ADAPT_CLASS_STRUCT * ADAPT_CLASS
Definition: adaptive.h:72
TEMP_CONFIG ReadTempConfig(tesseract::TFile *File)
Definition: adaptive.cpp:387
void AddAdaptedClass(ADAPT_TEMPLATES Templates, ADAPT_CLASS Class, CLASS_ID ClassId)
Definition: adaptive.cpp:46
uint16_t dummy
Definition: adaptive.h:31
void free_adapted_class(ADAPT_CLASS adapt_class)
Definition: adaptive.cpp:125
ADAPT_CLASS NewAdaptedClass()
Definition: adaptive.cpp:103
uint32_t * BIT_VECTOR
Definition: bitvec.h:28
void FreeTempConfig(TEMP_CONFIG Config)
Definition: adaptive.cpp:75
ADAPT_TEMPLATES_STRUCT * ADAPT_TEMPLATES
Definition: adaptive.h:82
UNICHAR_ID CLASS_ID
Definition: matchdefs.h:36
PROTO_STRUCT Proto
Definition: adaptive.h:32
uint16_t ProtoId
Definition: adaptive.h:30
ADAPT_CLASS ReadAdaptedClass(tesseract::TFile *File)
Definition: adaptive.cpp:282
uint8_t NumPermConfigs
Definition: adaptive.h:64
PERM_CONFIG Perm
Definition: adaptive.h:59
uint8_t ProtoVectorSize
Definition: adaptive.h:42
#define MAX_NUM_CONFIGS
Definition: intproto.h:47
TEMP_PROTO NewTempProto()
Definition: adaptive.cpp:229
PROTO_ID MaxProtoId
Definition: adaptive.h:43
uint8_t NumTimesSeen
Definition: adaptive.h:41
void WriteAdaptedClass(FILE *File, ADAPT_CLASS Class, int NumConfigs)
Definition: adaptive.cpp:410
BIT_VECTOR PermConfigs
Definition: adaptive.h:68
UNICHAR_ID * Ambigs
Definition: adaptive.h:51
uint8_t NumPermClasses
Definition: adaptive.h:78
PERM_CONFIG ReadPermConfig(tesseract::TFile *File)
Definition: adaptive.cpp:363
int16_t PROTO_ID
Definition: matchdefs.h:42
void WritePermConfig(FILE *File, PERM_CONFIG Config)
Definition: adaptive.cpp:482
PERM_CONFIG_STRUCT * PERM_CONFIG
Definition: adaptive.h:54
BIT_VECTOR PermProtos
Definition: adaptive.h:67
void FreeTempProto(void *arg)
Definition: adaptive.cpp:82
uint8_t MaxNumTimesSeen
Definition: adaptive.h:65
TEMP_PROTO_STRUCT * TEMP_PROTO
Definition: adaptive.h:37
void WriteTempConfig(FILE *File, TEMP_CONFIG Config)
Definition: adaptive.cpp:504
#define MAX_NUM_CLASSES
Definition: matchdefs.h:32
INT_TEMPLATES Templates
Definition: adaptive.h:76
BIT_VECTOR Protos
Definition: adaptive.h:44
TEMP_CONFIG Temp
Definition: adaptive.h:58