tesseract
3.03
|
#include <cubeclassifier.h>
Public Member Functions | |
CubeTessClassifier (Tesseract *tesseract) | |
virtual | ~CubeTessClassifier () |
virtual int | UnicharClassifySample (const TrainingSample &sample, Pix *page_pix, int debug, UNICHAR_ID keep_this, GenericVector< UnicharRating > *results) |
virtual const ShapeTable * | GetShapeTable () const |
Definition at line 58 of file cubeclassifier.h.
tesseract::CubeTessClassifier::CubeTessClassifier | ( | tesseract::Tesseract * | tesseract | ) | [explicit] |
Definition at line 78 of file cubeclassifier.cpp.
: cube_cntxt_(tesseract->GetCubeRecoContext()), shape_table_(*tesseract->shape_table()), pruner_(new TessClassifier(true, tesseract)) { }
tesseract::CubeTessClassifier::~CubeTessClassifier | ( | ) | [virtual] |
Definition at line 83 of file cubeclassifier.cpp.
{
delete pruner_;
}
const ShapeTable * tesseract::CubeTessClassifier::GetShapeTable | ( | ) | const [virtual] |
Implements tesseract::ShapeClassifier.
Definition at line 127 of file cubeclassifier.cpp.
{
return &shape_table_;
}
int tesseract::CubeTessClassifier::UnicharClassifySample | ( | const TrainingSample & | sample, |
Pix * | page_pix, | ||
int | debug, | ||
UNICHAR_ID | keep_this, | ||
GenericVector< UnicharRating > * | results | ||
) | [virtual] |
Reimplemented from tesseract::ShapeClassifier.
Definition at line 89 of file cubeclassifier.cpp.
{ int num_results = pruner_->UnicharClassifySample(sample, page_pix, debug, keep_this, results); if (page_pix == NULL) return num_results; ASSERT_HOST(cube_cntxt_ != NULL); const TBOX& char_box = sample.bounding_box(); CubeObject* cube_obj = new tesseract::CubeObject( cube_cntxt_, page_pix, char_box.left(), pixGetHeight(page_pix) - char_box.top(), char_box.width(), char_box.height()); CharAltList* alt_list = cube_obj->RecognizeChar(); CharSet* char_set = cube_cntxt_->CharacterSet(); if (alt_list != NULL) { for (int r = 0; r < num_results; ++r) { // Get the best cube probability of the unichar in the result. double best_prob = 0.0; for (int i = 0; i < alt_list->AltCount(); ++i) { int alt_id = alt_list->Alt(i); int unichar_id = char_set->UnicharID(char_set->ClassString(alt_id)); if (unichar_id == (*results)[r].unichar_id && alt_list->AltProb(i) > best_prob) { best_prob = alt_list->AltProb(i); } } (*results)[r].rating = best_prob; } delete alt_list; // Re-sort by rating. results->sort(&UnicharRating::SortDescendingRating); } delete cube_obj; return results->size(); }