删除验证码背景

2024-09-30 04:31:04 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Captcha1

Captcha2

由于背景是静态的,而且文字是如此计算机生成的非扭曲字符,我相信这是非常能干的。因为将图像直接传递给Tesseract(OCR引擎)并没有得到肯定的结果。我想删除OCR之前的验证码背景。在

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

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

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

enter image description here

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

  1. 创建背景遮罩,并将背景遮罩应用于图像。在

这是面具图像

enter image description here

这是一张蒙版去除灰线的图像

Background Mask

然而,盲目地应用这个掩码会在验证码字符中产生一些“白洞”。但泰瑟拉克还是没能找出字眼。在

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

最后,我如何将过滤后的图像分割成6个单字符图像?非常感谢。在


Tags: 方法图像引擎示例网站计算机静态字符
1条回答
网友
1楼 · 发布于 2024-09-30 04:31:04

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

在应用了步骤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。有一些方法是通过分析图像的直方图来确定空白的位置,从中可以推断出边界。在

相关问题 更多 >

    热门问题