20 #ifndef TESSERACT_TEXTORD_COLFIND_H_ 21 #define TESSERACT_TEXTORD_COLFIND_H_ 43 class ColPartitionSet;
44 class ColPartitionSet_LIST;
45 class ColSegment_LIST;
46 class ColumnGroup_LIST;
49 class TempColumn_LIST;
50 class EquationDetectBase;
65 int resolution,
bool cjk_script,
double aligned_gap_fraction,
66 TabVector_LIST* vlines, TabVector_LIST* hlines,
67 int vertical_x,
int vertical_y);
126 TO_BLOCK* block, BLOBNBOX_CLIST* osd_blobs);
140 int recognition_rotation);
166 TO_BLOCK* block, Pix* photo_mask_pix, Pix* thresholds_pix,
167 Pix* grey_pix,
DebugPixa* pixa_debug, BLOCK_LIST* blocks,
168 BLOBNBOX_LIST* diacritic_blobs, TO_BLOCK_LIST* to_blocks);
178 void DisplayBlocks(BLOCK_LIST* blocks);
187 bool MakeColumns(
bool single_column);
195 void PrintColumnCandidates(
const char* title);
202 bool BiggestUnassignedRange(
int set_count,
const bool* any_columns_possible,
203 int* start,
int* end);
205 int RangeModalColumnSet(
int** column_set_costs,
const int* assigned_costs,
211 void ShrinkRangeToLongestRun(
int** column_set_costs,
212 const int* assigned_costs,
213 const bool* any_columns_possible,
215 int* best_start,
int* best_end);
219 void ExtendRangePastSmallGaps(
int** column_set_costs,
220 const int* assigned_costs,
221 const bool* any_columns_possible,
223 int step,
int end,
int* start);
225 void AssignColumnToRange(
int column_set_id,
int start,
int end,
226 int** column_set_costs,
int* assigned_costs);
229 void ComputeMeanColumnGap(
bool any_multi_column);
237 void ReleaseBlobsAndCleanupUnused(
TO_BLOCK* block);
239 void GridSplitPartitions();
242 void GridMergePartitions();
245 void InsertRemainingNoise(
TO_BLOCK* block);
248 void GridRemoveUnderlinePartitions();
250 void GridInsertHLinePartitions();
252 void GridInsertVLinePartitions();
255 void SetPartitionTypes();
258 void SmoothPartnerRuns();
264 void AddToTempPartList(
ColPartition* part, ColPartition_CLIST* temp_list);
266 void EmptyTempPartList(ColPartition_CLIST* temp_list,
267 WorkingPartSet_LIST* work_set);
270 void TransformToBlocks(BLOCK_LIST* blocks, TO_BLOCK_LIST* to_blocks);
278 void ReflectForRtl(
TO_BLOCK* input_block, BLOBNBOX_LIST* bblobs);
292 void RotateAndReskewBlocks(
bool input_is_rtl, TO_BLOCK_LIST* to_blocks);
299 FCOORD ComputeBlockAndClassifyRotation(
BLOCK* block);
307 int min_gutter_width_;
309 int mean_column_gap_;
312 double tabfind_aligned_gap_fraction_;
336 ColPartition_LIST good_parts_;
339 ColPartition_LIST big_parts_;
341 ColPartition_LIST noise_parts_;
343 BLOBNBOX_LIST image_bblobs_;
345 TabVector_LIST horizontal_lines_;
369 #endif // TESSERACT_TEXTORD_COLFIND_H_ bool textord_tabfind_find_tables
ColumnFinder(int gridsize, const ICOORD &bleft, const ICOORD &tright, int resolution, bool cjk_script, double aligned_gap_fraction, TabVector_LIST *vlines, TabVector_LIST *hlines, int vertical_x, int vertical_y)
int FindBlocks(PageSegMode pageseg_mode, Pix *scaled_color, int scaled_factor, TO_BLOCK *block, Pix *photo_mask_pix, Pix *thresholds_pix, Pix *grey_pix, DebugPixa *pixa_debug, BLOCK_LIST *blocks, BLOBNBOX_LIST *diacritic_blobs, TO_BLOCK_LIST *to_blocks)
#define BOOL_VAR_H(name, val, comment)
const ICOORD & bleft() const
void CorrectOrientation(TO_BLOCK *block, bool vertical_text_lines, int recognition_rotation)
void set_cjk_script(bool is_cjk)
bool IsVerticallyAlignedText(double find_vertical_text_ratio, TO_BLOCK *block, BLOBNBOX_CLIST *osd_blobs)
const DENORM * denorm() const
void SetEquationDetect(EquationDetectBase *detect)
void SetupAndFilterNoise(PageSegMode pageseg_mode, Pix *photo_mask_pix, TO_BLOCK *input_block)
const TextlineProjection * projection() const
void GetDeskewVectors(FCOORD *deskew, FCOORD *reskew)
const ICOORD & tright() const