21 #ifdef DISABLED_LEGACY_ENGINE
28 :
INT_MEMBER(classify_debug_level, 0,
"Classify debug level", this->params())
31 BOOL_MEMBER(classify_bln_numeric_mode, 0,
"Assume the input is numbers [0-9].", this->params())
34 double_MEMBER(classify_max_rating_ratio, 1.5,
"Veto ratio between classifier ratings",
39 "Veto difference between classifier certainties", this->params())
44 Classify::~Classify() {}
61 :
BOOL_MEMBER(allow_blob_division, true,
"Use divisible blobs chopping", this->params())
62 ,
BOOL_MEMBER(prioritize_division, false,
"Prioritize blob division over chopping",
64 ,
BOOL_MEMBER(classify_enable_learning, true,
"Enable adaptive classifier", this->params())
65 ,
INT_MEMBER(classify_debug_level, 0,
"Classify debug level", this->params())
67 ,
double_MEMBER(classify_char_norm_range, 0.2,
"Character Normalization Range ...",
69 ,
double_MEMBER(classify_max_rating_ratio, 1.5,
"Veto ratio between classifier ratings",
72 "Veto difference between classifier certainties", this->params())
73 ,
BOOL_MEMBER(tess_cn_matching, 0,
"Character Normalized Matching", this->params())
74 ,
BOOL_MEMBER(tess_bn_matching, 0,
"Baseline Normalized Matching", this->params())
76 ,
BOOL_MEMBER(classify_use_pre_adapted_templates, 0,
"Use pre-adapted classifier templates",
78 ,
BOOL_MEMBER(classify_save_adapted_templates, 0,
"Save adapted templates to a file",
80 ,
BOOL_MEMBER(classify_enable_adaptive_debugger, 0,
"Enable match debugger", this->params())
81 ,
BOOL_MEMBER(classify_nonlinear_norm, 0,
"Non-linear stroke-density normalization",
83 ,
INT_MEMBER(matcher_debug_level, 0,
"Matcher Debug Level", this->params())
84 ,
INT_MEMBER(matcher_debug_flags, 0,
"Matcher Debug Flags", this->params())
85 ,
INT_MEMBER(classify_learning_debug_level, 0,
"Learning Debug Level: ", this->params())
86 ,
double_MEMBER(matcher_good_threshold, 0.125,
"Good Match (0-1)", this->params())
87 ,
double_MEMBER(matcher_reliable_adaptive_result, 0.0,
"Great Match (0-1)", this->params())
88 ,
double_MEMBER(matcher_perfect_threshold, 0.02,
"Perfect Match (0-1)", this->params())
89 ,
double_MEMBER(matcher_bad_match_pad, 0.15,
"Bad Match Pad (0-1)", this->params())
90 ,
double_MEMBER(matcher_rating_margin, 0.1,
"New template margin (0-1)", this->params())
91 ,
double_MEMBER(matcher_avg_noise_size, 12.0,
"Avg. noise blob length", this->params())
92 ,
INT_MEMBER(matcher_permanent_classes_min, 1,
"Min # of permanent classes", this->params())
93 ,
INT_MEMBER(matcher_min_examples_for_prototyping, 3,
"Reliable Config Threshold",
95 ,
INT_MEMBER(matcher_sufficient_examples_for_prototyping, 5,
96 "Enable adaption even if the ambiguities have not been seen", this->params())
98 "Maximum angle delta for prototype clustering", this->params())
100 "Penalty to apply when a non-alnum is vertically out of "
101 "its expected textline position",
103 ,
double_MEMBER(rating_scale, 1.5,
"Rating scaling factor", this->params())
104 ,
double_MEMBER(certainty_scale, 20.0,
"Certainty scaling factor", this->params())
105 ,
double_MEMBER(tessedit_class_miss_scale, 0.00390625,
"Scale factor for features not used",
108 "Prune poor adapted results this much worse than best result", this->params())
110 "Threshold at which classify_adapted_pruning_factor starts", this->params())
111 ,
INT_MEMBER(classify_adapt_proto_threshold, 230,
112 "Threshold for good protos during adaptive 0-255", this->params())
113 ,
INT_MEMBER(classify_adapt_feature_threshold, 230,
114 "Threshold for good features during adaptive 0-255", this->params())
116 "Do not include character fragments in the"
117 " results of the classifier",
119 ,
double_MEMBER(classify_character_fragments_garbage_certainty_threshold, -3.0,
120 "Exclude fragments that do not look like whole"
121 " characters from training and adaption",
123 ,
BOOL_MEMBER(classify_debug_character_fragments, false,
124 "Bring up graphical debugging windows for fragments training", this->params())
125 ,
BOOL_MEMBER(matcher_debug_separate_windows, false,
126 "Use two different windows for debugging the matching: "
127 "One for the protos and one for the features.",
129 ,
STRING_MEMBER(classify_learn_debug_str,
"",
"Class str to debug learning", this->params())
130 ,
INT_MEMBER(classify_class_pruner_threshold, 229,
"Class Pruner Threshold 0-255",
132 ,
INT_MEMBER(classify_class_pruner_multiplier, 15,
133 "Class Pruner Multiplier 0-255: ", this->params())
135 "Class Pruner CutoffStrength: ", this->params())
136 ,
INT_MEMBER(classify_integer_matcher_multiplier, 10,
137 "Integer Matcher Multiplier 0-255: ", this->params())
138 ,
BOOL_MEMBER(classify_bln_numeric_mode, 0,
"Assume the input is numbers [0-9].",
140 ,
double_MEMBER(speckle_large_max_size, 0.30,
"Max large speckle size", this->params())
141 ,
double_MEMBER(speckle_rating_penalty, 10.0,
"Penalty to add to worst rating for noise",
143 , im_(&classify_debug_level)
145 using namespace std::placeholders;
153 #ifndef GRAPHICS_DISABLED
154 delete learn_debug_win_;
155 delete learn_fragmented_word_debug_win_;
156 delete learn_fragments_debug_win_;
163 delete static_classifier_;
164 static_classifier_ = static_classifier;
171 BLOB_CHOICE_IT bc_it(choices);
174 float certainty = -
getDict().certainty_scale;
175 float rating = rating_scale * blob_length;
176 if (!choices->empty() && blob_length > 0) {
177 bc_it.move_to_last();
180 rating = worst_choice->
rating() + speckle_rating_penalty;
183 certainty = -rating *
getDict().certainty_scale / (rating_scale * blob_length);
187 bc_it.add_to_end(blob_choice);
192 double speckle_size =
kBlnXHeight * speckle_large_max_size;
194 return bbox.
width() < speckle_size && bbox.
height() < speckle_size;
#define INT_MEMBER(name, val, comment, vec)
#define double_MEMBER(name, val, comment, vec)
#define STRING_MEMBER(name, val, comment, vec)
#define BOOL_MEMBER(name, val, comment, vec)
#define classify_enable_adaptive_matcher
void FontInfoDeleteCallback(FontInfo f)
void InitFeatureDefs(FEATURE_DEFS_STRUCT *featuredefs)
TBOX bounding_box() const
TDimension height() const
bool LargeSpeckle(const TBLOB &blob)
FEATURE_DEFS_STRUCT feature_defs_
void SetStaticClassifier(ShapeClassifier *static_classifier)
void EndAdaptiveClassifier()
UnicityTable< FontInfo > fontinfo_table_
void AddLargeSpeckleTo(int blob_length, BLOB_CHOICE_LIST *choices)