Тессеракт — получение альтернативных результатов с уровнем уверенности

Я пытаюсь использовать тессеракт для распознавания чисел. Это работает довольно хорошо, но иногда я получаю неправильные результаты (8 вместо 9 и т. Д.). Я знаю, как повысить точность с помощью некоторых не-ocr методов, но мне нужны другие результаты с уровнями достоверности. Я обнаружил, что я получаю лучший выбор, используя ChoiceIterator для каждого ResultIterator:

    tesseract::TessBaseAPI tess;
tess.SetPageSegMode(tesseract::PSM_SINGLE_CHAR);
tess.SetVariable("save_best_choices", "T");

[setting input image here]

tess.Recognize(NULL);
tesseract::ResultIterator* ri = tess.GetIterator();
tesseract::ChoiceIterator* ci;
if(ri != 0)
{
char* symbol = ri->GetUTF8Text(tesseract::RIL_SYMBOL);

if(symbol != 0)
{
float conf = ri->Confidence(tesseract::RIL_SYMBOL);
cout << symbol << "\tconf: " << conf << "\n";

const tesseract::ResultIterator itr = *ri;
ci = new tesseract::ChoiceIterator(itr);
do {
const char* choice = ci->GetUTF8Text();
if (choice) {
std::cout << "\t" << choice << " conf: " << ci->Confidence() << "\n";
}
} while(ci->Next());

//  delete[] symbol;
}
}

Но проблема в том, что ci-> GetUTF8Text () всегда возвращает нулевой указатель.

Я использую tesseract 3.02 в качестве DLL, скомпилированной под MSVC2010 express.

2

Решение

Из ограниченного исследования, проведенного ранее сегодня, я думаю, что ответ может быть установка переменной SaveBlobChoices против SaveBestChoices, Я все еще должен проверить это сам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector