21 #ifndef TESSERACT_CCMAIN_TESSERACTCLASS_H__
22 #define TESSERACT_CCMAIN_TESSERACTCLASS_H__
24 #include "allheaders.h"
47 class BLOB_CHOICE_LIST_CLIST;
98 class CubeRecoContext;
101 class TesseractCubeCombiner;
171 pixDestroy(&pix_grey_);
172 pix_grey_ = grey_pix;
182 return pix_grey_ !=
NULL ? pix_grey_ : pix_binary_;
185 return source_resolution_;
188 source_resolution_ = ppi;
191 return pixGetWidth(pix_binary_);
194 return pixGetHeight(pix_binary_);
197 return scaled_color_;
200 return scaled_factor_;
203 scaled_factor_ = factor;
204 scaled_color_ = color;
214 return right_to_left_;
217 return sub_langs_.size();
220 return sub_langs_[index];
242 int AutoPageSeg(
bool single_column,
bool osd,
bool only_osd,
243 BLOCK_LIST* blocks, TO_BLOCK_LIST* to_blocks,
246 bool single_column,
bool osd,
bool only_osd,
248 TO_BLOCK_LIST* to_blocks, Pix** photo_mask_pix, Pix** music_mask_pix);
252 const char* word_config,
int pass);
255 const TBOX* target_word_box,
256 const char* word_config,
260 const TBOX* target_word_box,
261 const char* word_config);
272 TBOX &selection_box);
279 const char *lengths);
293 BLOB_CHOICE_LIST_CLIST *blob_choices);
318 const char* cube_best_str,
321 Boxa** char_boxes,
CharSamp*** char_samples);
334 const char *lengths);
344 const char *textbase,
345 const char *language,
351 bool set_only_init_params);
353 const char *language,
375 const char *textbase,
376 const char *language,
382 bool set_only_init_params);
389 const char *textbase,
390 const char *language);
396 const char *textbase,
397 const char *language,
403 bool set_only_init_params);
411 #ifndef GRAPHICS_DISABLED
413 #endif // GRAPHICS_DISABLED
435 BLOB_CHOICE_LIST_CLIST *blob_choices,
441 const char *word_lengths);
443 const char *word_lengths);
445 const char *word_lengths);
447 const char *word_lengths);
476 BLOB_CHOICE_LIST_CLIST *blob_choices);
478 BLOB_CHOICE_LIST_CLIST *blob_choices);
480 BLOB_CHOICE_LIST_CLIST *blob_choices);
488 WERD_RES_LIST &best_perm,
513 BOOL8 good_quality_doc);
515 BOOL8 good_quality_doc);
520 inT16 *accepted_match_count);
533 TBOX & selection_box,
542 BLOB_CHOICE_LIST_CLIST *blob_choices);
544 BLOB_CHOICE_LIST_CLIST *blob_choices);
571 BLOCK_LIST *block_list);
576 BLOCK_LIST *block_list);
591 const TBOX& box,
const TBOX& next_box,
592 const char* correct_text);
600 const TBOX& box,
const TBOX& next_box,
601 const char* correct_text);
624 int choices_pos,
int choices_length,
636 const char *err_msg);
654 "Take segmentation and labeling from box file");
656 "Conversion of word/line box file to char box file");
658 "Generate training data from boxed chars");
660 "Generate more boxes from boxed chars");
662 "Dump intermediate images made during page segmentation");
664 "Page seg mode: 0=osd only, 1=auto+osd, 2=auto, 3=col, 4=block,"
665 " 5=line, 6=word, 7=char"
666 " (Values from PageSegMode enum in publictypes.h)");
668 "Which OCR engine(s) to run (Tesseract, Cube, both). Defaults"
669 " to loading and running only Tesseract (no Cube, no combiner)."
670 " (Values from OcrEngineMode enum in tesseractclass.h)");
672 "Blacklist of chars not to recognize");
674 "Whitelist of chars to recognize");
676 "Perform training for ambiguities");
679 "Whether to use the top-line splitting process for Devanagari "
680 "documents while performing page-segmentation.");
683 "Whether to use the top-line splitting process for Devanagari "
684 "documents while performing ocr.");
686 "Write all parameters to the given file.");
688 "Adapt to words that contain "
689 " a character composed form fragments");
691 "Generate and print debug information for adaption");
696 "Exposure value follows this pattern in the image"
697 " filename. The name of the image files are expected"
698 " to be in the form [lang].[fontname].exp[num].tif");
700 "Learn both character fragments (as is done in the"
701 " special low exposure mode) as well as unfragmented"
704 "Each bounding box is assumed to contain ngrams. Only"
705 " learn the ngrams whose outlines overlap horizontally.");
710 "Try to improve fuzzy spaces");
712 "Dont bother with word plausibility");
716 "Add words to the document dictionary");
720 "Enable correction based on the word bigram dictionary.");
731 "good_quality_doc lte outline error limit");
735 "Use reject map to control Tesseract adaption");
737 "Adaptation decision algorithm for tess");
739 "Do minimal rejection on pass 1 output");
743 "Adaptation decision algorithm for tess");
745 "Save the results of the recognition step"
746 " (blob_choices) within the corresponding WERD_CHOICE");
755 "Allow outline errs in unrejection?");
757 "Reduce rejection on good docs");
760 "%rej allowed before rej whole doc");
762 "%rej allowed before rej whole block");
764 "%rej allowed before rej whole row");
766 "Number of row rejects in whole word rejects"
767 "which prevents whole row rejection");
769 "Only rej partially rejected words in block rejection");
771 "Only rej partially rejected words in row rejection");
773 "Use word segmentation quality metric");
775 "Use word segmentation quality metric");
777 "Only preserve wds longer than this");
779 "Apply row rejection to good docs");
781 "rej good doc wd if more than this fraction rejected");
783 "Reject all bad quality wds");
786 "Output data to debug file");
789 "good_quality_doc gte good char limit");
791 "Mark v.bad words for tilde crunch");
797 "crunch garbage cert lt this");
808 "Del if word gt xht x this above bl");
816 "Dont pot crunch sensible strings");
819 "Dont crunch words with long lower case strings");
821 "Dont crunch words with long lower case strings");
825 "How many non-noise blbs either side?");
831 "Punct. chs expected WITHIN numbers");
833 "Max allowed deviation of blob top outside of font data");
836 "Write block separators in output");
838 "Write repetition char code");
842 "Output char for unidentified blobs");
845 "Min suspect level for rejecting spaces");
847 "Dont Suspect dict wds longer than this");
854 "Make output have exactly one word per WERD");
856 "Dont reject ANYTHING AT ALL");
863 "Aspect ratio dot/hyphen test");
865 "Aspect ratio dot/hyphen test");
877 "Allow NN to unrej");
882 "-1 -> All pages, else specifc page to process");
888 "Debug level for TessdataManager functions.");
890 "List of languages to load with this one");
894 "Min acceptable orientation margin");
898 "Only initialize with the config file. Useful if the instance is "
899 "not going to be used for OCR but say only for layout analysis.");
920 const char* backup_config_file_;
932 int source_resolution_;
951 int font_table_size_;
962 #endif // TESSERACT_CCMAIN_TESSERACTCLASS_H__
void fill_werd_res(const BoxWord &cube_box_word, WERD_CHOICE *cube_werd_choice, const char *cube_best_str, WERD_RES *tess_werd_res)
void classify_word_and_language(WordRecognizer recognizer, BLOCK *block, ROW *row, WERD_RES *word)
bool tessedit_override_permuter
int tessedit_pageseg_mode
void fix_sp_fp_word(WERD_RES_IT &word_res_it, ROW *row, BLOCK *block)
inT16 doc_good_char_quality
void reject_edge_blobs(WERD_RES *word)
void SetScaledColor(int factor, Pix *color)
int init_tesseract_internal(const char *arg0, const char *textbase, const char *language, OcrEngineMode oem, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_init_params)
inT16 count_alphas(const WERD_CHOICE &word)
bool tessedit_dump_pageseg_images
float blob_noise_score(TBLOB *blob)
bool ConvertStringToUnichars(const char *utf8, GenericVector< UNICHAR_ID > *class_ids)
void ParseLanguageString(const char *lang_str, GenericVector< STRING > *to_load, GenericVector< STRING > *not_to_load)
BOOL8 recog_interactive(BLOCK *block, ROW *row, WERD_RES *word_res)
void ResetDocumentDictionary()
void flip_hyphens(WERD_RES *word)
char * tessedit_char_blacklist
bool recog_all_words(PAGE_RES *page_res, ETEXT_DESC *monitor, const TBOX *target_word_box, const char *word_config, int dopasses)
BOOL8 process_cmd_win_event(inT32 cmd_event, char *new_value)
bool ResegmentWordBox(BLOCK_LIST *block_list, const TBOX &box, const TBOX &next_box, const char *correct_text)
double crunch_terrible_rating
void break_noisiest_blob_word(WERD_RES_LIST &words)
bool tessedit_display_outwords
char * conflict_set_I_l_1
bool last_char_was_newline
int tessedit_tess_adaption_mode
BOOL8 uniformly_spaced(WERD_RES *word)
bool suspect_constrain_1Il
int num_sub_langs() const
void cube_word_pass1(BLOCK *block, ROW *row, WERD_RES *word)
bool textord_tabfind_show_vlines
bool tessedit_rejection_debug
char * applybox_exposure_pattern
void reject_mostly_rejects(WERD_RES *word)
bool tessedit_init_config_only
bool RunOldFixXht(WERD_RES *word, BLOCK *block, ROW *row)
bool tessedit_test_adaption
char * chs_trailing_punct1
BOOL8 potential_word_crunch(WERD_RES *word, GARBAGE_LEVEL garbage_level, BOOL8 ok_dict_word)
#define BOOL_VAR_H(name, val, comment)
bool tessedit_adapt_to_char_fragments
bool interactive_display_mode
int debug_fix_space_level
bool tessedit_debug_fonts
bool tessedit_tess_adapt_to_rejmap
void reject_I_1_L(WERD_RES *word)
void tilde_crunch(PAGE_RES_IT &page_res_it)
inT16 first_alphanum_index(const char *word, const char *word_lengths)
float ComputeCompatibleXheight(WERD_RES *word_res)
bool tessedit_matcher_log
bool tessedit_preserve_row_rej_perfect_wds
char * numeric_punctuation
bool crunch_early_merge_tess_fails
void tilde_delete(PAGE_RES_IT &page_res_it)
int tessedit_ocr_engine_mode
double crunch_del_min_width
double tessedit_reject_block_percent
PAGE_RES * ApplyBoxes(const STRING &fname, bool find_segmentation, BLOCK_LIST *block_list)
bool tessedit_write_block_separators
double crunch_del_high_word
double quality_outline_pc
inT32 adaption_word_number
char * tessedit_char_whitelist
void dump_words(WERD_RES_LIST &perm, inT16 score, inT16 mode, BOOL8 improved)
inT16 worst_noise_blob(WERD_RES *word_res, float *worst_noise_score)
void flip_0O(WERD_RES *word)
bool tessedit_create_boxfile
void font_recognition_pass(PAGE_RES *page_res)
bool crunch_leave_ok_strings
int CountMisfitTops(WERD_RES *word_res)
void fix_noisy_space_list(WERD_RES_LIST &best_perm, ROW *row, BLOCK *block)
void output_pass(PAGE_RES_IT &page_res_it, const TBOX *target_word_box)
bool tessedit_row_rej_good_docs
void make_reject_map(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices, ROW *row, inT16 pass)
BOOL8 word_set_display(BLOCK *block, ROW *row, WERD_RES *word_res)
void write_results(PAGE_RES_IT &page_res_it, char newline_type, BOOL8 force_eol)
bool rej_1Il_use_dict_word
TessdataManager tessdata_manager
void MaximallyChopWord(const GenericVector< TBOX > &boxes, BLOCK *block, ROW *row, WERD_RES *word_res)
bool TrainedXheightFix(WERD_RES *word, BLOCK *block, ROW *row)
double tessedit_whole_wd_rej_row_percent
void(Tesseract::* WordRecognizer)(BLOCK *block, ROW *row, WERD_RES *word)
BOOL8 one_ell_conflict(WERD_RES *word_res, BOOL8 update_map)
int tessedit_bigram_debug
PAGE_RES * SetupApplyBoxes(const GenericVector< TBOX > &boxes, BLOCK_LIST *block_list)
char * tessedit_load_sublangs
int paragraph_debug_level
bool tessedit_debug_quality_metrics
void SearchForText(const GenericVector< BLOB_CHOICE_LIST * > *choices, int choices_pos, int choices_length, const GenericVector< UNICHAR_ID > &target_text, int text_index, float rating, GenericVector< int > *segmentation, float *best_rating, GenericVector< int > *best_segmentation)
BOOL8 digit_or_numeric_punct(WERD_RES *word, int char_position)
bool tessedit_reject_bad_qual_wds
bool init_cube_objects(bool load_combiner, TessdataManager *tessdata_manager)
void nn_match_word(WERD_RES *word, ROW *row)
bool tessedit_training_tess
bool textord_equation_detect
bool right_to_left() const
void quality_based_rejection(PAGE_RES_IT &page_res_it, BOOL8 good_quality_doc)
bool tessedit_resegment_from_line_boxes
bool cube_recognize(CubeObject *cube_obj, BLOCK *block, WERD_RES *word)
void process_image_event(const SVEvent &event)
CRUNCH_MODE word_deletable(WERD_RES *word, inT16 &delete_mode)
void recog_training_segmented(const STRING &fname, PAGE_RES *page_res, volatile ETEXT_DESC *monitor, FILE *output_file)
bool extract_cube_state(CubeObject *cube_obj, int *num_chars, Boxa **char_boxes, CharSamp ***char_samples)
int pageseg_devanagari_split_strategy
UNICHAR_ID get_rep_char(WERD_RES *word)
bool crunch_include_numerals
BOOL8 fixspace_thinks_word_done(WERD_RES *word)
void rejection_passes(PAGE_RES *page_res, ETEXT_DESC *monitor, const TBOX *target_word_box, const char *word_config)
int AutoPageSeg(bool single_column, bool osd, bool only_osd, BLOCK_LIST *blocks, TO_BLOCK_LIST *to_blocks, Tesseract *osd_tess, OSResults *osr)
void read_config_file(const char *filename, SetParamConstraint constraint)
bool tessedit_create_hocr
char * chs_trailing_punct2
void set_source_resolution(int ppi)
BOOL8 check_debug_pt(WERD_RES *word, int location)
int quality_min_initial_alphas_reqd
bool crunch_early_convert_bad_unlv_chs
int crunch_long_repetitions
bool tessedit_consistent_reps
void run_cube_combiner(PAGE_RES *page_res)
double tessedit_reject_doc_percent
#define double_VAR_H(name, val, comment)
bool tessedit_make_boxes_from_boxes
double crunch_small_outlines_size
bool tessedit_debug_doc_rejection
bool docqual_excuse_outline_errs
bool tessedit_resegment_from_boxes
void fix_fuzzy_spaces(ETEXT_DESC *monitor, inT32 word_count, PAGE_RES *page_res)
#define STRING_VAR_H(name, val, comment)
bool tessedit_enable_bigram_correction
bool debug_acceptable_wds
int x_ht_acceptance_tolerance
bool write_results_empty_block
double crunch_del_low_word
int tessedit_test_adaption_mode
BOOL8 tess_acceptable_word(WERD_CHOICE *word_choice, WERD_CHOICE *raw_choice)
Pix ** mutable_pix_binary()
int fixsp_non_noise_limit
int tessedit_preserve_min_wd_len
BOOL8 word_blank_and_set_display(BLOCK *block, ROW *row, WERD_RES *word_res)
void PrepareForTessOCR(BLOCK_LIST *block_list, Tesseract *osd_tess, OSResults *osr)
double tessedit_lower_flip_hyphen
bool tessedit_good_quality_unrej
bool ProcessTargetWord(const TBOX &word_box, const TBOX &target_word_box, const char *word_config, int pass)
inT16 safe_dict_word(const WERD_RES *werd_res)
inT16 count_alphanums(const WERD_CHOICE &word)
Textord * mutable_textord()
int init_tesseract_lm(const char *arg0, const char *textbase, const char *language)
bool tessedit_prefer_joined_punct
bool rej_1Il_trust_permuter_type
double tessedit_upper_flip_hyphen
double crunch_poor_garbage_rate
void set_unlv_suspects(WERD_RES *word)
void recog_pseudo_word(PAGE_RES *page_res, TBOX &selection_box)
BOOL8 word_dumper(BLOCK *block, ROW *row, WERD_RES *word_res)
void doc_and_block_rejection(PAGE_RES_IT &page_res_it, BOOL8 good_quality_doc)
void classify_word_pass1(BLOCK *block, ROW *row, WERD_RES *word)
void ResetAdaptiveClassifier()
void unrej_good_quality_words(PAGE_RES_IT &page_res_it)
void bigram_correction_pass(PAGE_RES *page_res)
CubeObject * cube_recognize_word(BLOCK *block, WERD_RES *word)
void recognize_page(STRING &image_name)
void SetEquationDetect(EquationDetect *detector)
void ExplodeRepeatedWord(BLOB_CHOICE *best_choice, PAGE_RES_IT *page_res_it)
inT16 fp_eval_word_spacing(WERD_RES_LIST &word_res_list)
int init_tesseract(const char *arg0, const char *textbase, const char *language, OcrEngineMode oem, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_init_params)
bool tessedit_train_from_boxes
bool applybox_learn_chars_and_char_frags_mode
void ReSegmentByClassification(PAGE_RES *page_res)
void dont_allow_1Il(WERD_RES *word)
BOOL8 word_display(BLOCK *block, ROW *row, WERD_RES *word_res)
BOOL8 noise_outlines(TWERD *word)
void SetupUniversalFontIds()
void convert_bad_unlv_chs(WERD_RES *word_res)
const FCOORD & reskew() const
inT16 count_outline_errs(char c, inT16 outline_count)
inT16 failure_count(WERD_RES *word)
bool crunch_terrible_garbage
FILE * init_recog_training(const STRING &fname)
inT16 word_outline_errs(WERD_RES *word)
bool applybox_learn_ngrams_mode
bool tessedit_zero_rejection
int scaled_factor() const
BOOL8 terrible_word_crunch(WERD_RES *word, GARBAGE_LEVEL garbage_level)
void ambigs_classify_and_output(WERD_RES *werd_res, ROW_RES *row_res, BLOCK_RES *block_res, const char *label, FILE *output_file)
bool tessedit_word_for_word
bool unlv_tilde_crunching
GARBAGE_LEVEL garbage_word(WERD_RES *word, BOOL8 ok_dict_word)
BOOL8 non_O_upper(const UNICHARSET &ch_set, UNICHAR_ID unichar_id)
void ReportFailedBox(int boxfile_lineno, TBOX box, const char *box_ch, const char *err_msg)
void TidyUp(PAGE_RES *page_res)
bool ResegmentCharBox(PAGE_RES *page_res, const TBOX *prev_box, const TBOX &box, const TBOX &next_box, const char *correct_text)
void cube_combine_word(CubeObject *cube_obj, WERD_RES *cube_word, WERD_RES *tess_word)
bool tessedit_unrej_any_wd
int tessdata_manager_debug_level
bool RetryWithLanguage(WERD_RES *word, BLOCK *block, ROW *row, WordRecognizer recognizer)
const Textord & textord() const
bool init_tesseract_lang_data(const char *arg0, const char *textbase, const char *language, OcrEngineMode oem, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_init_params)
Pix * scaled_color() const
void CorrectClassifyWords(PAGE_RES *page_res)
bool create_cube_box_word(Boxa *char_boxes, int num_chars, TBOX word_box, BoxWord *box_word)
bool tessedit_dont_rowrej_good_wds
void blamer_pass(PAGE_RES *page_res)
bool tessedit_minimal_rejection
bool tessedit_redo_xheight
bool tessedit_preserve_blk_rej_perfect_wds
void match_current_words(WERD_RES_LIST &words, ROW *row, BLOCK *block)
CubeRecoContext * GetCubeRecoContext()
inT16 word_blob_quality(WERD_RES *word, ROW *row)
int ocr_devanagari_split_strategy
double crunch_pot_poor_cert
inT16 first_alphanum_offset(const char *word, const char *word_lengths)
void nn_recover_rejects(WERD_RES *word, ROW *row)
bool tessedit_dump_choices
inT16 alpha_count(const char *word, const char *word_lengths)
BOOL8 word_bln_display(BLOCK *block, ROW *row, WERD_RES *word_res)
void process_selected_words(PAGE_RES *page_res, TBOX &selection_box, BOOL8(tesseract::Tesseract::*word_processor)(BLOCK *block, ROW *row, WERD_RES *word_res))
void unrej_good_chs(WERD_RES *word, ROW *row)
bool tessedit_minimal_rej_pass1
double rej_whole_of_mostly_reject_word_fract
void match_word_pass2(WERD_RES *word, ROW *row, BLOCK *block)
bool tessedit_fix_hyphens
void classify_word_pass2(BLOCK *block, ROW *row, WERD_RES *word)
int source_resolution() const
bool crunch_leave_accept_strings
BOOL8 word_contains_non_1_digit(const char *word, const char *word_lengths)
bool tessedit_adaption_debug
BOOL8 non_0_digit(const UNICHARSET &ch_set, UNICHAR_ID unichar_id)
char * tessedit_write_params_to_file
void ApplyBoxTraining(const STRING &filename, PAGE_RES *page_res)
#define INT_VAR_H(name, val, comment)
void fix_rep_char(PAGE_RES_IT *page_res_it)
BOOL8 repeated_nonalphanum_wd(WERD_RES *word, ROW *row)
int crunch_pot_indicators
bool tessedit_ambigs_training
bool tilde_crunch_written
BOOL8 test_ambig_word(WERD_RES *word)
ColumnFinder * SetupPageSegAndDetectOrientation(bool single_column, bool osd, bool only_osd, BLOCK_LIST *blocks, Tesseract *osd_tess, OSResults *osr, TO_BLOCK_LIST *to_blocks, Pix **photo_mask_pix, Pix **music_mask_pix)
bool FindSegmentation(const GenericVector< UNICHAR_ID > &target_text, WERD_RES *word_res)
bool tessedit_dont_blkrej_good_wds
double min_orientation_margin
void set_pix_grey(Pix *grey_pix)
bool tessedit_debug_block_rejection
double tessedit_reject_row_percent
double crunch_poor_garbage_cert
BOOL8 word_adaptable(WERD_RES *word, uinT16 mode)
char * ok_repeated_ch_non_alphanum_wds
void do_re_display(BOOL8(tesseract::Tesseract::*word_painter)(BLOCK *block, ROW *row, WERD_RES *word_res))
int tessedit_image_border
void SetBlackAndWhitelist()
void SetupWordScripts(BLOCK_LIST *blocks)
void fix_fuzzy_space_list(WERD_RES_LIST &best_perm, ROW *row, BLOCK *block)
void set_word_fonts(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
BOOL8 acceptable_number_string(const char *s, const char *lengths)
void set_done(WERD_RES *word, inT16 pass)
int crunch_leave_uc_strings
double suspect_rating_per_ch
int init_tesseract(const char *datapath, const char *language, OcrEngineMode oem)
bool textord_use_cjk_fp_model
bool tessedit_enable_doc_dict
bool rej_use_tess_accepted
Tesseract * get_sub_lang(int index) const
void tess_add_doc_word(WERD_CHOICE *word_choice)
SVMenuNode * build_menu_new()
int SegmentPage(const STRING *input_file, BLOCK_LIST *blocks, Tesseract *osd_tess, OSResults *osr)
bool tessedit_write_images
void tess_segment_pass2(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
double tessedit_good_doc_still_rowrej_wd
inT16 eval_word_spacing(WERD_RES_LIST &word_res_list)
bool tessedit_use_reject_spaces
double fixsp_small_outlines_size
void recog_word_recursive(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
void recog_word(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
Assume a single uniform block of text. (Default.)
bool tessedit_fix_fuzzy_spaces
void split_and_recog_word(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
void tess_segment_pass1(WERD_RES *word, BLOB_CHOICE_LIST_CLIST *blob_choices)
void pgeditor_main(int width, int height, PAGE_RES *page_res)
ACCEPTABLE_WERD_TYPE acceptable_word_string(const UNICHARSET &char_set, const char *s, const char *lengths)
double crunch_pot_poor_rate
bool rej_alphas_in_number_perm
void debug_word(PAGE_RES *page_res, const TBOX &selection_box)
void word_char_quality(WERD_RES *word, ROW *row, inT16 *match_count, inT16 *accepted_match_count)
bool tessedit_write_rep_codes
int crunch_leave_lc_strings
double suspect_accept_rating
void ReportXhtFixResult(bool accept_new_word, float new_x_ht, WERD_RES *word, WERD_RES *new_word)
bool tessedit_zero_kelvin_rejection