WERD_CHOICE *tess_segment_pass2( //recog one word WERD *word, //bln word to do DENORM *denorm, //de-normaliser POLY_MATCHER matcher, //matcher function WERD_CHOICE *&raw_choice, //raw result //list of blob lists BLOB_CHOICE_LIST_CLIST *blob_choices, WERD *&outword //bln word output ) { WERD_CHOICE *result; //return value int saved_enable_assoc = 0; int saved_chop_enable = 0; if (word->flag (W_DONT_CHOP)) { saved_enable_assoc = enable_assoc; saved_chop_enable = chop_enable; enable_assoc = 0; chop_enable = 0; if (word->flag (W_REP_CHAR)) permute_only_top = 1; } set_pass2(); result = recog_word (word, denorm, matcher, NULL, NULL, FALSE, raw_choice, blob_choices, outword); if (word->flag (W_DONT_CHOP)) { enable_assoc = saved_enable_assoc; chop_enable = saved_chop_enable; permute_only_top = 0; } return result; }
WERD_CHOICE *Tesseract::tess_segment_pass1( //recog one word WERD *word, //bln word to do DENORM *denorm, //de-normaliser //matcher function POLY_MATCHER matcher, //raw result WERD_CHOICE *&raw_choice, //list of blob lists BLOB_CHOICE_LIST_CLIST *blob_choices, WERD *&outword //bln word output ) { WERD_CHOICE *result; //return value int saved_enable_assoc = 0; int saved_chop_enable = 0; if (word->flag (W_DONT_CHOP)) { saved_enable_assoc = wordrec_enable_assoc; saved_chop_enable = chop_enable; wordrec_enable_assoc.set_value(0); chop_enable.set_value(0); if (word->flag (W_REP_CHAR)) permute_only_top = 1; } set_pass1(); // tprintf("pass1 chop on=%d, seg=%d, onlytop=%d",chop_enable,enable_assoc,permute_only_top); result = recog_word (word, denorm, matcher, NULL, NULL, FALSE, raw_choice, blob_choices, outword); if (word->flag (W_DONT_CHOP)) { wordrec_enable_assoc.set_value(saved_enable_assoc); chop_enable.set_value(saved_chop_enable); permute_only_top = 0; } return result; }
WERD_CHOICE *test_segment_pass2( //recog one word WERD *word, //bln word to do DENORM *denorm, //de-normaliser POLY_MATCHER matcher, //matcher function POLY_TESTER tester, //tester function WERD_CHOICE *&raw_choice, //raw result //list of blob lists BLOB_CHOICE_LIST_CLIST *blob_choices, WERD *&outword //bln word output ) { set_pass2(); return recog_word (word, denorm, matcher, tester, NULL, TRUE, raw_choice, blob_choices, outword); }
void Tesseract::tess_segment_pass2(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices) { int saved_enable_assoc = 0; int saved_chop_enable = 0; if (word->word->flag(W_DONT_CHOP)) { saved_enable_assoc = wordrec_enable_assoc; saved_chop_enable = chop_enable; wordrec_enable_assoc.set_value(0); chop_enable.set_value(0); if (word->word->flag(W_REP_CHAR)) getDict().permute_only_top.set_value(true); } set_pass2(); recog_word(word, blob_choices); if (word->word->flag(W_DONT_CHOP)) { wordrec_enable_assoc.set_value(saved_enable_assoc); chop_enable.set_value(saved_chop_enable); getDict().permute_only_top.set_value(false); } }
void Tesseract::tess_segment_pass_n(int pass_n, WERD_RES *word) { int saved_enable_assoc = 0; int saved_chop_enable = 0; if (word->word->flag(W_DONT_CHOP)) { saved_enable_assoc = wordrec_enable_assoc; saved_chop_enable = chop_enable; wordrec_enable_assoc.set_value(0); chop_enable.set_value(0); } if (pass_n == 1) set_pass1(); else set_pass2(); recog_word(word); if (word->best_choice == nullptr) word->SetupFake(*word->uch_set); if (word->word->flag(W_DONT_CHOP)) { wordrec_enable_assoc.set_value(saved_enable_assoc); chop_enable.set_value(saved_chop_enable); } }