ddddocr识别验证码

1,179 阅读1分钟

数据采集过程中经常会遇到各种各样的验证码,最近又出了一款开源好用的验证码识别工具:ddddorc 来看看它是如何使用的

一 文字验证码

如下图所示:测试了一下基本上准确率99%以上,对于绝大多数图像,数字验证码都能较快的验证,就是字母识别出来大小写不一定准确,如果有字母大小写要求,可以使用upper()方法对字母进行全大写

1661925838.jpg

# -*-coding:utf-8-*-
import requests
import ddddocr, time

class DDOCR:
    def __init__(self):
        self.headers = {'User-Agent': 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/104.0.0.0Safari/537.36'}
        
    def ddocr(self, img):
        ocr = ddddocr.DdddOcr()
        #识别刚刚保存在images文件夹下的图片
        with open('../images/{}'.format(img), 'rb') as f:
            img_bytes = f.read()
        res = ocr.classification(img_bytes)
        print('识别出的验证码为:' + res)
        return res
        
    def get_code(self):
        img_url = 'http://www.ccgp-ningxia.gov.cn/admin/AuthCode_too.do?'
        self.session = requests.session()
        r = self.session.get(img_url, headers=self.headers)
        #下载图片到images文件夹下,以时间戳命名,如果要覆盖图片,可以固定图片名称例如a.jpg
        img_name = str(int(time.time())) + '.jpg'
        with open('../images/{}'.format(img_name), 'wb') as f:
            f.write(r.content)
        code = self.ddocr(img_name)
        code = code.upper()
        return code

if __name__ == '__main__':
    DDOCR().get_code()