【问题标题】:OCR(Text Recognition) result from OpenCV 3.1 + tesseract 3.04 varies depending on the order of recognitionOpenCV 3.1 + tesseract 3.04 的 OCR(文本识别)结果因识别顺序而异
【发布时间】:2017-03-28 18:39:31
【问题描述】:

我目前正在使用以下示例代码:

https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/textdetection.cpp


奇怪的是,看起来 OCR 结果可能会根据我传递给 ocr 模块的图像顺序而有所不同。

例如)如果有 100 帧带有文本的图像,并且识别结果可能会有所不同 - 我将每个帧顺序传递给 tesseract 模块(总共 100 帧) 和 - 我将每个帧不按顺序传递给 tesseract 模块(总共 100 帧)


理想情况下,上述两种情况应该有相同的结果。

我已经确认它不是由 erFilter 部件引起的。从 erFilter 出来的结果是完全一样的。这种差异似乎发生在 openCV 中的 tesseract 或 tesseract 包装器内部。

差异也可能有所不同,从只是一个置信度值有小的差异,到识别的文本不同。

我觉得 OpenCV 或 tesseract 记住了一些东西并影响了新框架的 OCR 结果,但我找不到任何规格说明。

请让我知道这是否与 OpenCV/Tesseract 行为一样正常。

【问题讨论】:

    标签: c++ opencv text ocr tesseract


    【解决方案1】:

    尝试使用ClearAdaptiveClassifier()清除自适应数据或使用配置变量关闭自适应分类器:

    classify_enable_learning 0
    classify_enable_adaptive_matcher 0
    

    Tesseract FAQ

    【讨论】:

    • 非常感谢!问题解决了! ;) 似乎 OpenCV 的 tesseract 包装器没有公开方法或那些配置,所以我需要修改它才能这样做。
    • 更新:在我看来,清除自适应数据会降低 OCR 比率。我认为这是因为: 1. 我正在尝试对带有文本的视频进行 OCR。 2.第一帧和下一帧有相关性。 3.清除自适应数据将丢弃从前一帧中学到的对模棱两可的字母的好处。但是,这意味着,就我而言,虽然没有解决波动的办法。唯一的方法可能是序列化 OCR,这意味着我不能使用多线程优化。嗯……
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多