iOS上的Tesseract - 糟糕的结果

时间:2013-11-03 20:50:00

标签: ios tesseract

花了超过10个小时来使用libc ++编译tesseract,所以它适用于OpenCV,我有问题得到任何有意义的结果。我正在尝试将它用于数字识别,我传递的图像数据是一个小方块(50x50)图像,其中包含一个或没有数字。

我尝试过使用eng和equ tessdata(来自谷歌代码),结果不同但两者都猜到0位数。使用eng数据我大部分时间都得到'4 \ n \ n''\ n \ n'(即使图像中没有数字) ,信心从1到99。 使用equ数据我得到'\ n \ n',置信度为0-4。

我也尝试过对图像进行二值化,结果大致相同,我认为不需要它,因为图像过滤得非常好。

我假设有一些错误,因为与最简单的示例图像相比,图像很容易识别。

以下是代码:

初始化:

    _tess = new TessBaseAPI();
    _tess->Init([dataPath cStringUsingEncoding:NSUTF8StringEncoding], "eng");
    _tess->SetVariable("tessedit_char_whitelist", "0123456789");
    _tess->SetVariable("classify_bln_numeric_mode", "1");

识别:

char *text = _tess->TesseractRect(imageData, (int)bytes_per_pixel, (int)bytes_per_line, 0, 0, (int)imageSize.width, (int)imageSize.height);

我没有错误。 TESSDATA_PREFIX设置正确,我尝试了不同的识别方法。检查后,imageData看起来没问题。

以下是一些示例图片:

http://imgur.com/a/Kg8ar

这是否适用于常规训练数据?

感谢任何帮助,我第一次尝试tessarect,我可能错过了一些东西。

修改

我发现了这个:

    _tess->SetPageSegMode(PSM_SINGLE_CHAR);

我认为必须在这种情况下使用它,尝试过但得到了相同的结果。

1 个答案:

答案 0 :(得分:1)

我认为Tesseract对于这些东西有点过分。使用简单的神经网络为您的图像进行明确训练,您会感觉更好。在我的公司,最近我们尝试在iOS上使用Tesseract进行OCR任务(使用相机扫描实用程序账单),但是对于我们的目的而言太慢且不准确(在iPhone 4上扫描时间超过30秒)低FPS)。最后,我专门为我们的目标字体训练了一个神经网络,这个解决方案不仅击败了Tesseract(它甚至可以在iPhone 3Gs上完美扫描),还有一个商用ABBYY OCR引擎,我们给了它一个样本来自公司。 This course's材料将成为机器学习的良好开端。