20 #ifndef TESSERACT_TEXTORD_TABFIND_H__
21 #define TESSERACT_TEXTORD_TABFIND_H__
29 "Force using vertical text page mode");
31 "find horizontal lines such as headers in vertical page mode");
33 "Fraction of textlines deemed vertical to use vertical page mode");
35 "Fraction of height used as a minimum gap for aligned blobs.");
65 TabVector_LIST* vlines,
int vertical_x,
int vertical_y,
104 bool ignore_unmergeables,
int max_gutter_width,
105 int* required_shift);
110 int max_gutter,
bool left,
175 return image_origin_;
186 return &dead_vectors_;
195 BLOBNBOX_LIST* image_blobs,
TO_BLOCK* block,
196 int min_gutter_width,
224 int min_gutter_width,
TO_BLOCK* block);
234 TabVector_LIST* horizontal_lines,
235 int* min_gutter_width);
248 ScrollView* FindTabBoxes(
int min_gutter_width);
252 bool TestBoxForTabs(
BLOBNBOX* bbox,
int min_gutter_width);
256 bool ConfirmRaggedLeft(
BLOBNBOX* bbox,
int min_gutter);
259 bool ConfirmRaggedRight(
BLOBNBOX* bbox,
int min_gutter);
262 bool NothingYOverlapsInBox(
const TBOX& search_box,
const TBOX& target_box);
266 void FindAllTabVectors(
int min_gutter_width);
270 int min_gutter_width,
272 int* vertical_x,
int* vertical_y);
280 TabVector* FindTabVector(
int search_size_multiple,
int min_gutter_width,
283 int* vertical_x,
int* vertical_y);
287 void SetVerticalSkewAndParellelize(
int vertical_x,
int vertical_y);
308 void MakeColumnWidths(
int col_widths_size,
STATS* col_widths);
311 void MarkVerticalText();
316 int FindMedianGutterWidth(TabVector_LIST* tab_vectors);
324 bool look_left,
bool ignore_images,
325 double min_overlap_fraction,
326 int gap_limit,
int top_y,
int bottom_y);
346 bool Deskew(TabVector_LIST* hlines, BLOBNBOX_LIST* image_blobs,
350 void ComputeDeskewVectors(
FCOORD* deskew,
FCOORD* reskew);
356 void ApplyTabConstraints();
363 TabVector_LIST vectors_;
365 TabVector_LIST dead_vectors_;
366 ICOORDELT_LIST column_widths_;
376 #endif // TESSERACT_TEXTORD_TABFIND_H__