chiark / gitweb /
wip. before remove sigstop based thing which is mad
[ypp-sc-tools.db-test.git] / pctb / ocr.c
index 87bf80842a510280e30826d8fe36c877911b59e8..43636f2d1c18861d77d890e8f49c2373a1bff627 100644 (file)
@@ -88,7 +88,8 @@ static void ocr_readdb(void) {
   eassert(feof(db));
 }      
 
-static void callout_unknown(int w, int h, Pixcol cols[], int unk_l, int unk_r,
+static void callout_unknown(int w, int h, Pixcol cols[],
+                           int unk_l, int unk_r, int unk_ctx,
                            const OcrResultGlyph *sofar, int nsofar) {
   int pfd[2], c, r,i, x,y;
   const OcrResultGlyph *s;
@@ -108,7 +109,7 @@ static void callout_unknown(int w, int h, Pixcol cols[], int unk_l, int unk_r,
     r= close(pfd[0]); eassert(!r);
     resolver= fdopen(pfd[1],"w"); eassert(resolver);
   }
-  fprintf(resolver,"%d %d",unk_l,unk_r);
+  fprintf(resolver,"%d %d %d",unk_l,unk_r,unk_ctx);
   for (i=0, s=sofar; i<nsofar; i++, s++) {
     fprintf(resolver," %d %d %d ",s->l,s->r,s->ctx);
     for (p=s->s; (c= *p); p++) {
@@ -245,10 +246,10 @@ OcrResultGlyph *ocr(int w, int h, Pixcol cols[]) {
     } else {
       int rx;
       fprintf(debug," UNKNOWN");
-      for (rx=lx+1; rx<w && cols[rx]; rx++);
+      for (rx=lx; rx<w && cols[rx]; rx++);
       fprintf(debug," x=%d ctx=%d %d..%d\n",x, ctx, lx,rx);
       debug_flush();
-      callout_unknown(w,h,cols, lx,rx, results,nresults);
+      callout_unknown(w,h,cols, lx,rx-1,ctx, results,nresults);
       goto restart;
     }
   }