tesseract  4.00.00dev
featdefs.h File Reference
#include "ocrfeatures.h"

Go to the source code of this file.

Classes

struct  CHAR_DESC_STRUCT
 
struct  FEATURE_DEFS_STRUCT
 

Macros

#define NUM_FEATURE_TYPES   4
 
#define ILLEGAL_SHORT_NAME   2000
 

Typedefs

typedef CHAR_DESC_STRUCTCHAR_DESC
 
typedef FEATURE_DEFS_STRUCTFEATURE_DEFS
 

Functions

void InitFeatureDefs (FEATURE_DEFS_STRUCT *featuredefs)
 
void FreeCharDescription (CHAR_DESC CharDesc)
 
CHAR_DESC NewCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs)
 
bool ValidCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, CHAR_DESC CharDesc)
 
void WriteCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, CHAR_DESC CharDesc, STRING *str)
 
CHAR_DESC ReadCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, FILE *File)
 
uint32_t ShortNameToFeatureType (const FEATURE_DEFS_STRUCT &FeatureDefs, const char *ShortName)
 

Variables

const char * kMicroFeatureType
 
const char * kCNFeatureType
 
const char * kIntFeatureType
 
const char * kGeoFeatureType
 
const FEATURE_DESC_STRUCT MicroFeatureDesc
 
TESS_API const FEATURE_DESC_STRUCT PicoFeatDesc
 
const FEATURE_DESC_STRUCT CharNormDesc
 
const FEATURE_DESC_STRUCT OutlineFeatDesc
 
const FEATURE_DESC_STRUCT IntFeatDesc
 
const FEATURE_DESC_STRUCT GeoFeatDesc
 

Macro Definition Documentation

◆ ILLEGAL_SHORT_NAME

#define ILLEGAL_SHORT_NAME   2000

Definition at line 34 of file featdefs.h.

◆ NUM_FEATURE_TYPES

#define NUM_FEATURE_TYPES   4

Include Files and Type Defines

Definition at line 27 of file featdefs.h.

Typedef Documentation

◆ CHAR_DESC

Definition at line 46 of file featdefs.h.

◆ FEATURE_DEFS

Definition at line 53 of file featdefs.h.

Function Documentation

◆ FreeCharDescription()

void FreeCharDescription ( CHAR_DESC  CharDesc)

Release the memory consumed by the specified character description and all of the features in that description.

Parameters
CharDesccharacter description to be deallocated

Globals:

  • none
Note
Exceptions: none
History: Wed May 23 13:52:19 1990, DSJ, Created.

Definition at line 137 of file featdefs.cpp.

137  {
138  if (CharDesc) {
139  for (size_t i = 0; i < CharDesc->NumFeatureSets; i++)
140  FreeFeatureSet (CharDesc->FeatureSets[i]);
141  Efree(CharDesc);
142  }
143 } /* FreeCharDescription */
uinT32 NumFeatureSets
Definition: featdefs.h:43
void Efree(void *ptr)
Definition: emalloc.cpp:79
void FreeFeatureSet(FEATURE_SET FeatureSet)
Definition: ocrfeatures.cpp:69
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:44

◆ InitFeatureDefs()

void InitFeatureDefs ( FEATURE_DEFS_STRUCT featuredefs)

Definition at line 117 of file featdefs.cpp.

117  {
118  featuredefs->NumFeatureTypes = NUM_FEATURE_TYPES;
119  for (int i = 0; i < NUM_FEATURE_TYPES; ++i) {
120  featuredefs->FeatureDesc[i] = DescDefs[i];
121  }
122 }
#define NUM_FEATURE_TYPES
Definition: featdefs.h:27
inT32 NumFeatureTypes
Definition: featdefs.h:49
const FEATURE_DESC_STRUCT * FeatureDesc[NUM_FEATURE_TYPES]
Definition: featdefs.h:50

◆ NewCharDescription()

CHAR_DESC NewCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs)

Allocate a new character description, initialize its feature sets to be empty, and return it.

Globals:

  • none
Returns
New character description structure.
Note
Exceptions: none
History: Wed May 23 15:27:10 1990, DSJ, Created.

Definition at line 158 of file featdefs.cpp.

