使用PyTesser打破简单的验证码

时间:2015-02-10 06:17:08

标签: python ocr tesseract pytesser

我正在使用PyTesser打破captcha。 PyTesser使用tesseract python ocr库。在将图像放到PyTesser之前,我使用了一些过滤。我的代码一步一步: 输入图像为:input image

from PIL import Image
img = Image.open('1.gif')
img = img.convert("RGBA")
pixdata = img.load()
# Clean the background noise, if color != black, then set to white.
for y in xrange(img.size[1]):
    for x in xrange(img.size[0]):
        if pixdata[x, y][0] < 90:
         pixdata[x, y] = (0, 0, 0, 255)

for y in xrange(img.size[1]):
    for x in xrange(img.size[0]):
     if pixdata[x, y][2] < 136:
         pixdata[x, y] = (0, 0, 0, 255)

for y in xrange(img.size[1]):
    for x in xrange(img.size[0]):
        if pixdata[x, y][3] > 0:
            pixdata[x, y] = (255, 255, 255, 255)


img.save("input-black.gif", "GIF")

应用此代码后,输出为:

现在,

im_orig = Image.open('input-black.gif')
big = im_orig.resize((116, 56), Image.NEAREST)

ext = ".tif"
big.save("input-NEAREST" + ext)

此代码段输出图像为:

enter image description here

最后当我申请时

from pytesser import *
image = Image.open('input-NEAREST.tif')
print image_to_string(image)

我收到了输出%/ww

请帮我找到正确的结果。

如果我尝试使用这些图像,此代码可以成功识别字母。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

在执行验证码识别器之前,您需要执行一些基本的形态图像操作以删除行。尝试结合使用ndimage.binary_erosion和ndimage.binary_dilation。