去除验证码背景
Remove Captcha background
我进入了一个我想删除的验证码网站。这是一些示例图片
既然背景是静态的,文字又是电脑生成的不变形的文字,我觉得还是可以的。由于将图像直接传递给 Tesseract(OCR 引擎)并没有得到肯定的结果。我想去掉OCR前的验证码背景
我使用 Python-PIL
尝试了多种背景去除方法
- 删除所有非黑色像素,这会删除线条但不会删除小实心黑框。
- 应用提到的过滤器 another Whosebug post,它不会删除小实心黑框。而且效果不如方法一
方法 1 和 2 会给我这样的图像
看起来很接近,但 Tesseract 无法识别字符,即使在顶部和底部的点行被删除后也是如此。
- 创建背景蒙版,并将背景蒙版应用于图像。
这是蒙版图片
这是应用蒙版并去除灰线的图像
然而,盲目应用此掩码会在验证码字符中生成一些 "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。有一些方法可以分析图像的直方图,从而找到可以推断边界的空白位置。
我进入了一个我想删除的验证码网站。这是一些示例图片
既然背景是静态的,文字又是电脑生成的不变形的文字,我觉得还是可以的。由于将图像直接传递给 Tesseract(OCR 引擎)并没有得到肯定的结果。我想去掉OCR前的验证码背景
我使用 Python-PIL
尝试了多种背景去除方法- 删除所有非黑色像素,这会删除线条但不会删除小实心黑框。
- 应用提到的过滤器 another Whosebug post,它不会删除小实心黑框。而且效果不如方法一
方法 1 和 2 会给我这样的图像
看起来很接近,但 Tesseract 无法识别字符,即使在顶部和底部的点行被删除后也是如此。
- 创建背景蒙版,并将背景蒙版应用于图像。
这是蒙版图片
这是应用蒙版并去除灰线的图像
然而,盲目应用此掩码会在验证码字符中生成一些 "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。有一些方法可以分析图像的直方图,从而找到可以推断边界的空白位置。