基于Tesseract 3.01的逐字置信度值

7
我执行了以下代码来生成逐字符置信度值:
int main(int argc, char **argv) {

    const char *lang="eng";
    const PIX   *pixs;
     if ((pixs = pixRead(argv[1])) == NULL) {
       cout <<"Unsupported image type"<<endl;
        exit(3);
      }
    TessBaseAPI  api;
    api.SetVariable("save_blob_choices", "T");
    api.SetPageSegMode(tesseract::PSM_SINGLE_WORD  );        
    api.SetImage(pixs);
    int rc = api.Init(argv[0], lang);
    api.Recognize(NULL);
    ResultIterator* ri = api.GetIterator();
    if(ri != 0)
    {
        do
        {
            const char* symbol = ri->GetUTF8Text(RIL_SYMBOL);
            if(symbol != 0)
            {
                float conf = ri->Confidence(RIL_SYMBOL);
                cout<<"\nnext symbol: "<< symbol << " confidence: " << conf <<"\n" <<endl;

             }


            delete[] symbol;
                }    while((ri->Next(RIL_SYMBOL)));
    }
    return 0;
}

链接到图片

上述图片的输出结果为:

下一个符号:N 置信度:72.3563 下一个符号:B 置信度:72.3563 下一个符号:E 置信度:69.9937 下一个符号:T 置信度:69.9937 下一个符号:R 置信度:69.9937 下一个符号:A 置信度:69.9937 下一个符号:N 置信度:69.9937 下一个符号:G 置信度:69.9937 下一个符号:- 置信度:69.9937 下一个符号:I 置信度:69.9937
显然,属于同一单词的字符置信度值相同。这是预期的输出吗?难道不应该每个字符的置信度值都不同吗? 我尝试对一个每个字符都使用不同字体样式的单词执行代码,但同一单词中的字符的置信度值仍然相同。
1个回答

2
问题在于你在 SetVariable 调用之后才调用 Init。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接