chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.db-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
allow nonexistent charset db
[ypp-sc-tools.db-test.git]
/
pctb
/
ocr.c
diff --git
a/pctb/ocr.c
b/pctb/ocr.c
index 04aecc0d48a0431642d73c85f8b65144fa74b491..bb9576769e10a1d633ed6ebb7786d75e3bfcf585 100644
(file)
--- a/
pctb/ocr.c
+++ b/
pctb/ocr.c
@@
-24,6
+24,8
@@
static const char *context_names[]= {
#define NCONTEXTS (sizeof(context_names)/sizeof(context_names[0]))
#define NCONTEXTS (sizeof(context_names)/sizeof(context_names[0]))
+#define SPACE_SPACES 3
+
struct OcrReader {
int h;
DatabaseNode contexts[NCONTEXTS];
struct OcrReader {
int h;
DatabaseNode contexts[NCONTEXTS];
@@
-61,12
+63,19
@@
static void readdb(OcrReader *rd) {
char lbuf[100];
FILE *db;
char lbuf[100];
FILE *db;
+ for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
+ cleardb_node(&rd->contexts[ctxi]);
+
char *dbfname=0;
asprintf(&dbfname,"%s/charset-%d.txt",get_vardir(),rd->h);
eassert(dbfname);
char *dbfname=0;
asprintf(&dbfname,"%s/charset-%d.txt",get_vardir(),rd->h);
eassert(dbfname);
- db= fopen(dbfname,"r");
eassert(db);
+ db= fopen(dbfname,"r");
free(dbfname);
free(dbfname);
+ if (!db) {
+ eassert(errno==ENOENT);
+ return;
+ }
FGETSLINE(db,lbuf);
eassert(!strcmp(lbuf,"# ypp-sc-tools pctb font v1"));
FGETSLINE(db,lbuf);
eassert(!strcmp(lbuf,"# ypp-sc-tools pctb font v1"));
@@
-75,9
+84,6
@@
static void readdb(OcrReader *rd) {
eassert(r==1);
eassert(h==rd->h);
eassert(r==1);
eassert(h==rd->h);
- for (ctxi=0; ctxi<NCONTEXTS; ctxi++)
- cleardb_node(&rd->contexts[ctxi]);
-
for (;;) {
FGETSLINE(db,lbuf);
if (!lbuf || lbuf[0]=='#') continue;
for (;;) {
FGETSLINE(db,lbuf);
if (!lbuf || lbuf[0]=='#') continue;
@@
-305,13
+311,16
@@
OcrResultGlyph *ocr(OcrReader *rd, OcrCellType ct, int w, Pixcol cols[]) {
if (!cols[x]) {
nspaces++;
x++;
if (!cols[x]) {
nspaces++;
x++;
- if (nspaces==
3
) {
+ if (nspaces==
SPACE_SPACES
) {
fprintf(debug,"OCR x=%x nspaces=%d space\n",x,nspaces);
fprintf(debug,"OCR x=%x nspaces=%d space\n",x,nspaces);
- add_result(rd," ",x-nspaces,x+1,0);
ctxmap= ct->nextword;
}
continue;
}
ctxmap= ct->nextword;
}
continue;
}
+
+ /* something here, so we need to add the spaces */
+ if (nspaces>=SPACE_SPACES)
+ add_result(rd," ",x-nspaces,x+1,0);
nspaces=0;
/* find character */
nspaces=0;
/* find character */