【问题标题】:Remove Captcha background删除验证码背景
【发布时间】:2015-04-08 17:44:01
【问题描述】:

我进入了一个我想摆脱的验证码网站。这是一些示例图像

由于背景是静态的,而且这个词是计算机生成的非扭曲字符,我相信它是非常可行的。由于将图像直接传递给 Tesseract(OCR 引擎)不会产生积极的结果。我想在 OCR 之前移除验证码背景。

我使用 Python-PIL 尝试了多种背景去除方法

  1. 删除所有非黑色像素,这会删除线条,但不会删除小的实心黑框。
  2. 应用提到的过滤器another StackOverflow post,它不会删除小的实心黑框。也比方法 1 效果差。

方法 1 和 2 会给我这样的图像

看起来很接近,但 Tesseract 无法识别该字符,即使删除了顶部和底部的点行。

  1. 创建背景蒙版,并将背景蒙版应用于图像。

这是蒙版图片

这是应用了蒙版并移除了灰线的图像

但是,盲目地应用此蒙版会在验证码字符中产生一些“白洞”。而 Tesseract 仍然无法找出这些单词。

有没有更好的去除静态背景的方法?

最后,我如何将过滤后的图像拆分为 6 个具有单个字符的图像?非常感谢。

【问题讨论】:

    标签: python image-processing captcha


    【解决方案1】:

    我可以给你一些想法尝试一下。

    应用第 3 步后,您可以使用 PIL 加厚图像中的黑边以填充白孔。我猜你正在使用 python-tesseract。如果有,请参考https://code.google.com/p/python-tesseract/wiki/CodeSnippets中的示例4

    为了提取字符,您可以参考Numpy PIL Python : crop image on whitespace or crop text with histogram Thresholds。有一些方法可以分析图像的直方图,以便定位可以推断边界的空白位置。

    【讨论】:

    • 谢谢帕科。我发现 Tesseract 不适合 OCR,但我使用的是 Scene OCR API 服务器。这对我的情况来说已经足够了。 =)
    • 更多详情请查看示例widu.tumblr.com/post/43624338495/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2013-02-25
    • 2020-09-16
    • 2016-08-06
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多