【发布时间】:2018-10-15 19:13:34
【问题描述】:
我正在尝试使用 Tesseract 进行单字符识别,结果很糟糕。 “h”被识别为“n”,“4”被识别为“/i”,“O”被识别为“()”;
单字符模式好像没有作用,很多字符都被识别为两个字符, 不只是一个。我的图像是简单的双层黑白 TIFF 图像, 拉丁字符。这是位图字体,不是扫描的图像,它们绝对干净且 不需要改进。 Оnly 大约一半的字符被正确识别,这似乎是 对于这样一个简单的任务,百分比非常低。
我使用的 Tesseract 库版本是“4.0.0-beta.3”。 这就是我所说的 Tesseract。
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;
}
我是 Tesseract 的新手,所以我可能遗漏了一些东西。我必须以某种方式训练吗 图书馆第一?可能我应该设置另一个 OcrEngineMode 吗?我预计没有 简单的位图字体识别问题,现在我很迷茫。 非常感谢您, 尤利安娜
【问题讨论】: