tesseract  3.05.02
classifier_factory.cpp
Go to the documentation of this file.
1 /**********************************************************************
2  * File: classifier_factory.cpp
3  * Description: Implementation of the Base Character Classifier
4  * Author: Ahmad Abdulkader
5  * Created: 2007
6  *
7  * (C) Copyright 2008, Google Inc.
8  ** Licensed under the Apache License, Version 2.0 (the "License");
9  ** you may not use this file except in compliance with the License.
10  ** You may obtain a copy of the License at
11  ** http://www.apache.org/licenses/LICENSE-2.0
12  ** Unless required by applicable law or agreed to in writing, software
13  ** distributed under the License is distributed on an "AS IS" BASIS,
14  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  ** See the License for the specific language governing permissions and
16  ** limitations under the License.
17  *
18  **********************************************************************/
19 
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <string>
23 #include "classifier_factory.h"
24 #include "conv_net_classifier.h"
25 #include "feature_base.h"
26 #include "feature_bmp.h"
27 #include "feature_chebyshev.h"
28 #include "feature_hybrid.h"
30 
31 namespace tesseract {
32 
33 // Creates a CharClassifier object of the appropriate type depending on the
34 // classifier type in the settings file
35 CharClassifier *CharClassifierFactory::Create(const string &data_file_path,
36  const string &lang,
37  LangModel *lang_mod,
38  CharSet *char_set,
39  TuningParams *params) {
40  // create the feature extraction object
41  FeatureBase *feat_extract;
42 
43  switch (params->TypeFeature()) {
44  case TuningParams::BMP:
45  feat_extract = new FeatureBmp(params);
46  break;
48  feat_extract = new FeatureChebyshev(params);
49  break;
51  feat_extract = new FeatureHybrid(params);
52  break;
53  default:
54  fprintf(stderr, "Cube ERROR (CharClassifierFactory::Create): invalid "
55  "feature type.\n");
56  return NULL;
57  }
58 
59  // create the classifier object
60  CharClassifier *classifier_obj;
61  switch (params->TypeClassifier()) {
62  case TuningParams::NN:
63  classifier_obj = new ConvNetCharClassifier(char_set, params,
64  feat_extract);
65  break;
67  classifier_obj = new HybridNeuralNetCharClassifier(char_set, params,
68  feat_extract);
69  break;
70  default:
71  fprintf(stderr, "Cube ERROR (CharClassifierFactory::Create): invalid "
72  "classifier type.\n");
73  return NULL;
74  }
75 
76  // Init the classifier
77  if (!classifier_obj->Init(data_file_path, lang, lang_mod)) {
78  delete classifier_obj;
79  fprintf(stderr, "Cube ERROR (CharClassifierFactory::Create): unable "
80  "to Init() character classifier object.\n");
81  return NULL;
82  }
83  return classifier_obj;
84 }
85 }
int TypeClassifier() const
Definition: tuning_params.h:54
static CharClassifier * Create(const string &data_file_path, const string &lang, LangModel *lang_mod, CharSet *char_set, TuningParams *params)
virtual bool Init(const string &data_file_path, const string &lang, LangModel *lang_mod)=0