2012-06-19 5 views
7

i wykonany następujący kod do generowania znaków mądry wartości ufności:charakter mądry wartości ufności wykorzystujące tesseract 3,01

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; 
} 

link to image

wyjście uzyskane na powyższy obrazek, było:

następny symbol: N pewność: 72,3563 następny symbol: B zaufanie: 72,3563

następny ufności E: symbol: 69,9937 następnego symbolu: pewność T: 69,9937
następnego symbolu R ufności: 69,9937 następnego symbolu: a ufności: 69,9937
następnym symbolem N ufności: 69,9937 następnego symbolu: pewność G: 69,9937
następnego symbolu: - zaufanie: 69,9937 następny symbol: ufam: 69,9937

Jak widać, wartości ufności dla znaków należących do tego samego słowa są takie same. Czy to oczekiwane wyjście? Czy wartości ufności nie powinny być różne dla każdej postaci? Próbowałem wykonać kod dla słowa, w którym każdy znak był w innym stylu czcionki ... a jednak wartość zaufania była taka sama dla znaków należących do tego samego słowa.

Odpowiedz

2

Problem polega na tym, że wywoływana jest funkcja Init po wywołaniu SetVariable.