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__
ScrollView * FindInitialTabVectors(BLOBNBOX_LIST *image_blobs, int min_gutter_width, TO_BLOCK *block)
bool CommonWidth(int width)
double textord_tabfind_vertical_text_ratio
void SetBlobRuleEdges(BLOBNBOX_LIST *blobs)
WidthCallback * WidthCB()
#define BOOL_VAR_H(name, val, comment)
bool FindTabVectors(TabVector_LIST *hlines, BLOBNBOX_LIST *image_blobs, TO_BLOCK *block, int min_gutter_width, ColPartitionGrid *part_grid, FCOORD *deskew, FCOORD *reskew)
void SetBlockRuleEdges(TO_BLOCK *block)
static bool DifferentSizes(int size1, int size2)
void SetupTabSearch(int x, int y, int *min_key, int *max_key)
TabVector_LIST * vectors()
void DontFindTabVectors(BLOBNBOX_LIST *image_blobs, TO_BLOCK *block, FCOORD *deskew, FCOORD *reskew)
TabVector * RightTabForBox(const TBOX &box, bool crossing, bool extended)
bool textord_tabfind_force_vertical_text
int GutterWidth(int bottom_y, int top_y, const TabVector &v, bool ignore_unmergeables, int max_gutter_width, int *required_shift)
#define double_VAR_H(name, val, comment)
void ResetForVerticalText(const FCOORD &rotate, const FCOORD &rerotate, TabVector_LIST *horizontal_lines, int *min_gutter_width)
TabVector_LIST * dead_vectors()
void InsertBlobsToGrid(bool h_spread, bool v_spread, BLOBNBOX_LIST *blobs, BBGrid< BLOBNBOX, BLOBNBOX_CLIST, BLOBNBOX_C_IT > *grid)
const ICOORD & tright() const
double textord_tabfind_aligned_gap_fraction
static void RotateBlobList(const FCOORD &rotation, BLOBNBOX_LIST *blobs)
bool InsertBlob(bool h_spread, bool v_spread, BLOBNBOX *blob, BBGrid< BLOBNBOX, BLOBNBOX_CLIST, BLOBNBOX_C_IT > *grid)
int RightEdgeForBox(const TBOX &box, bool crossing, bool extended)
int LeftEdgeForBox(const TBOX &box, bool crossing, bool extended)
ScrollView * DisplayTabVectors(ScrollView *tab_win)
void GutterWidthAndNeighbourGap(int tab_x, int mean_height, int max_gutter, bool left, BLOBNBOX *bbox, int *gutter_width, int *neighbour_gap)
const ICOORD & image_origin() const
TabVector * LeftTabForBox(const TBOX &box, bool crossing, bool extended)
void TidyBlobs(TO_BLOCK *block)
const ICOORD & bleft() const
TessResultCallback1< bool, int > WidthCallback
static bool VeryDifferentSizes(int size1, int size2)
const int kColumnWidthFactor
bool textord_tabfind_vertical_horizontal_mix
TabFind(int gridsize, const ICOORD &bleft, const ICOORD &tright, TabVector_LIST *vlines, int vertical_x, int vertical_y, int resolution)