158  {
159  CHAR_DESC CharDesc;
160  CharDesc = (CHAR_DESC) Emalloc (sizeof (CHAR_DESC_STRUCT));
161  CharDesc->NumFeatureSets = FeatureDefs.NumFeatureTypes;
162 
163  for (size_t i = 0; i < CharDesc->NumFeatureSets; i++)
164  CharDesc->FeatureSets[i] = NULL;
165 
166  return (CharDesc);
167 
168 } /* NewCharDescription */
uinT32 NumFeatureSets
Definition: featdefs.h:43
CHAR_DESC_STRUCT * CHAR_DESC
Definition: featdefs.h:46
inT32 NumFeatureTypes
Definition: featdefs.h:49
void * Emalloc(int Size)
Definition: emalloc.cpp:47
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:44

◆ ReadCharDescription()

CHAR_DESC ReadCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
FILE *  File 
)

Read a character description from File, and return a data structure containing this information. The data is formatted as follows:

  NumberOfSets
          ShortNameForSet1 Set1
          ShortNameForSet2 Set2
          ...

Globals:

  • none
Parameters
FeatureDefsdefinitions of feature types/extractors
Fileopen text file to read character description from
Returns
Character description read from File.
Note
Exceptions:
  • ILLEGAL_NUM_SETS
History: Wed May 23 17:32:48 1990, DSJ, Created.

Definition at line 254 of file featdefs.cpp.

255  {
256  int NumSetsToRead;
257  char ShortName[FEAT_NAME_SIZE];
258  CHAR_DESC CharDesc;
259  int Type;
260 
261  if (tfscanf(File, "%d", &NumSetsToRead) != 1 ||
262  NumSetsToRead < 0 || NumSetsToRead > FeatureDefs.NumFeatureTypes)
263  DoError (ILLEGAL_NUM_SETS, "Illegal number of feature sets");
264 
265  CharDesc = NewCharDescription(FeatureDefs);
266  for (; NumSetsToRead > 0; NumSetsToRead--) {
267  tfscanf(File, "%s", ShortName);
268  Type = ShortNameToFeatureType(FeatureDefs, ShortName);
269  CharDesc->FeatureSets[Type] =
270  ReadFeatureSet (File, FeatureDefs.FeatureDesc[Type]);
271  }
272  return (CharDesc);
273 
274 } // ReadCharDescription
void DoError(int Error, const char *Message)
Definition: danerror.cpp:42
int tfscanf(FILE *stream, const char *format,...)
Definition: scanutils.cpp:228
inT32 NumFeatureTypes
Definition: featdefs.h:49
FEATURE_SET ReadFeatureSet(FILE *File, const FEATURE_DESC_STRUCT *FeatureDesc)
#define ILLEGAL_NUM_SETS
Definition: featdefs.cpp:30
const FEATURE_DESC_STRUCT * FeatureDesc[NUM_FEATURE_TYPES]
Definition: featdefs.h:50
#define FEAT_NAME_SIZE
Definition: ocrfeatures.h:33
CHAR_DESC NewCharDescription(const FEATURE_DEFS_STRUCT &FeatureDefs)
Definition: featdefs.cpp:158
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:44
uint32_t ShortNameToFeatureType(const FEATURE_DEFS_STRUCT &FeatureDefs, const char *ShortName)
Definition: featdefs.cpp:293

◆ ShortNameToFeatureType()

uint32_t ShortNameToFeatureType ( const FEATURE_DEFS_STRUCT FeatureDefs,
const char *  ShortName 
)

Search through all features currently defined and return the feature type for the feature with the specified short name. Trap an error if the specified name is not found.

Globals:

  • none
Parameters
FeatureDefsdefinitions of feature types/extractors
ShortNameshort name of a feature type
Returns
Feature type which corresponds to ShortName.
Note
Exceptions:
  • ILLEGAL_SHORT_NAME
History: Wed May 23 15:36:05 1990, DSJ, Created.

Definition at line 293 of file featdefs.cpp.

