Tesseract setVariable白名单用于另一种语言

时间:2013-02-19 10:20:32

标签: c++ ocr tesseract

Tesseract setVariable白名单适用于英语,例如我用它来识别图像中的数字和字母(不包括特殊字符& * ^%!等)

myOCR->SetVariable("tessedit_char_whitelist",
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");

但我不能对俄语做同样的事情

myOCR->SetVariable("tessedit_char_whitelist", "0123456789абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМОПРСТУФХЦЧШЩЭЮЯ");

有不同的原则吗?因为这是行不通的。而不是所有确定的字符我只收到输出中的数字,tesseract忽略我放入白名单的所有俄语字母。黑名单也没有用。有什么方法可以摆脱它吗?感谢。

3 个答案:

答案 0 :(得分:0)

所以答案是在白名单中使用这个符号unicode代码,不知道该怎么做呢

答案 1 :(得分:0)

C#

var fromEncodind = System.Text.Encoding.UTF8;
var bytes = fromEncodind.GetBytes(ans);
var toEncoding = System.Text.Encoding.GetEncoding(1251);
ans = toEncoding.GetString(bytes);
engine.SetVariable("tessedit_char_whitelist", ans);

答案 2 :(得分:0)

我在android(tess-two)中遇到过类似的问题。它可以简单地使用例如这个在线tool将UTF8转换为java实体。例如你的一组字符:

tess.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "0123456789\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042D\u042E\u042F");
相关问题