2014-05-02 36 views
0

我正在研究一些OCR实验,我想提高Tesseract输出的质量。基本上,测试主题是CAPTCHA,混淆图像上的随机字符等。现在Tesseract并没有做得很好。部分原因是它有时会将某些字符分别标识为几个字符/数字。我可以配置Tesseract从指定长度的图像中识别文本吗?

我想知道是否告诉Tesseract,我的具体图像应该总是包含长度的文本,如6,可以提高OCR识别结果。但我不确定这是否在Tesseract中得到支持。

我没有找到关于这一点的文件。有人可以帮助指出这种功能是否存在,如果有,可以设置什么配置参数。谢谢!

回答

1

试试这个例子来指定文本的长度。请在for循环中设置值,您需要识别文本的长度。

考虑下面的代码:

Pix *image = pixRead("/usr/src/tesseract-3.02/phototest.tif"); 
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); 
api->Init(NULL, "eng"); 
api->SetImage(image); 
Boxa* boxes = api->GetComponentImages(tesseract::RIL_TEXTLINE, true, NULL, NULL); 
printf("Found %d textline image components.\n", boxes->n); 
for (int i = 0; i < boxes->n; i++) { 
    BOX* box = boxaGetBox(boxes, i, L_CLONE); 
    api->SetRectangle(box->x, box->y, box->w, box->h); 
    char* ocrResult = api->GetUTF8Text(); 
    int conf = api->MeanTextConf(); 
    fprintf(stdout, "Box[%d]: x=%d, y=%d, w=%d, h=%d, confidence: %d, text: %s", 
        i, box->x, box->y, box->w, box->h, conf, ocrResult); 
} 

for (int i = 0; i < boxes->n; i++),如果你要的20

指定长度由20取代 boxes->n
相关问题