294  {
295  int i;
296 
297  for (i = 0; i < FeatureDefs.NumFeatureTypes; i++)
298  if (!strcmp ((FeatureDefs.FeatureDesc[i]->ShortName), ShortName))
299  return static_cast<uint32_t>(i);
300  DoError (ILLEGAL_SHORT_NAME, "Illegal short name for a feature");
301  return 0;
302 
303 } // ShortNameToFeatureType
void DoError(int Error, const char *Message)
Definition: danerror.cpp:42
const char * ShortName
Definition: ocrfeatures.h:58
#define ILLEGAL_SHORT_NAME
Definition: featdefs.h:34
inT32 NumFeatureTypes
Definition: featdefs.h:49
const FEATURE_DESC_STRUCT * FeatureDesc[NUM_FEATURE_TYPES]
Definition: featdefs.h:50

◆ ValidCharDescription()

bool ValidCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
CHAR_DESC  CharDesc 
)

Definition at line 210 of file featdefs.cpp.

211  {
212  bool anything_written = false;
213  bool well_formed = true;
214  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
215  if (CharDesc->FeatureSets[Type]) {
216  for (int i = 0; i < CharDesc->FeatureSets[Type]->NumFeatures; i++) {
217  FEATURE feat = CharDesc->FeatureSets[Type]->Features[i];
218  for (int p = 0; p < feat->Type->NumParams; p++) {
219  if (isnan(feat->Params[p]) || isinf(feat->Params[p]))
220  well_formed = false;
221  else
222  anything_written = true;
223  }
224  }
225  } else {
226  return false;
227  }
228  }
229  return anything_written && well_formed;
230 } /* ValidCharDescription */
uinT32 NumFeatureSets
Definition: featdefs.h:43
FLOAT32 Params[1]
Definition: ocrfeatures.h:65
FEATURE Features[1]
Definition: ocrfeatures.h:72
const FEATURE_DESC_STRUCT * Type
Definition: ocrfeatures.h:64
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:44

◆ WriteCharDescription()

void WriteCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
CHAR_DESC  CharDesc,
STRING str 
)

Appends a textual representation of CharDesc to str. The format used is to write out the number of feature sets which will be written followed by a representation of each feature set.

Each set starts with the short name for that feature followed by a description of the feature set. Feature sets which are not present are not written.

Parameters
FeatureDefsdefinitions of feature types/extractors
strstring to append CharDesc to
CharDesccharacter description to write to File
Note
Exceptions: none
History: Wed May 23 17:21:18 1990, DSJ, Created.

Definition at line 189 of file featdefs.cpp.

190  {
191  int NumSetsToWrite = 0;
192 
193  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++)
194  if (CharDesc->FeatureSets[Type])
195  NumSetsToWrite++;
196 
197  str->add_str_int(" ", NumSetsToWrite);
198  *str += "\n";
199  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
200  if (CharDesc->FeatureSets[Type]) {
201  *str += FeatureDefs.FeatureDesc[Type]->ShortName;
202  *str += " ";
203  WriteFeatureSet(CharDesc->FeatureSets[Type], str);
204  }
205  }
206 } /* WriteCharDescription */
uinT32 NumFeatureSets
Definition: featdefs.h:43
const char * ShortName
Definition: ocrfeatures.h:58
void add_str_int(const char *str, int number)
Definition: strngs.cpp:381
const FEATURE_DESC_STRUCT * FeatureDesc[NUM_FEATURE_TYPES]
Definition: featdefs.h:50
void WriteFeatureSet(FEATURE_SET FeatureSet, STRING *str)
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:44

Variable Documentation

◆ CharNormDesc

const FEATURE_DESC_STRUCT CharNormDesc

◆ GeoFeatDesc

const FEATURE_DESC_STRUCT GeoFeatDesc

◆ IntFeatDesc

const FEATURE_DESC_STRUCT IntFeatDesc

◆ kCNFeatureType

const char* kCNFeatureType

Definition at line 38 of file featdefs.cpp.

◆ kGeoFeatureType

const char* kGeoFeatureType

Definition at line 40 of file featdefs.cpp.

◆ kIntFeatureType

const char* kIntFeatureType

Definition at line 39 of file featdefs.cpp.

◆ kMicroFeatureType

const char* kMicroFeatureType

Definition at line 37 of file featdefs.cpp.

◆ MicroFeatureDesc

const FEATURE_DESC_STRUCT MicroFeatureDesc

Global Data Definitions and Declarations

◆ OutlineFeatDesc

const FEATURE_DESC_STRUCT OutlineFeatDesc

◆ PicoFeatDesc

TESS_API const FEATURE_DESC_STRUCT PicoFeatDesc