【问题标题】:cv::text::OCRTesseract not respecting filters on Raspberry Picv::text::OCRTesseract 不尊重 Raspberry Pi 上的过滤器
【发布时间】:2018-05-07 23:52:12
【问题描述】:

我在 openCV 中使用 OCRTesseract 额外模块在树莓派模型 3 上进行文本识别。我希望它只检测单个大写字符。以下初始化代码在我的台式机和笔记本电脑上运行良好:

Ptr<OCRTesseract> tess;
tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 3, 10);

但是,当在树莓派上运行时,它似乎忽略了过滤器,并且通常会给出小写字符和符号。偶尔会同时给出多个字符。
我试过了:

tess->setWhiteList("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

无济于事。

有什么建议?除此问题外,OCR 工作正常。允许它检测小写字母/符号会导致比我满意的更多误报。

【问题讨论】:

    标签: c++ opencv ocr tesseract raspberry-pi3


    【解决方案1】:

    做了一些研究后,我发现它是 tesseract 版本 4.00.00alpha 中的 bug(恰好是我在 PI 上运行的版本)。
    将 OEM 模式设置为 0 完全解决了这个问题。以下初始化代码按预期工作:

    Ptr<OCRTesseract> tess;
    tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 10);
    

    【讨论】:

      【解决方案2】:

      我没有评论所需的代表。考虑到当 psm 设置为 10(单个字符)时它会忽略白名单并提供多个字符,我的猜测是在您的 pi 中安装了错误的 tesseract 或 opencv。

      你能提供你的tesseract和opencv的版本吗?

      如果可能,尝试将图像保存为文件,然后从命令行使用 tesseract 来查看它是否正常工作。

      【讨论】:

      • Tesseract 版本是 4.00.00alpha。命令行上的测试让我发现这个版本的白名单被破坏了,除非你将 OEM 设置为 0。现在可以工作了,干杯
      • 很高兴您发现了问题。不过,Tesseract 4.00.00 仍在积极开发中,因此它可能到处都有错误。如果可能,请尝试使用最新的稳定版本 3.05.01。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多