数据采集过程中经常会遇到各种各样的验证码,最近又出了一款开源好用的验证码识别工具:ddddorc 来看看它是如何使用的
一 文字验证码
如下图所示:测试了一下基本上准确率99%以上,对于绝大多数图像,数字验证码都能较快的验证,就是字母识别出来大小写不一定准确,如果有字母大小写要求,可以使用upper()方法对字母进行全大写
# -*-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()