我应该使用什么方法来识别失真和纠结的验证码?

时间:2019-04-04 15:18:27

标签: python ocr captcha

我有一个验证码图像,问题是我不知道如何解决视觉识别(CNN方式(神经网络)或通过OCR库)

我尝试使用其他stackoverflow问题中的简单案例,但似乎它们很简单,因为在我的案例中它们重叠并且严重失真。

示例1:

captcha exampl 1

示例2:

example 2

for dilate in [1, 3, 4, 5]:
    for erode in [1, 3, 4, 5]:
        for thresh in [125, 150, 175, 200]:
            img = cv.imread('cap.png', 0)
            img = cv.resize(img, (300, 120))
            ret, img = cv.threshold(img, thresh, 255, cv.THRESH_BINARY)
            img = cv.dilate(img, np.ones((dilate,dilate), np.uint8))
            img = cv.erode(img, np.ones((erode,erode), np.uint8))
            text = pytesseract.image_to_string(img, lang='eng', config='--psm 7 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz')
            print(text)

我想了解应该使用什么方法或从哪里开始。训练我自己的CNN更好吗?

1 个答案:

答案 0 :(得分:0)

经过很多时间,我找到了答案。我希望如果有人对此主题感兴趣,他们会发现我对模糊问题的解答是完整的:) 解决验证码最快的途径不在于分割(我还没有找到有关如何精确摆脱验证码中所有复杂连字的答案)。因此,只有一种方法可以生成验证码火车集并创建CNN模型。 如果您不了解php,则生成数据集并不容易,因为大多数验证码脚本都是用PHP编写的。对我来说,我发现了非常有用的生成脚本“ kcaptcha”(它有变形和奇怪的字体)。 CNN模型的制作并非一帆风顺,因为在模型的结尾,我们希望将N个输出折叠成一个(其中N个字母)。