Tesseract
3.02
|
#include "base/commandlineflags.h"
#include "baseapi.h"
#include "commontraining.h"
#include "cubeclassifier.h"
#include "mastertrainer.h"
#include "params.h"
#include "strngs.h"
#include "tessclassifier.h"
Go to the source code of this file.
Enumerations | |
enum | ClassifierName { CN_PRUNER, CN_FULL, CN_CUBE, CN_CUBETESS, CN_COUNT } |
Functions | |
STRING_PARAM_FLAG (classifier,"","Classifier to test") | |
STRING_PARAM_FLAG (lang,"eng","Language to test") | |
STRING_PARAM_FLAG (tessdata_dir,"","Directory of traineddata files") | |
int | main (int argc, char **argv) |
Variables | |
const char * | names [] = {"pruner", "full", "cube", "cubetess", NULL } |
enum ClassifierName |
Definition at line 34 of file classifier_tester.cpp.
{ CN_PRUNER, CN_FULL, CN_CUBE, CN_CUBETESS, CN_COUNT };
int main | ( | int | argc, |
char ** | argv | ||
) |
---------------------------------------------------------------------------- Public Function Prototypes ----------------------------------------------------------------------------
Definition at line 65 of file classifier_tester.cpp.
{ ParseArguments(&argc, &argv); // Decode the classifier string. ClassifierName classifier = CN_COUNT; for (int c = 0; c < CN_COUNT; ++c) { if (strcmp(FLAGS_classifier.c_str(), names[c]) == 0) { classifier = static_cast<ClassifierName>(c); break; } } if (classifier == CN_COUNT) { fprintf(stderr, "Invalid classifier name:%s\n", FLAGS_classifier.c_str()); return 1; } STRING file_prefix; tesseract::MasterTrainer* trainer = tesseract::LoadTrainingData( argc, argv, true, NULL, &file_prefix); // We want to test junk as well if it is available. trainer->IncludeJunk(); // We want to test with replicated samples too. trainer->ReplicateAndRandomizeSamplesIfRequired(); // We need to initialize tesseract to test. tesseract::TessBaseAPI api; tesseract::OcrEngineMode engine_mode = tesseract::OEM_TESSERACT_ONLY; if (classifier == CN_CUBE || classifier == CN_CUBETESS) engine_mode = tesseract::OEM_TESSERACT_CUBE_COMBINED; if (api.Init(FLAGS_tessdata_dir.c_str(), FLAGS_lang.c_str(), engine_mode) < 0) { fprintf(stderr, "Tesseract initialization failed!\n"); return 1; } tesseract::ShapeClassifier* shape_classifier = NULL; tesseract::Tesseract* tesseract = const_cast<tesseract::Tesseract*>(api.tesseract()); tesseract::Classify* classify = reinterpret_cast<tesseract::Classify*>(tesseract); // Copy the shape_table from the classifier and add the space character if // not already present to count junk. tesseract::ShapeTable shape_table; shape_table.set_unicharset(classify->shape_table()->unicharset()); shape_table.AppendMasterShapes(*classify->shape_table()); if (shape_table.FindShape(0, -1) < 0) shape_table.AddShape(0, 0); if (classifier == CN_PRUNER) { shape_classifier = new tesseract::TessClassifier(true, classify); } else if (classifier == CN_FULL) { shape_classifier = new tesseract::TessClassifier(false, classify); } else if (classifier == CN_CUBE) { shape_classifier = new tesseract::CubeClassifier(tesseract); } else if (classifier == CN_CUBETESS) { shape_classifier = new tesseract::CubeTessClassifier(tesseract); } else { fprintf(stderr, "%s tester not yet implemented\n", FLAGS_classifier.c_str()); return 1; } tprintf("Testing classifier %s:\n", FLAGS_classifier.c_str()); trainer->TestClassifierOnSamples(3, false, shape_classifier, NULL); if (classifier != CN_CUBE && classifier != CN_CUBETESS) { // Test with replicated samples as well. trainer->TestClassifierOnSamples(3, true, shape_classifier, NULL); } delete shape_classifier; delete trainer; return 0; } /* main */
STRING_PARAM_FLAG | ( | classifier | , |
"" | , | ||
"Classifier to test" | |||
) |
STRING_PARAM_FLAG | ( | lang | , |
"eng" | , | ||
"Language to test" | |||
) |
STRING_PARAM_FLAG | ( | tessdata_dir | , |
"" | , | ||
"Directory of traineddata files" | |||
) |
const char* names[] = {"pruner", "full", "cube", "cubetess", NULL } |
Definition at line 42 of file classifier_tester.cpp.