112 int fontsize = it->sample_set()->NumFonts();
113 ErrorCounter old_counter(old_classifier->GetUnicharset(), fontsize);
114 ErrorCounter new_counter(new_classifier->GetUnicharset(), fontsize);
115 std::vector<UnicharRating> results;
117 int total_samples = 0;
118 int error_samples = 25;
119 int total_new_errors = 0;
121 for (it->Begin(); !it->AtEnd(); it->Next()) {
122 TrainingSample *mutable_sample = it->MutableSample();
123 int page_index = mutable_sample->page_num();
125 0 <= page_index && page_index < page_images.size() ? page_images[page_index] :
nullptr;
127 old_classifier->UnicharClassifySample(*mutable_sample, page_pix, 0, INVALID_UNICHAR_ID,
129 int correct_id = mutable_sample->class_id();
130 if (correct_id != 0 && !old_counter.AccumulateErrors(
true, boosting_mode, fontinfo_table,
131 results, mutable_sample)) {
133 new_classifier->UnicharClassifySample(*mutable_sample, page_pix, 0, INVALID_UNICHAR_ID,
135 if (correct_id != 0 && new_counter.AccumulateErrors(
true, boosting_mode, fontinfo_table,
136 results, mutable_sample)) {
137 tprintf(
"New Error on sample %d: Classifier debug output:\n", it->GlobalSampleIndex());
139 new_classifier->UnicharClassifySample(*mutable_sample, page_pix, 1, correct_id, &results);
140 if (results.size() > 0 && error_samples > 0) {
141 #ifndef GRAPHICS_DISABLED
142 new_classifier->DebugDisplay(*mutable_sample, page_pix, correct_id);
150 tprintf(
"Total new errors = %d\n", total_new_errors);