【问题标题】:Determining text areas using opencv in crowded images在拥挤的图像中使用opencv确定文本区域
【发布时间】:2016-01-30 06:24:20
【问题描述】:

我正在尝试(但未能)定位包含较大图像中文本的区域。具体来说,我正在寻找识别魔术卡的标题。目前我已经设法将图像切割成包含标题的块,例如

input image.

尽管如此,即使训练 ocr 库仅使用这种字体,准确度仍然很低。据我所知,我能做的最好的事情就是将图像裁剪为仅文本。经过研究,我仍然无法这样做。我试图实现Extracting text OpenCV 中提出的解决方案,但是文本太靠近边界,无法正常工作。 attempt image。如果可能以 java 的形式提供帮助,将不胜感激。 (对不起图片链接,我没有嵌入图片的声誉)

【问题讨论】:

  • 抱歉,帮不上忙。但我想知道你是如何将 Tesseract 与 opencv 集成的?您是否将 Opencv 3.0 与 tesseract contrib 模块一起使用?如果是这样,您需要做什么才能使其正常工作?
  • 我正在使用 opencv 3.0 java wrapper 和最新版本的 tess4j。我只是将垫子从 opencv 转换为 java 缓冲图像并将它们传递给 tess4j。
  • 很好,我只是对 opencv 3.0 中的新 OCR 支持以及通过 java 绑定使其工作需要什么感到好奇。至于您的问题,您是否尝试过放大图像,应用侵蚀、膨胀、模糊、锐化等滤镜以获得更好的文本轮廓边界?
  • 我没用过ocr以为opencv,我什至不知道有可能。至于图像,边框和文本之间的距离小于文本中的空格,使得过滤器无法区分两者。
  • 我也在java中实现了这个stackoverflow.com/a/25105964/1874116。然而通过这张图片:input image 2 只设法产生output image(我会编辑原始问题,但我没有代表需要添加链接)

标签: java opencv ocr tesseract


【解决方案1】:

按照建议发布答案。

此答案依赖于文本始终接近与边界相同的距离/偏移量。

使用 Canny/Hough 等查找边界的边界,并使用最适合您的图像的任何过滤技术(侵蚀、稀释、锐化、灰度、二进制阈值等)。

然后取这个边界边界 Rect 的一个较小的内部 submat() 来获得文本应该在哪里的近似值,并在这个 submat 上运行 ocr。

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 2011-02-23
    • 2016-10-12
    • 2015-07-12
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多