| /********************************************************************** |
| * File: applybox.h (Formerly applybox.h) |
| * Description: Re segment rows according to box file data |
| * Author: Phil Cheatle |
| * Created: Wed Nov 24 09:11:23 GMT 1993 |
| * |
| * (C) Copyright 1993, Hewlett-Packard Ltd. |
| ** Licensed under the Apache License, Version 2.0 (the "License"); |
| ** you may not use this file except in compliance with the License. |
| ** You may obtain a copy of the License at |
| ** http://www.apache.org/licenses/LICENSE-2.0 |
| ** Unless required by applicable law or agreed to in writing, software |
| ** distributed under the License is distributed on an "AS IS" BASIS, |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ** See the License for the specific language governing permissions and |
| ** limitations under the License. |
| * |
| **********************************************************************/ |
| |
| #ifndef APPLYBOX_H |
| #define APPLYBOX_H |
| |
| #include "varable.h" |
| #include "ocrblock.h" |
| #include "ocrrow.h" |
| #include "notdll.h" |
| #include "unichar.h" |
| |
| extern BOOL_VAR_H (applybox_rebalance, TRUE, "Drop dead"); |
| extern INT_VAR_H (applybox_debug, 0, "Debug level"); |
| extern STRING_VAR_H (applybox_test_exclusions, "|", |
| "Chars ignored for testing"); |
| extern double_VAR_H (applybox_error_band, 0.15, "Err band as fract of xht"); |
| extern STRING_VAR_H(exposure_pattern, "exp", |
| "Exposure value follows this pattern in the image" |
| " filename. The name of the image files are expected" |
| " to be in the form [lang].[fontname].exp[num].tif"); |
| |
| static const int kMinFragmentOutlineArea = 10; |
| |
| // Register uch with unicharset_boxes. |
| UNICHAR_ID register_char(const char *uch); |
| |
| void apply_boxes(const STRING& filename, |
| BLOCK_LIST *block_list //real blocks |
| ); |
| |
| void clear_any_old_text( //remove correct text |
| BLOCK_LIST *block_list //real blocks |
| ); |
| |
| BOOL8 read_next_box(int page, |
| FILE* box_file, |
| TBOX *box, |
| UNICHAR_ID *uch_id); |
| |
| ROW *find_row_of_box( |
| BLOCK_LIST *block_list, //real blocks |
| TBOX box, //from boxfile |
| inT16 &block_id, |
| inT16 &row_id_to_process); |
| |
| inT16 resegment_box( |
| ROW *row, |
| TBOX box, |
| UNICHAR_ID uch_id, |
| inT16 block_id, |
| inT16 row_id, |
| inT16 boxfile_lineno, |
| inT16 boxfile_charno, |
| inT16 *tgt_char_counts, |
| bool learn_char_fragments); |
| |
| void tidy_up( |
| BLOCK_LIST *block_list, //real blocks |
| inT16 &ok_char_count, |
| inT16 &ok_row_count, |
| inT16 &unlabelled_words, |
| inT16 *tgt_char_counts, |
| inT16 &rebalance_count, |
| UNICHAR_ID *min_uch_id, |
| inT16 &min_samples, |
| inT16 &final_labelled_blob_count, |
| bool learn_character_fragments); |
| |
| void report_failed_box(inT16 boxfile_lineno, |
| inT16 boxfile_charno, |
| TBOX box, |
| const char *box_ch, |
| const char *err_msg); |
| |
| void apply_box_training(const STRING& filename, BLOCK_LIST *block_list); |
| #endif |