#include "oldlist.h"
#include "efio.h"
#include "emalloc.h"
#include "featdefs.h"
#include "getopt.h"
#include "ocrfeatures.h"
#include "general.h"
#include "clusttool.h"
#include "cluster.h"
#include "name2char.h"
#include <string.h>
#include <stdio.h>
#include <math.h>
Go to the source code of this file.
| #define MAX_NUM_SAMPLES 10000 | 
Unless limited by user to fewer
Definition at line 42 of file cnTraining.cpp.
| #define MAXNAMESIZE 80 | 
---------------------------------------------------------------------------- Include Files and Type Defines ----------------------------------------------------------------------------
Definition at line 40 of file cnTraining.cpp.
Referenced by ReadTrainingSamples(), WriteClusteredTrainingSamples(), WriteMergedTrainingSamples(), WriteMicrofeat(), WriteNormProtos(), and WriteTrainingSamples().
| #define MINSD (1.0f / 64.0f) | 
Minimum standard deviation
Definition at line 46 of file cnTraining.cpp.
Referenced by ReadTrainingSamples().
| #define PROGRAM_FEATURE_TYPE "cn" | 
FIX:
Definition at line 44 of file cnTraining.cpp.
Referenced by ReadTrainingSamples(), SetUpForClustering(), WriteClusteredTrainingSamples(), and WriteTrainingSamples().
| #define round | ( | x, | |||
| frag | ) | (floor(x/frag+.5)*frag) | 
FIX: Pointer to labeled list ??
Add all elements of ProtoList to NormProtoList.
| NormProtoList | Modified by function | |
| ProtoList | List of prototypes to add | 
Definition at line 794 of file cnTraining.cpp.
References first, iterate, LABELEDLISTNODE::List, NewLabeledList(), and push().
00798 { 00799 PROTOTYPE* Proto; 00800 LABELEDLIST LabeledProtoList; 00801 00802 LabeledProtoList = NewLabeledList(CharName); 00803 iterate(ProtoList) 00804 { 00805 Proto = (PROTOTYPE *) first (ProtoList); 00806 LabeledProtoList->List = push(LabeledProtoList->List, Proto); 00807 } 00808 *NormProtoList = push(*NormProtoList, LabeledProtoList); 00809 }//AddToNormProtosList
| LABELEDLIST FindList | ( | LIST | List, | |
| char * | Label | |||
| ) | 
Find list of labels.
| List | List to search | |
| Label | Label to search for | 
Definition at line 479 of file cnTraining.cpp.
References first, iterate, LABELEDLISTNODE::Label, and NULL.
Referenced by ReadTrainingSamples().
00482 { 00483 LABELEDLIST LabeledList; 00484 00485 iterate (List) 00486 { 00487 LabeledList = (LABELEDLIST) first (List); 00488 if (strcmp (LabeledList->Label, Label) == 0) 00489 return (LabeledList); 00490 } 00491 return (NULL); 00492 00493 }//FindList
| void FreeLabeledList | ( | LABELEDLIST | LabeledList | ) | 
Destroy and free memory reserved for LabeledList only.
| LabeledList | Labeled list to be freed | 
Definition at line 723 of file cnTraining.cpp.
References destroy(), LABELEDLISTNODE::Label, and LABELEDLISTNODE::List.
Referenced by FreeNormProtoList(), and FreeTrainingSamples().
00725 { 00726 destroy (LabeledList->List); 00727 free (LabeledList->Label); 00728 free (LabeledList); 00729 00730 }// FreeLabeledList
| void FreeNormProtoList | ( | LIST | CharList | ) | 
Frees memory allocated for each font in CharList.
| CharList | List of all characters in font | 
Definition at line 696 of file cnTraining.cpp.
References destroy(), first, FreeLabeledList(), and iterate.
00699 { 00700 LABELEDLIST CharSample; 00701 00702 iterate (CharList) /* iterate thru all of the fonts */ 00703 { 00704 CharSample = (LABELEDLIST) first (CharList); 00705 FreeLabeledList (CharSample); 00706 } 00707 destroy (CharList); 00708 00709 }// FreeNormProtoList
| void FreeTrainingSamples | ( | LIST | CharList | ) | 
Frees memory used by FontList.
| FontList | List of all fonts in document | 
Definition at line 662 of file cnTraining.cpp.
References destroy(), first, FreeFeatureSet(), FreeLabeledList(), iterate, and LABELEDLISTNODE::List.
00664 { 00665 LABELEDLIST CharSample; 00666 FEATURE_SET FeatureSet; 00667 LIST FeatureList; 00668 00669 00670 printf ("\nFreeTrainingSamples..."); 00671 iterate (CharList) /* iterate thru all of the fonts */ 00672 { 00673 CharSample = (LABELEDLIST) first (CharList); 00674 FeatureList = CharSample->List; 00675 iterate (FeatureList) /* iterate thru all of the classes */ 00676 { 00677 FeatureSet = (FEATURE_SET) first (FeatureList); 00678 FreeFeatureSet (FeatureSet); 00679 } 00680 FreeLabeledList (CharSample); 00681 } 00682 destroy (CharList); 00683 00684 }// FreeTrainingSamples
| char * GetNextFilename | ( | ) | 
Returns the next command line argument.
Definition at line 410 of file cnTraining.cpp.
References Argc, Argv, NULL, and optind.
00411 { 00412 if (optind < Argc) 00413 return (Argv [optind++]); 00414 else 00415 return (NULL); 00416 00417 }//GetNextFilename
| int main | ( | int | argc, | |
| char ** | argv | |||
| ) | 
Separate trained features for each character from the aggregate training page.
Definition at line 95 of file tesseractmain.cpp.
00095 { 00096 STRING outfile; //output file 00097 00098 if (argc < 3) { 00099 USAGE.error (argv[0], EXIT, 00100 "%s imagename outputbase [configfile [[+|-]varfile]...]\n", argv[0]); 00101 } 00102 00103 if (argc == 3) 00104 TessBaseAPI::Init(argv[0], argv[1], NULL, false, 0, argv + 2); 00105 else 00106 TessBaseAPI::Init(argv[0], argv[1], argv[3], false, argc - 4, argv + 4); 00107 00108 tprintf ("Tesseract Open Source OCR Engine\n"); 00109 00110 IMAGE image; 00111 #ifdef _TIFFIO_ 00112 TIFF* tif = TIFFOpen(argv[1], "r"); 00113 if (tif) { 00114 read_tiff_image(tif, &image); 00115 TIFFClose(tif); 00116 } else { 00117 READFAILED.error (argv[0], EXIT, argv[1]); 00118 } 00119 #else 00120 if (image.read_header(argv[1]) < 0) 00121 READFAILED.error (argv[0], EXIT, argv[1]); 00122 if (image.read(image.get_ysize ()) < 0) { 00123 MEMORY_OUT.error(argv[0], EXIT, "Read of image %s", 00124 argv[1]); 00125 } 00126 #endif // _TIFFIO_ 00127 int bytes_per_line = check_legal_image_size(image.get_xsize(), 00128 image.get_ysize(), 00129 image.get_bpp()); 00130 char* text = TessBaseAPI::TesseractRect(image.get_buffer(), image.get_bpp()/8, 00131 bytes_per_line, 0, 0, 00132 image.get_xsize(), image.get_ysize()); 00133 outfile = argv[2]; 00134 outfile += ".txt"; 00135 FILE* fp = fopen(outfile.string(), "w"); 00136 if (fp != NULL) { 00137 fwrite(text, 1, strlen(text), fp); 00138 fclose(fp); 00139 } 00140 delete [] text; 00141 TessBaseAPI::End(); 00142 00143 return 0; //Normal exit 00144 }
| LABELEDLIST NewLabeledList | ( | char * | Label | ) | 
Creates new list labeled with Label.
| Label | Label for new list | 
Definition at line 506 of file cnTraining.cpp.
References Emalloc(), LABELEDLISTNODE::Label, LABELEDLISTNODE::List, and NIL.
Referenced by AddToNormProtosList(), and ReadTrainingSamples().
00508 { 00509 LABELEDLIST LabeledList; 00510 00511 LabeledList = (LABELEDLIST) (char*)Emalloc (sizeof (LABELEDLISTNODE)); 00512 LabeledList->Label = (char*)Emalloc (strlen (Label)+1); 00513 strcpy (LabeledList->Label, Label); 00514 LabeledList->List = NIL; 00515 return (LabeledList); 00516 00517 }//NewLabeledList
Count number of prototypes matching criteria.
| ProtoList | Source of prototypes | |
| WriteSigProtos | if true, count significant prototypes | |
| WriteInsigProtos | if true, count INsignificant prototypes | 
Definition at line 849 of file cnTraining.cpp.
References first, iterate, N, and proto::Significant.
Referenced by WriteNormProtos().
00853 { 00854 int N = 0; 00855 PROTOTYPE *Proto; 00856 00857 iterate(ProtoList) 00858 { 00859 Proto = (PROTOTYPE *) first ( ProtoList ); 00860 if (( Proto->Significant && CountSigProtos ) 00861 || ( ! Proto->Significant && CountInsigProtos ) ) 00862 N++; 00863 } 00864 return(N); 00865 }//NumberOfProtos
| void ParseArguments | ( | int | argc, | |
| char ** | argv | |||
| ) | 
Parses the command-line arguments.
| argc | Number of command line arguments | |
| argv | Array of command line arguments | 
Illegal options terminate the program.
-d = "turn off display of samples" -p = "turn off significant protos" -n = "turn off insignificant proto" -S <style> = "spherical" | "elliptical" | "mixed" | "automatic" -M MinSamples = "min samples per prototype (%)" -B MaxIllegal = "max illegal chars per cluster (%)" -I Independence = "0 to 1" -C Confidence = "1e-200 to 1.0" -D Directory -N MaxNumSamples = limit how many features to consider from training page -R RoundingAccuracy
Definition at line 306 of file cnTraining.cpp.
References Argc, Argv, automatic, CLUSTERCONFIG::Confidence, Config, Directory, elliptical, FALSE, getopt(), CLUSTERCONFIG::Independence, CLUSTERCONFIG::MaxIllegal, MaxNumSamples, CLUSTERCONFIG::MinSamples, mixed, optarg, CLUSTERCONFIG::ProtoStyle, RoundingAccuracy, ShowAllSamples, ShowInsignificantProtos, ShowSignificantProtos, spherical, and TRUE.
00309 { 00310 int Option; 00311 int ParametersRead; 00312 BOOL8 Error; 00313 extern char *optarg; 00314 00315 Error = FALSE; 00316 Argc = argc; 00317 Argv = argv; 00318 while (( Option = getopt( argc, argv, "R:N:D:C:I:M:B:S:d:n:p" )) != EOF ) 00319 { 00320 switch ( Option ) 00321 { 00322 case 'n': 00323 sscanf(optarg,"%d", &ParametersRead); 00324 ShowInsignificantProtos = ParametersRead; 00325 break; 00326 case 'p': 00327 sscanf(optarg,"%d", &ParametersRead); 00328 ShowSignificantProtos = ParametersRead; 00329 break; 00330 case 'd': 00331 ShowAllSamples = FALSE; 00332 break; 00333 case 'C': 00334 ParametersRead = sscanf( optarg, "%lf", &(Config.Confidence) ); 00335 if ( ParametersRead != 1 ) Error = TRUE; 00336 else if ( Config.Confidence > 1 ) Config.Confidence = 1; 00337 else if ( Config.Confidence < 0 ) Config.Confidence = 0; 00338 break; 00339 case 'I': 00340 ParametersRead = sscanf( optarg, "%f", &(Config.Independence) ); 00341 if ( ParametersRead != 1 ) Error = TRUE; 00342 else if ( Config.Independence > 1 ) Config.Independence = 1; 00343 else if ( Config.Independence < 0 ) Config.Independence = 0; 00344 break; 00345 case 'M': 00346 ParametersRead = sscanf( optarg, "%f", &(Config.MinSamples) ); 00347 if ( ParametersRead != 1 ) Error = TRUE; 00348 else if ( Config.MinSamples > 1 ) Config.MinSamples = 1; 00349 else if ( Config.MinSamples < 0 ) Config.MinSamples = 0; 00350 break; 00351 case 'B': 00352 ParametersRead = sscanf( optarg, "%f", &(Config.MaxIllegal) ); 00353 if ( ParametersRead != 1 ) Error = TRUE; 00354 else if ( Config.MaxIllegal > 1 ) Config.MaxIllegal = 1; 00355 else if ( Config.MaxIllegal < 0 ) Config.MaxIllegal = 0; 00356 break; 00357 case 'R': 00358 ParametersRead = sscanf( optarg, "%f", &RoundingAccuracy ); 00359 if ( ParametersRead != 1 ) Error = TRUE; 00360 else if ( RoundingAccuracy > 0.01 ) RoundingAccuracy = 0.01; 00361 else if ( RoundingAccuracy < 0.0 ) RoundingAccuracy = 0.0; 00362 break; 00363 case 'S': 00364 switch ( optarg[0] ) 00365 { 00366 case 's': Config.ProtoStyle = spherical; break; 00367 case 'e': Config.ProtoStyle = elliptical; break; 00368 case 'm': Config.ProtoStyle = mixed; break; 00369 case 'a': Config.ProtoStyle = automatic; break; 00370 default: Error = TRUE; 00371 } 00372 break; 00373 case 'D': 00374 Directory = optarg; 00375 break; 00376 case 'N': 00377 if (sscanf (optarg, "%d", &MaxNumSamples) != 1 || 00378 MaxNumSamples <= 0) 00379 Error = TRUE; 00380 break; 00381 case '?': 00382 Error = TRUE; 00383 break; 00384 } 00385 if ( Error ) 00386 { 00387 fprintf (stderr, "usage: %s [-D] [-P] [-N]\n", argv[0] ); 00388 fprintf (stderr, "\t[-S ProtoStyle]\n"); 00389 fprintf (stderr, "\t[-M MinSamples] [-B MaxBad] [-I Independence] [-C Confidence]\n" ); 00390 fprintf (stderr, "\t[-d directory] [-n MaxNumSamples] [ TrainingPage ... ]\n"); 00391 exit (2); 00392 } 00393 }//while 00394 }// ParseArguments
| void ReadTrainingSamples | ( | FILE * | File, | |
| LIST * | TrainingSamples | |||
| ) | 
Read and separate samples from training page.
| File | Open text file to read samples from | |
| TrainingSamples | Data structure returned | 
Definition at line 434 of file cnTraining.cpp.
References f, FEATURE_SET_STRUCT::Features, FeaturesOfType, FindList(), FontName, FreeFeatureSet(), fscanf(), LABELEDLISTNODE::List, MAXNAMESIZE, MINSD, NewLabeledList(), NULL, FEATURE_SET_STRUCT::NumFeatures, NumFeatureSetsIn, PROGRAM_FEATURE_TYPE, push(), ReadCharDescription(), ShortNameToFeatureType(), and UniformRandomNumber().
00437 { 00438 char CharName[MAXNAMESIZE]; 00439 LABELEDLIST CharSample; 00440 FEATURE_SET FeatureSamples; 00441 CHAR_DESC CharDesc; 00442 int Type, i; 00443 00444 while (fscanf (File, "%s %s", FontName, CharName) == 2) { 00445 CharSample = FindList (*TrainingSamples, CharName); 00446 if (CharSample == NULL) { 00447 CharSample = NewLabeledList (CharName); 00448 *TrainingSamples = push (*TrainingSamples, CharSample); 00449 } 00450 CharDesc = ReadCharDescription (File); 00451 Type = ShortNameToFeatureType(PROGRAM_FEATURE_TYPE); 00452 FeatureSamples = FeaturesOfType(CharDesc, Type); 00453 00454 for (int feature = 0; feature < FeatureSamples->NumFeatures; ++feature) { 00455 FEATURE f = FeatureSamples->Features[feature]; 00456 for (int dim =0; dim < f->Type->NumParams; ++dim) 00457 f->Params[dim] += UniformRandomNumber(-MINSD, MINSD); 00458 }//for feature 00459 CharSample->List = push (CharSample->List, FeatureSamples); 00460 for (i = 0; i < NumFeatureSetsIn (CharDesc); i++) 00461 if (Type != i) 00462 FreeFeatureSet (FeaturesOfType (CharDesc, i)); 00463 free (CharDesc); 00464 }//while 00465 }// ReadTrainingSamples
| CLUSTERER * SetUpForClustering | ( | LABELEDLIST | CharSample | ) | 
Copy samples from CharSample to clusterer structure.
| CharSample | Structure holding feature information for a given character | 
Definition at line 744 of file cnTraining.cpp.
References DefinitionOf, Emalloc(), FEATURE_SET_STRUCT::Features, first, iterate, LABELEDLISTNODE::List, MakeClusterer(), MakeSample(), FEATURE_SET_STRUCT::MaxNumFeatures, N, NULL, fds::NumParams, fds::ParamDesc, FEATURE_STRUCT::Params, PROGRAM_FEATURE_TYPE, round, RoundingAccuracy, and ShortNameToFeatureType().
00746 { 00747 UINT16 N; 00748 int i, j; 00749 FLOAT32 *Sample = NULL; 00750 CLUSTERER *Clusterer; 00751 INT32 CharID; 00752 LIST FeatureList = NULL; 00753 FEATURE_SET FeatureSet = NULL; 00754 FEATURE_DESC FeatureDesc = NULL; 00755 // PARAM_DESC* ParamDesc; 00756 00757 FeatureDesc = DefinitionOf(ShortNameToFeatureType(PROGRAM_FEATURE_TYPE)); 00758 N = FeatureDesc->NumParams; 00759 //ParamDesc = ConvertToPARAMDESC(FeatureDesc->ParamDesc, N); 00760 Clusterer = MakeClusterer(N,FeatureDesc->ParamDesc); 00761 // free(ParamDesc); 00762 00763 FeatureList = CharSample->List; 00764 CharID = 0; 00765 iterate(FeatureList) 00766 { 00767 FeatureSet = (FEATURE_SET) first (FeatureList); 00768 for (i=0; i < FeatureSet->MaxNumFeatures; i++) 00769 { 00770 if (Sample == NULL) 00771 Sample = (FLOAT32 *)Emalloc(N * sizeof(FLOAT32)); 00772 for (j=0; j < N; j++) 00773 if (RoundingAccuracy != 0.0) 00774 Sample[j] = round(FeatureSet->Features[i]->Params[j], RoundingAccuracy); 00775 else 00776 Sample[j] = FeatureSet->Features[i]->Params[j]; 00777 MakeSample (Clusterer, Sample, CharID); 00778 } 00779 CharID++; 00780 } 00781 if ( Sample != NULL ) free( Sample ); 00782 return( Clusterer ); 00783 00784 }//SetUpForClustering
XXX.
| Directory | Directory to place sample files into | 
Definition at line 613 of file cnTraining.cpp.
References Efopen(), first, iterate, LABELEDLISTNODE::Label, LABELEDLISTNODE::List, MAXNAMESIZE, N, NameToChar(), NULL, NumberOfProtos(), CLUSTERER::ParamDesc, CLUSTERER::SampleSize, ShowInsignificantProtos, ShowSignificantProtos, WriteParamDesc(), and WriteProtos().
00617 { 00618 FILE *File; 00619 char Filename[MAXNAMESIZE]; 00620 LABELEDLIST LabeledProto; 00621 int N; 00622 char Label; 00623 00624 strcpy (Filename, ""); 00625 if (Directory != NULL) 00626 { 00627 strcat (Filename, Directory); 00628 strcat (Filename, "/"); 00629 } 00630 strcat (Filename, "normproto"); 00631 printf ("\nWriting %s ...", Filename); 00632 File = Efopen (Filename, "w"); 00633 fprintf(File,"%0d\n",Clusterer->SampleSize); 00634 WriteParamDesc(File,Clusterer->SampleSize,Clusterer->ParamDesc); 00635 00636 iterate(LabeledProtoList) 00637 { 00638 LabeledProto = (LABELEDLIST) first (LabeledProtoList); 00639 N = NumberOfProtos(LabeledProto->List, 00640 ShowSignificantProtos, ShowInsignificantProtos); 00641 Label = NameToChar(LabeledProto->Label); 00642 fprintf(File, "\n%c %d\n", Label, N); 00643 WriteProtos(File, Clusterer->SampleSize, LabeledProto->List, 00644 ShowSignificantProtos, ShowInsignificantProtos); 00645 } 00646 fclose (File); 00647 00648 }// WriteNormProtos
| void WriteProtos | ( | FILE * | File, | |
| UINT16 | N, | |||
| LIST | ProtoList, | |||
| BOOL8 | WriteSigProtos, | |||
| BOOL8 | WriteInsigProtos | |||
| ) | 
Write select prototypes from ProtoList to File.
| File | Opened file to write into | |
| N | Number of prototypes to write | |
| ProtoList | Source of prototypes | |
| WriteSigProtos | if true, only write significant prototypes | |
| WriteInsigProtos | if true, only write INsignificant prototypes | 
Definition at line 821 of file cnTraining.cpp.
References first, iterate, proto::Significant, and WritePrototype().
Referenced by WriteMicrofeat(), and WriteNormProtos().
00827 { 00828 PROTOTYPE *Proto; 00829 00830 // write prototypes 00831 iterate(ProtoList) 00832 { 00833 Proto = (PROTOTYPE *) first ( ProtoList ); 00834 if (( Proto->Significant && WriteSigProtos ) 00835 || ( ! Proto->Significant && WriteInsigProtos ) ) 00836 WritePrototype( File, N, Proto ); 00837 } 00838 }// WriteProtos
| void WriteTrainingSamples | ( | char * | Directory, | |
| LIST | CharList | |||
| ) | 
Writes some/all features for each font and character in CharList.
| Directory | Directory to place sample files into | |
| CharList | List of fonts | 
Definition at line 534 of file cnTraining.cpp.
References DefinitionOf, Efopen(), first, iterate, LABELEDLISTNODE::Label, LABELEDLISTNODE::List, MAXNAMESIZE, NULL, PROGRAM_FEATURE_TYPE, ShortNameToFeatureType(), WriteFeatureSet(), and WriteOldParamDesc().
00537 { 00538 LABELEDLIST CharSample; 00539 FEATURE_SET FeatureSet; 00540 LIST FeatureList; 00541 FILE *File; 00542 char Filename[MAXNAMESIZE]; 00543 int NumSamples; 00544 00545 iterate (CharList) // iterate thru all of the fonts 00546 { 00547 CharSample = (LABELEDLIST) first (CharList); 00548 00549 // construct the full pathname for the current samples file 00550 strcpy (Filename, ""); 00551 if (Directory != NULL) 00552 { 00553 strcat (Filename, Directory); 00554 strcat (Filename, "/"); 00555 } 00556 strcat (Filename, "Merged"); 00557 strcat (Filename, "/"); 00558 strcat (Filename, CharSample->Label); 00559 strcat (Filename, "."); 00560 strcat (Filename, PROGRAM_FEATURE_TYPE); 00561 printf ("\nWriting %s ...", Filename); 00562 00563 /* if file does not exist, create a new one with an appropriate 00564 header; otherwise append samples to the existing file */ 00565 File = fopen (Filename, "r"); 00566 if (File == NULL) 00567 { 00568 File = Efopen (Filename, "w"); 00569 WriteOldParamDesc 00570 (File, DefinitionOf (ShortNameToFeatureType (PROGRAM_FEATURE_TYPE))); 00571 } 00572 else 00573 { 00574 fclose (File); 00575 File = Efopen (Filename, "a"); 00576 } 00577 00578 // append samples onto the file 00579 FeatureList = CharSample->List; 00580 NumSamples = 0; 00581 iterate (FeatureList) 00582 { 00583 //if (NumSamples >= MaxNumSamples) break; 00584 00585 FeatureSet = (FEATURE_SET) first (FeatureList); 00586 WriteFeatureSet (File, FeatureSet); 00587 NumSamples++; 00588 } 00589 fclose (File); 00590 } 00591 }// WriteTrainingSamples
| int Argc  [static] | 
Definition at line 146 of file cnTraining.cpp.
Referenced by GetNextFilename(), and ParseArguments().
| char** Argv  [static] | 
Definition at line 147 of file cnTraining.cpp.
Referenced by GetNextFilename(), and ParseArguments().
| CLUSTERCONFIG Config  [static] | 
Initial value:
{
  elliptical, 0.025, 0.05, 0.8, 1e-3
}
-M 0.025 -B 0.05 -I 0.8 -C 1e-3
Definition at line 161 of file cnTraining.cpp.
Referenced by AddConfigToClass(), AddProtoToClass(), BaselineClassifier(), ClusterSamples(), ComputePrototypes(), FreeTempConfig(), MakeNewAdaptedClass(), MakeNewTemporaryConfig(), MakePermanent(), MakePrototype(), MakeTempProtoPerm(), NewTempConfig(), ParseArguments(), ReadPermConfig(), ReadTempConfig(), SplitProto(), WriteConfigs(), WriteOldConfigFile(), and WriteTempConfig().
| char FontName[MAXNAMESIZE]  [static] | 
Definition at line 142 of file cnTraining.cpp.
| int MaxNumSamples = MAX_NUM_SAMPLES  [static] | 
| FLOAT32 RoundingAccuracy = 0.0  [static] | 
Definition at line 166 of file cnTraining.cpp.
Referenced by ParseArguments(), and SetUpForClustering().
| int row_number | 
NOT used in tesseract 1.02
Definition at line 48 of file cnTraining.cpp.
| BOOL8 ShowAllSamples = FALSE  [static] | 
| BOOL8 ShowInsignificantProtos = FALSE  [static] | 
Definition at line 152 of file cnTraining.cpp.
Referenced by ParseArguments(), WriteClusteredTrainingSamples(), and WriteNormProtos().
| BOOL8 ShowSignificantProtos = TRUE  [static] | 
Definition at line 151 of file cnTraining.cpp.
Referenced by ParseArguments(), WriteClusteredTrainingSamples(), and WriteNormProtos().
 1.5.1
 1.5.1