0
我一直在使用tesseract(tess-two更精确)在Android中制作应用程序来识别某些非常规符号。目的是识别符号并重定向到所述符号的描述。如何强制tesseract识别单个字符,而不是忽略它?
这些符号几乎可以完美识别,无论它们是独自在图像中还是彼此相邻......除了两个(下面的)。
symbols omitted from recognition
这两个符号不能被识别独处的时候,但如果他们旁边的其他任何符号它们被正确识别。
例如:
不承认 _
正确识别
_ b
_ý_
问题是,它们不是不匹配和其他的符号,但相反,他们完全被忽略。这发生在我呼叫时:
TessBaseAPI baseApi;
...
字符串文本= baseApi.getUTF8Text();
返回的字符串始终为空。就好像它甚至没有认识到黑色地区的开始。 任何人都知道我可以如何解决这个问题?
UPDATE:
为了更清楚这里是我的全部代码初始化苔丝时。
TessBaseAPI baseApi = new TessBaseAPI();
mainBitmap = mainBitmap.copy(Bitmap.Config.ARGB_8888, true);
baseApi.setDebug(true);
baseApi.init(MainActivity.DATA_PATH, MainActivity.lang);
baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_CHAR);
baseApi.setVariable("tessedit_char_whitelist","abcdefghijklmnopqrst");
baseApi.setImage(mainBitmap);
mainBitmap.recycle();
mainBitmap = null;
// Iterate through the results.
ResultIterator iterator = baseApi.getResultIterator();
String lastUTF8Text;
float lastConfidence;
iterator.begin();
do {
lastUTF8Text = iterator.getUTF8Text(TessBaseAPI.PageIteratorLevel.RIL_SYMBOL);
lastConfidence = iterator.confidence(TessBaseAPI.PageIteratorLevel.RIL_SYMBOL);
Log.i("string, intConfidence",lastUTF8Text+", "+lastConfidence);
} while (iterator.next(TessBaseAPI.PageIteratorLevel.RIL_SYMBOL));
我的白名单从一系列的“A”到“T”去,因为我做了对应于我不得不使用符号字体,并将它们映射到这些字母的每一个。
我已经尝试过,但它会一直忽略那两个特定的符号。事实上,我也试过所有的模式,以防万一,但它只是返回一个空字符串。 – Samzerge
你有没有试过只列出你需要的符号? –
是的,这工作正常,因为每次它返回一个字符串它是在该列表的范围内,问题是它被返回为空。 – Samzerge