去除验证码背景

Remove Captcha background

我进入了一个我想删除的验证码网站。这是一些示例图片

既然背景是静态的,文字又是电脑生成的不变形的文字,我觉得还是可以的。由于将图像直接传递给 Tesseract(OCR 引擎)并没有得到肯定的结果。我想去掉OCR前的验证码背景

我使用 Python-PIL

尝试了多种背景去除方法
  1. 删除所有非黑色像素,这会删除线条但不会删除小实心黑框。
  2. 应用提到的过滤器 another Whosebug post,它不会删除小实心黑框。而且效果不如方法一

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

看起来很接近,但 Tesseract 无法识别字符,即使在顶部和底部的点行被删除后也是如此。

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

这是蒙版图片

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

然而,盲目应用此掩码会在验证码字符中生成一些 "white holes"。而且Tesseract还是没能找出单词。

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

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

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

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