まず、選択イテレータの権利を理解していることを確認したいと思います。
たとえば、画像に「スコープ」という単語がある場合、
選択イテレータは、「s」のようなものを提供する必要があり、おそらく Next() の後に「5」を提供する必要があります。
3.文字「o」の場合、「0」、Next()の後「O」、およびNext()「o」の後に返される可能性があります。
私は正しく理解していますか?
これが私の関連するすべてのコードです。
api.SetImage((uchar*)img->imageData,img->width,img->height,img->depth/8,img->widthStep);
api.SetRectangle(0,0,img->width, img->height);
int left,top,right,bottom;
left=0;top=0;right=0;bottom=0;
api.Recognize(NULL);
tesseract::ResultIterator *ri=api.GetIterator();
tesseract::ChoiceIterator *choiceItr;
const tesseract::ResultIterator itr = *ri;
choiceItr = new tesseract::ChoiceIterator(itr);
const char * out=choiceItr->GetUTF8Text();
char * out2=(*ri).GetUTF8Text(tesseract::RIL_SYMBOL);
printf("out:%s,out2:%s",out,out2);
コンソールの出力は次のとおりです。
out:(ヌル),out2:P
p は結果反復子の結果であると予想されますが、選択反復子の出力は null です。
アイデアをありがとう。
おおよそ解決:
// This ensures Tesseract's "blob_choices" structures are filled
SetVariable("save_best_choices", "T");