cv::text::OCRTesseract 不遵守 Raspberry Pi 上的过滤器
cv::text::OCRTesseract not respecting filters on Raspberry Pi
我在 openCV 中使用 OCRTesseract 额外模块在 raspberry pi 模型 3 上进行文本识别。我希望它只检测单个大写字符。以下初始化代码在我的台式机和笔记本电脑上运行良好:
Ptr<OCRTesseract> tess;
tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 3, 10);
然而,当 运行 在 运行 和 raspberry pi 上时,它似乎忽略了过滤器并且通常会给出小写字符和符号。偶尔同时给多个字符
我试过:
tess->setWhiteList("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
无果。
有什么建议么?除此问题外,OCR 工作正常。允许它检测小写 letters/symbols 导致的误报比我满意的要多得多。
我没有发表评论所需的代表。考虑到当 psm 设置为 10(单个字符)时它忽略白名单并提供多个字符这一事实,我的猜测是 tesseract 或 opencv 在您的 pi 中安装错误。
能否提供一下你的tesseract和opencv的版本?
如果可能,请尝试将图像保存为文件,然后从命令行使用 tesseract 来查看它是否正常工作。
经过一些研究后,我发现它是 tesseract 版本 4.00.00alpha 中的 bug(这恰好是我在 PI 上 运行 的版本)。
将 OEM 模式设置为 0 完全解决了这个问题。以下初始化代码按预期工作:
Ptr<OCRTesseract> tess;
tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 10);
我在 openCV 中使用 OCRTesseract 额外模块在 raspberry pi 模型 3 上进行文本识别。我希望它只检测单个大写字符。以下初始化代码在我的台式机和笔记本电脑上运行良好:
Ptr<OCRTesseract> tess;
tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 3, 10);
然而,当 运行 在 运行 和 raspberry pi 上时,它似乎忽略了过滤器并且通常会给出小写字符和符号。偶尔同时给多个字符
我试过:
tess->setWhiteList("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
无果。
有什么建议么?除此问题外,OCR 工作正常。允许它检测小写 letters/symbols 导致的误报比我满意的要多得多。
我没有发表评论所需的代表。考虑到当 psm 设置为 10(单个字符)时它忽略白名单并提供多个字符这一事实,我的猜测是 tesseract 或 opencv 在您的 pi 中安装错误。
能否提供一下你的tesseract和opencv的版本?
如果可能,请尝试将图像保存为文件,然后从命令行使用 tesseract 来查看它是否正常工作。
经过一些研究后,我发现它是 tesseract 版本 4.00.00alpha 中的 bug(这恰好是我在 PI 上 运行 的版本)。
将 OEM 模式设置为 0 完全解决了这个问题。以下初始化代码按预期工作:
Ptr<OCRTesseract> tess;
tess = OCRTesseract::create(NULL, NULL, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, 10);