验证码识别最佳实践

Best Practice in Captcha Recognition

我正在做一个基于文本的验证码识别的真实项目。

图片处理步骤大致设计为

  1. 对灰度图像进行预处理(膨胀、腐蚀或模糊等),以去除微小的噪声。

  2. 如果内容周围有任何边框填充则裁剪

  3. 根据横轴计算直方图,尝试垂直破解文字

  4. 使用 tesseract 等工具识别单个字符。

目前我在Python+Opencv中编码,得到的结果如下:

现在我得到了直方图,如果我在数字中填充一些空洞,每个文本将很好地显示为直方图中的正态分布。

但是我怎样才能真正找出这张图片中的每个局部最大值呢?目前直方图是离散的并且不是那么平滑。我现在卡在这个阶段了。

而且,那些噪音带无法删除。因为文字有不同的颜色。那么我是否需要将颜色 space 转换为 HSV 或其他任何东西?

如果您能给我一些建议,我将不胜感激。

谢谢!

是的.. 尝试查看图像在不同 HSV 层中的外观。对值层、阈值应用直方图equalization/contrast归一化,看看是否有差异。