删除验证码背景

时间:2015-02-09 02:51:10

标签: python image-processing captcha

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

Captcha1

Captcha2

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

我尝试使用Python-PIL

进行多种背景删除方法
  1. 删除所有非黑色像素,删除线条,但不会移除小黑色实心框。
  2. 应用提及another StackOverflow post的过滤器,该过滤器不会移除小的实心黑盒子。它也不如方法1有效。
  3. 方法1和2会给我一个像这样的图像

    enter image description here

    看起来很接近,但即使在删除了顶部和底部的点行之后,Tesseract也无法识别该角色。

    1. 创建背景蒙版,并将背景蒙版应用于图像。
    2. 这是掩模图像

      enter image description here

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

      Background Mask

      然而,盲目地应用这个掩码会在验证码字符中产生一些“白洞”。而Tesseract仍未能找到这些词语。

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

      最后,我怎样才能将过滤后的图像分割为单个字符的6个图像?非常感谢。

1 个答案:

答案 0 :(得分:0)

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

应用步骤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。有一些方法可以分析图像的直方图,以便找到可以推断出边界的空白位置。