2

我正在使用 Tessearct OCR 来识别图像的字符。但我希望使用 OCR 忽略数字字符

_tesseract->SetVariable("tessedit_char_blacklist", "0123456789");

通过这种方式,OCR 无法识别数字字符,但它为我提供了一些我不想要的其他字符来代替它们。

例如:有一张图片的文字为12 美元,当我在该图片上应用 OCR 时,它为我提供了美元 fl

正如我们在上面看到的那样,OCR 将12转换为我不想要的 fl 。我希望12被 OCR 忽略。

有什么方法可以得到美元而不是 美元 fl 的结果

为我提供任何解决方案。任何帮助都将是可观的。

4

2 回答 2

6

有关方法,请参阅此评论SetVariable()

// For most variables, it is wise to set them before calling Init.

我遇到了与您相同的问题,并在Init修复之前移动了代码:

tess = new TessBaseAPI();    
tess->SetVariable("tessedit_char_whitelist", 
   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
tess->SimpleInit([dataPath cStringUsingEncoding:NSUTF8StringEncoding],  
   "eng", false);
于 2013-08-05T09:08:37.000 回答
4

那不是tessedit_char_blacklist目的。tessedit_char_blacklist保证数字不会出现在图像中。如果你告诉 Tesseract 不正确的信息,你会得到不好的结果。

相反,您想要的是对 Tesseract 的输出进行后处理。让它输出正确的 OCR,然后去掉数字字符。

于 2015-09-17T15:48:35.427 回答