Tesseract
3.02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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
"
29
#include "
hybrid_neural_net_classifier.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
;
47
case
TuningParams::CHEBYSHEV
:
48
feat_extract =
new
FeatureChebyshev
(params);
49
break
;
50
case
TuningParams::HYBRID
:
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
if
(feat_extract ==
NULL
) {
60
fprintf(stderr,
"Cube ERROR (CharClassifierFactory::Create): unable "
61
"to instantiate feature extraction object.\n"
);
62
return
NULL
;
63
}
64
65
// create the classifier object
66
CharClassifier
*classifier_obj;
67
switch
(params->
TypeClassifier
()) {
68
case
TuningParams::NN
:
69
classifier_obj =
new
ConvNetCharClassifier
(char_set, params,
70
feat_extract);
71
break
;
72
case
TuningParams::HYBRID_NN
:
73
classifier_obj =
new
HybridNeuralNetCharClassifier
(char_set, params,
74
feat_extract);
75
break
;
76
default
:
77
fprintf(stderr,
"Cube ERROR (CharClassifierFactory::Create): invalid "
78
"classifier type.\n"
);
79
return
NULL
;
80
}
81
82
if
(classifier_obj ==
NULL
) {
83
fprintf(stderr,
"Cube ERROR (CharClassifierFactory::Create): error "
84
"allocating memory for character classifier object.\n"
);
85
return
NULL
;
86
}
87
88
// Init the classifier
89
if
(!classifier_obj->
Init
(data_file_path, lang, lang_mod)) {
90
delete
classifier_obj;
91
fprintf(stderr,
"Cube ERROR (CharClassifierFactory::Create): unable "
92
"to Init() character classifier object.\n"
);
93
return
NULL
;
94
}
95
return
classifier_obj;
96
}
97
}
mnt
data
src
tesseract-ocr
cube
classifier_factory.cpp
Generated on Thu Nov 1 2012 20:19:47 for Tesseract by
1.8.1