ios - iOS 上的 Tesseract - 糟糕的结果

标签 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);

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

最佳答案

我认为 Tesseract 对于这个东西有点矫枉过正。你最好使用一个简单的神经网络,专门针对你的图像进行训练。在我的公司,最近我们尝试在 iOS 上使用 Tesseract 执行 OCR 任务(使用相机扫描水电费账单),但它对于我们的目的来说太慢且不准确(在 iPhone 4 上扫描花费了 30 多秒,速度非常快)低帧率)。最后,我专门为我们的目标字体训练了一个神经网络,这个解决方案不仅击败了 Tesseract(它甚至可以在 iPhone 3Gs 上完美地扫描东西),而且还击败了商业 ABBYY OCR 引擎,我们得到了一个样本从公司。 This course's Material 将是机器学习的良好开端。

关于ios - iOS 上的 Tesseract - 糟糕的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757940/

相关文章:

ios - 在 iOS 上无需按按钮即可进行语音命令

OpenCV 3.02 + 文本模块 + Tesseract 3.05 运行时错误 : Tesseract not found

ios - 如何转换相机图像的 DPI(每英寸点数)。?

ios - 控制绕球体旋转的物体

iphone - iOS 应用程序中的 Tesseract 集成错误

python - 使用 Tesseract python 进行数字识别

html - 在哪里可以找到 HOCR 文件的样本?

ios - 访问 AVAudioRecorder 的 meterEnabled 报错

ios - SpriteKit 中的碰撞

ios - 第一次更改 UITextField 属性 isSecureTextEntry 时键盘闪烁