{
SplitStrategy split_strategy = split_for_pageseg ? pageseg_split_strategy_ :
ocr_split_strategy_;
return false;
}
tprintf(
"Splitting shiro-rekha ...\n");
tprintf(
"Initial pageseg available = %s\n",
segmentation_block_list_ ? "yes" : "no");
}
pixDestroy(&splitted_image_);
splitted_image_ = pixCopy(
NULL, orig_pix_);
pixDestroy(&debug_image_);
debug_image_ = pixConvertTo32(orig_pix_);
}
Pix* pix_for_ccs = pixClone(orig_pix_);
!segmentation_block_list_) {
tprintf(
"Performing a global close operation..\n");
}
pixDestroy(&pix_for_ccs);
pix_for_ccs = pixCopy(
NULL, orig_pix_);
PerformClose(pix_for_ccs, global_xheight_);
}
Pixa* ccs;
Boxa* tmp_boxa = pixConnComp(pix_for_ccs, &ccs, 8);
boxaDestroy(&tmp_boxa);
pixDestroy(&pix_for_ccs);
Boxa* regions_to_clear = boxaCreate(0);
for (int i = 0; i < pixaGetCount(ccs); ++i) {
Box* box = ccs->boxa->box[i];
Pix* word_pix = pixClipRectangle(orig_pix_, box,
NULL);
int xheight = GetXheightForCC(box);
pixRenderBoxArb(debug_image_, box, 1, 255, 0, 0);
}
(box->w > xheight / 3 && box->h > xheight / 2)) {
SplitWordShiroRekha(split_strategy, word_pix, xheight,
box->x, box->y, regions_to_clear);
tprintf(
"CC dropped from splitting: %d,%d (%d, %d)\n",
box->x, box->y, box->w, box->h);
}
pixDestroy(&word_pix);
}
for (int i = 0; i < boxaGetCount(regions_to_clear); ++i) {
Box* box = boxaGetBox(regions_to_clear, i, L_CLONE);
pixClearInRect(splitted_image_, box);
boxDestroy(&box);
}
boxaDestroy(®ions_to_clear);
pixaDestroy(&ccs);
"ocr_split_debug.png");
}
return true;
}