Tesseract  3.02
tesseract-ocr/classify/featdefs.h File Reference
#include "ocrfeatures.h"

Go to the source code of this file.

Classes

struct  CHAR_DESC_STRUCT
struct  FEATURE_DEFS_STRUCT

Defines

#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, FILE *File, CHAR_DESC CharDesc)
CHAR_DESC ReadCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, FILE *File)
int 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
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

Define Documentation

#define ILLEGAL_SHORT_NAME   2000

Definition at line 34 of file featdefs.h.

#define NUM_FEATURE_TYPES   4

---------------------------------------------------------------------------- Include Files and Type Defines ----------------------------------------------------------------------------

Definition at line 27 of file featdefs.h.


Typedef Documentation

Definition at line 46 of file featdefs.h.

Definition at line 54 of file featdefs.h.


Function Documentation

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 141 of file featdefs.cpp.

                                             {
  int i;

  if (CharDesc) {
    for (i = 0; i < CharDesc->NumFeatureSets; i++)
      FreeFeatureSet (CharDesc->FeatureSets[i]);
    Efree(CharDesc);
  }
}                                /* FreeCharDescription */
void InitFeatureDefs ( FEATURE_DEFS_STRUCT featuredefs)

Definition at line 121 of file featdefs.cpp.

                                                       {
  featuredefs->NumFeatureTypes = NUM_FEATURE_TYPES;
  for (int i = 0; i < NUM_FEATURE_TYPES; ++i) {
    featuredefs->FeatureDesc[i] = DescDefs[i];
  }
}
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 164 of file featdefs.cpp.

                                                                     {
  CHAR_DESC CharDesc;
  int i;

  CharDesc = (CHAR_DESC) Emalloc (sizeof (CHAR_DESC_STRUCT));
  CharDesc->NumFeatureSets = FeatureDefs.NumFeatureTypes;

  for (i = 0; i < CharDesc->NumFeatureSets; i++)
    CharDesc->FeatureSets[i] = NULL;

  return (CharDesc);

}                                /* NewCharDescription */
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 261 of file featdefs.cpp.

                                          {
  int NumSetsToRead;
  char ShortName[FEAT_NAME_SIZE];
  CHAR_DESC CharDesc;
  int Type;

  if (fscanf (File, "%d", &NumSetsToRead) != 1 ||
    NumSetsToRead < 0 || NumSetsToRead > FeatureDefs.NumFeatureTypes)
    DoError (ILLEGAL_NUM_SETS, "Illegal number of feature sets");

  CharDesc = NewCharDescription(FeatureDefs);
  for (; NumSetsToRead > 0; NumSetsToRead--) {
    fscanf (File, "%s", ShortName);
    Type = ShortNameToFeatureType(FeatureDefs, ShortName);
    CharDesc->FeatureSets[Type] =
      ReadFeatureSet (File, FeatureDefs.FeatureDesc[Type]);
  }
  return (CharDesc);

}                                // ReadCharDescription
int ShortNameToFeatureType ( const FEATURE_DEFS_STRUCT FeatureDefs,
const char *  ShortName 
)

Search thru 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 300 of file featdefs.cpp.

                                                  {
  int i;

  for (i = 0; i < FeatureDefs.NumFeatureTypes; i++)
    if (!strcmp ((FeatureDefs.FeatureDesc[i]->ShortName), ShortName))
      return (i);
  DoError (ILLEGAL_SHORT_NAME, "Illegal short name for a feature");
  return 0;

}                                // ShortNameToFeatureType
bool ValidCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
CHAR_DESC  CharDesc 
)

Definition at line 219 of file featdefs.cpp.

                                              {
  bool anything_written = false;
  bool well_formed = true;
  for (int Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
    if (CharDesc->FeatureSets[Type]) {
      for (int i = 0; i < CharDesc->FeatureSets[Type]->NumFeatures; i++) {
        FEATURE feat = CharDesc->FeatureSets[Type]->Features[i];
        for (int p = 0; p < feat->Type->NumParams; p++) {
          if (isnan(feat->Params[p]) || isinf(feat->Params[p]))
            well_formed = false;
          else
            anything_written = true;
        }
      }
    }
  }
  return anything_written && well_formed;
}                                /* ValidCharDescription */
void WriteCharDescription ( const FEATURE_DEFS_STRUCT FeatureDefs,
FILE *  File,
CHAR_DESC  CharDesc 
)

Write a textual representation of CharDesc to File. 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.

Globals:

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

Definition at line 200 of file featdefs.cpp.

                                                          {
  int Type;
  int NumSetsToWrite = 0;

  for (Type = 0; Type < CharDesc->NumFeatureSets; Type++)
    if (CharDesc->FeatureSets[Type])
      NumSetsToWrite++;

  fprintf (File, " %d\n", NumSetsToWrite);
  for (Type = 0; Type < CharDesc->NumFeatureSets; Type++)
  if (CharDesc->FeatureSets[Type]) {
    fprintf (File, "%s ", (FeatureDefs.FeatureDesc[Type])->ShortName);
    WriteFeatureSet (File, CharDesc->FeatureSets[Type]);
  }
}                                /* WriteCharDescription */

Variable Documentation

const char* kCNFeatureType

Definition at line 42 of file featdefs.cpp.

const char* kGeoFeatureType

Definition at line 44 of file featdefs.cpp.

const char* kIntFeatureType

Definition at line 43 of file featdefs.cpp.

const char* kMicroFeatureType

Definition at line 41 of file featdefs.cpp.

---------------------------------------------------------------------------- Global Data Definitions and Declarations ----------------------------------------------------------------------------