82 SplitStrategy split_strategy = split_for_pageseg ? pageseg_split_strategy_ :
91 tprintf(
"Splitting shiro-rekha ...\n");
92 tprintf(
"Split strategy = %s\n",
94 tprintf(
"Initial pageseg available = %s\n",
95 segmentation_block_list_ ?
"yes" :
"no");
98 pixDestroy(&splitted_image_);
99 splitted_image_ = pixCopy(
NULL, orig_pix_);
103 pixDestroy(&debug_image_);
104 debug_image_ = pixConvertTo32(orig_pix_);
109 Pix* pix_for_ccs = pixClone(orig_pix_);
111 !segmentation_block_list_) {
113 tprintf(
"Performing a global close operation..\n");
117 pixDestroy(&pix_for_ccs);
118 pix_for_ccs = pixCopy(
NULL, orig_pix_);
119 PerformClose(pix_for_ccs, global_xheight_);
122 Boxa* tmp_boxa = pixConnComp(pix_for_ccs, &ccs, 8);
123 boxaDestroy(&tmp_boxa);
124 pixDestroy(&pix_for_ccs);
129 Boxa* regions_to_clear = boxaCreate(0);
130 for (
int i = 0; i < pixaGetCount(ccs); ++i) {
131 Box* box = ccs->boxa->box[i];
132 Pix* word_pix = pixClipRectangle(orig_pix_, box,
NULL);
134 int xheight = GetXheightForCC(box);
137 pixRenderBoxArb(debug_image_, box, 1, 255, 0, 0);
144 (box->w > xheight / 3 && box->h > xheight / 2)) {
145 SplitWordShiroRekha(split_strategy, word_pix, xheight,
146 box->x, box->y, regions_to_clear);
148 tprintf(
"CC dropped from splitting: %d,%d (%d, %d)\n",
149 box->x, box->y, box->w, box->h);
151 pixDestroy(&word_pix);
154 for (
int i = 0; i < boxaGetCount(regions_to_clear); ++i) {
155 Box* box = boxaGetBox(regions_to_clear, i, L_CLONE);
156 pixClearInRect(splitted_image_, box);
159 boxaDestroy(®ions_to_clear);
163 "ocr_split_debug.png");
int devanagari_split_debuglevel
bool devanagari_split_debugimage
DLLSYM void tprintf(const char *format,...)
void DumpDebugImage(const char *filename) const
static const int kUnspecifiedXheight