tesseract  5.0.0-alpha-619-ge9db
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
 

Typedefs

using CHAR_DESC = CHAR_DESC_STRUCT *
 
using FEATURE_DEFS = FEATURE_DEFS_STRUCT *
 

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 TESS_API char *const kMicroFeatureType
 
const TESS_API char *const kCNFeatureType
 
const TESS_API char *const kIntFeatureType
 
const TESS_API char *const kGeoFeatureType
 
const FEATURE_DESC_STRUCT MicroFeatureDesc
 
const TESS_API 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

◆ NUM_FEATURE_TYPES

#define NUM_FEATURE_TYPES   4

Include Files and Type Defines

Definition at line 26 of file featdefs.h.

Typedef Documentation

◆ CHAR_DESC

Definition at line 42 of file featdefs.h.

◆ FEATURE_DEFS

Definition at line 48 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

Definition at line 128 of file featdefs.cpp.

129  {
130  if (CharDesc) {
131  for (size_t i = 0; i < CharDesc->NumFeatureSets; i++)
132  FreeFeatureSet (CharDesc->FeatureSets[i]);
133  Efree(CharDesc);
134  }

◆ InitFeatureDefs()

void InitFeatureDefs ( FEATURE_DEFS_STRUCT featuredefs)

Definition at line 111 of file featdefs.cpp.

112  {
113  featuredefs->NumFeatureTypes = NUM_FEATURE_TYPES;
114  for (int i = 0; i < NUM_FEATURE_TYPES; ++i) {
115  featuredefs->FeatureDesc[i] = DescDefs[i];
116  }

◆ 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.

Definition at line 147 of file featdefs.cpp.

148  {
149  CHAR_DESC CharDesc;
150  CharDesc = static_cast<CHAR_DESC>(Emalloc (sizeof (CHAR_DESC_STRUCT)));
151  CharDesc->NumFeatureSets = FeatureDefs.NumFeatureTypes;
152 
153  for (size_t i = 0; i < CharDesc->NumFeatureSets; i++)
154  CharDesc->FeatureSets[i] = nullptr;
155 
156  return (CharDesc);

◆ 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.

Definition at line 235 of file featdefs.cpp.

237  {
238  int NumSetsToRead;
239  char ShortName[FEAT_NAME_SIZE];
240  CHAR_DESC CharDesc;
241  int Type;
242 
243  ASSERT_HOST(tfscanf(File, "%d", &NumSetsToRead) == 1);
244  ASSERT_HOST(NumSetsToRead >= 0);
245  ASSERT_HOST(NumSetsToRead <= FeatureDefs.NumFeatureTypes);
246 
247  CharDesc = NewCharDescription(FeatureDefs);
248  for (; NumSetsToRead > 0; NumSetsToRead--) {
249  tfscanf(File, "%s", ShortName);
250  Type = ShortNameToFeatureType(FeatureDefs, ShortName);
251  CharDesc->FeatureSets[Type] =
252  ReadFeatureSet (File, FeatureDefs.FeatureDesc[Type]);
253  }
254  return CharDesc;

◆ 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.

Definition at line 269 of file featdefs.cpp.

271  {
272  for (int i = 0; i < FeatureDefs.NumFeatureTypes; i++)
273  if (!strcmp ((FeatureDefs.FeatureDesc[i]->ShortName), ShortName))
274  return static_cast<uint32_t>(i);
275  ASSERT_HOST(!"Illegal short name for a feature");
276  return 0;

◆ ValidCharDescription()

bool ValidCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
CHAR_DESC  CharDesc 
)

Definition at line 194 of file featdefs.cpp.

196  {
197  bool anything_written = false;
198  bool well_formed = true;
199  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
200  if (CharDesc->FeatureSets[Type]) {
201  for (int i = 0; i < CharDesc->FeatureSets[Type]->NumFeatures; i++) {
202  FEATURE feat = CharDesc->FeatureSets[Type]->Features[i];
203  for (int p = 0; p < feat->Type->NumParams; p++) {
204  if (std::isnan(feat->Params[p]) || std::isinf(feat->Params[p]))
205  well_formed = false;
206  else
207  anything_written = true;
208  }
209  }
210  } else {
211  return false;
212  }
213  }
214  return anything_written && well_formed;

◆ 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

Definition at line 173 of file featdefs.cpp.

175  {
176  int NumSetsToWrite = 0;
177 
178  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++)
179  if (CharDesc->FeatureSets[Type])
180  NumSetsToWrite++;
181 
182  str->add_str_int(" ", NumSetsToWrite);
183  *str += "\n";
184  for (size_t Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
185  if (CharDesc->FeatureSets[Type]) {
186  *str += FeatureDefs.FeatureDesc[Type]->ShortName;
187  *str += " ";
188  WriteFeatureSet(CharDesc->FeatureSets[Type], str);
189  }
190  }

Variable Documentation

◆ CharNormDesc

const FEATURE_DESC_STRUCT CharNormDesc

◆ GeoFeatDesc

const FEATURE_DESC_STRUCT GeoFeatDesc

◆ IntFeatDesc

const FEATURE_DESC_STRUCT IntFeatDesc

◆ kCNFeatureType

const TESS_API char* const kCNFeatureType

Definition at line 32 of file featdefs.cpp.

◆ kGeoFeatureType

const TESS_API char* const kGeoFeatureType

Definition at line 34 of file featdefs.cpp.

◆ kIntFeatureType

const TESS_API char* const kIntFeatureType

Definition at line 33 of file featdefs.cpp.

◆ kMicroFeatureType

const TESS_API char* const kMicroFeatureType

Definition at line 31 of file featdefs.cpp.

◆ MicroFeatureDesc

const FEATURE_DESC_STRUCT MicroFeatureDesc

Global Data Definitions and Declarations

◆ OutlineFeatDesc

const FEATURE_DESC_STRUCT OutlineFeatDesc

◆ PicoFeatDesc

const TESS_API FEATURE_DESC_STRUCT PicoFeatDesc
STRING::add_str_int
void add_str_int(const char *str, int number)
Definition: strngs.cpp:370
tfscanf
int tfscanf(FILE *stream, const char *format,...)
Definition: scanutils.cpp:181
ReadFeatureSet
FEATURE_SET ReadFeatureSet(FILE *File, const FEATURE_DESC_STRUCT *FeatureDesc)
Definition: ocrfeatures.cpp:139
Emalloc
void * Emalloc(int Size)
Definition: emalloc.cpp:31
ShortNameToFeatureType
uint32_t ShortNameToFeatureType(const FEATURE_DEFS_STRUCT &FeatureDefs, const char *ShortName)
Definition: featdefs.cpp:269
ASSERT_HOST
#define ASSERT_HOST(x)
Definition: errcode.h:87
FEATURE_DESC_STRUCT::ShortName
const char * ShortName
Definition: ocrfeatures.h:53
CHAR_DESC_STRUCT::FeatureSets
FEATURE_SET FeatureSets[NUM_FEATURE_TYPES]
Definition: featdefs.h:40
FEATURE_STRUCT
Definition: ocrfeatures.h:58
FEATURE_DEFS_STRUCT::FeatureDesc
const FEATURE_DESC_STRUCT * FeatureDesc[NUM_FEATURE_TYPES]
Definition: featdefs.h:46
FEATURE_DEFS_STRUCT::NumFeatureTypes
int32_t NumFeatureTypes
Definition: featdefs.h:45
WriteFeatureSet
void WriteFeatureSet(FEATURE_SET FeatureSet, STRING *str)
Definition: ocrfeatures.cpp:179
FEATURE_DESC_STRUCT::NumParams
uint16_t NumParams
Definition: ocrfeatures.h:52
FEATURE_SET_STRUCT::Features
FEATURE Features[1]
Definition: ocrfeatures.h:67
FEATURE_STRUCT::Params
float Params[1]
Definition: ocrfeatures.h:60
FEATURE_STRUCT::Type
const FEATURE_DESC_STRUCT * Type
Definition: ocrfeatures.h:59
CHAR_DESC_STRUCT
Definition: featdefs.h:38
NUM_FEATURE_TYPES
#define NUM_FEATURE_TYPES
Definition: featdefs.h:26
Efree
void Efree(void *ptr)
Definition: emalloc.cpp:45
FreeFeatureSet
void FreeFeatureSet(FEATURE_SET FeatureSet)
Definition: ocrfeatures.cpp:61
CHAR_DESC_STRUCT::NumFeatureSets
uint32_t NumFeatureSets
Definition: featdefs.h:39
NewCharDescription
CHAR_DESC NewCharDescription(const FEATURE_DEFS_STRUCT &FeatureDefs)
Definition: featdefs.cpp:147
FEATURE_SET_STRUCT::NumFeatures
uint16_t NumFeatures
Definition: ocrfeatures.h:65
FEAT_NAME_SIZE
#define FEAT_NAME_SIZE
Definition: ocrfeatures.h:32