Tesseract不识别俄语。

4
我正在使用tesseract-ocr库编写Qt应用程序。在测试tesseract时,我发现它只能识别使用'eng'参数初始化的文本。如果我指定'rus'参数,则GetUTF8Text()返回类似于以下内容:ТÐ<9d>Ð<86>Ð<85> Ð<86>Ð<85> мама *.traineddata文件位于/usr/local/share/tessdata目录中。该目录还包含rus.traineddata文件。
问题出在哪里?

也许你的系统不支持西里尔字母? - karlphillip
我使用Debian Wheezy,它支持西里尔字母。但在测试Tesseract时,我遇到了另一个问题http://code.google.com/p/tesseract-ocr/issues/detail?id=228。通过设置语言环境setlocale(LC_NUMERIC, "C");解决了这个问题。也许这个语句引起了问题? - DenisM
这很可能是问题的原因。你需要进行更多的谷歌搜索,以发现如何正确设置你的系统。你的问题似乎与Tesseract、Qt或C++无关。 - karlphillip
我已经安装了Debian软件包libtesseract3和tesseract-ocr-rus。这个控制台OCR工具在使用“-l rus”参数时可以正常工作。它可以识别我的测试图像,而不需要特殊的语言环境设置。因此,在从C++代码调用Tesseract API时出现了问题,对吗? - DenisM
很有可能与字符串编码有关,从tesseract接收数据到决定在屏幕上打印它们的那一刻。 - karlphillip
1
在苏联,俄罗斯不承认Tesseract! - Wes
1个回答

3

我找到了解决方案!它与由GetUTF8Text函数返回的编码文本有关。

char* recognizedText = tessApi.GetUTF8Text(); // recognizes text with tesseract
QTextCodec* codec = QTextCodec::codecForName("UTF-8"); // creates UTF-8 codec
QString decodedText = codec->toUnicode(recognizedText); // Converts to UNICODE

它可以正常工作!


1
如果使用Visual Studio而不是QT呢? - Nika_Rika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接