Я пытаюсь использовать Tesseract для распознавания одного символа, и результаты ужасны.«h» распознается как «n», «4» как «/ i», «O» как «()»;
Режим одного символа, кажется, не работает, так как многие символы распознаются как два символа, а не как один.Мои изображения - простые двухуровневые черно-белые изображения TIFF, латинские буквы.Это растровый шрифт, а не отсканированные изображения, они абсолютно чистые и не нуждаются в улучшении.Правильно распознается только около половины символов, что представляется очень низким процентом для такой простой задачи.
Используемая мной версия библиотеки Тессеракта - «4.0.0-бета.3».Вот как я называю Тессеракт.
int CharRecognizer::recognizeTIFFData(char* data, int datalength){
char *outText;
TessBaseAPI* api = new TessBaseAPI();
if (api->Init(NULL, "eng")) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
api->SetPageSegMode(tesseract::PSM_SINGLE_CHAR);
Pix *image = pixReadMem(data,datalength);
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("\nOCR output:\n%s", outText);
// Destroy used object and release memory
int utf8 = outText[0];
api->End();
delete[] outText;
pixDestroy(&image);
return utf8;
}
Я новичок в Тессеракте, поэтому, возможно, я что-то упустил.Должен ли я сначала как-то тренировать библиотеку?Может быть, я должен установить другой OcrEngineMode?Я не ожидал никаких проблем с простым распознаванием растровых шрифтов, и теперь я совершенно потерян.Большое спасибо заранее, Юлиана