3

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

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

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

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

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

4

3 回答 3

0

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

于 2013-02-27T15:01:43.603 回答
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);
于 2014-04-02T07:56:56.617 回答
0

我在android(tess-two)中有类似的问题。可以使用例如这个在线工具将 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");
于 2015-07-26T12:21:53.257 回答