Fork me on GitHub

Python pytesseract识别验证码

安装

安装库

$ pip install Pillow
$ pip install pytesseract

安装tesseract-ocr

Windows下直接下载安装包,安装后添加到环境变量Path。

CentOS6下(前提是各种常用源都已安装,参考centos7下添加常用YUM源(EPEL/Remi/RPMforge/php/Nginx)):

$ yum install tesseract
$ yum install tesseract-langpack-deu

验证码识别

核心只有一个函数pytesseract.image_to_string

简单的验证码识别

pytesseract-code1.jpg

pytesseract-code2.jpg

图片不需要任何处理:

from PIL import Image
import pytesseract

img = Image.open("code.png")
vcode=pytesseract.image_to_string(img, lang='eng')
print (vcode)

需要降噪的验证码识别

pytesseract-code3.jpg

这类验证码直接识别正确率太低。仔细观察图片,发现验证码有效内容均为黑色,所以考虑将非黑色都转成白色,代码稍微修改即可:

from PIL import Image
import pytesseract

img = Image.open("get.gif")
for i in range(0, img.size[0]):
    for j in range(0, img.size[1]):
        data = (img.getpixel((i,j)))
        if (data[0]>=10 and data[1]>=10 and data[2]>=10):  # 黑色rgb为(0,0,0)
            img.putpixel((i,j),(255,255,255,255))

vcode=pytesseract.image_to_string(img, lang='eng')
print (vcode)

延申阅读

Comments