本篇内容主要讲解“Python通用验证码识别OCR库怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python通用验证码识别OCR库怎么使用”吧!
传统验证码
传统验证就是数字、字母、汉字等,把背景搞得模糊一些,这些验证码在他前面就是个弟弟。
以第一个为例,要想识别他非常容易了。
import ddddocrocr = ddddocr.DdddOcr(old=True)# 第一个验证截图保存:verification_code_1.pngwith open("./verification_code_1.png", 'rb') as f: image = f.read()res = ocr.classification(image)print(res)
运行结果:
iepv
滑动验证码
当然,传统验证码现在已经比较少网站在使用了,几年前开始流行滑动验证码,当时,也有类似的识别方案,主要通过selenium模拟滑动。
首先,需要准备两张图片
有缺口的图片
滑块缝合的图片
import ddddocrimport cv2slide = ddddocr.DdddOcr(det=False, ocr=False)# 滑块缝合的图片with open('./verification_code_2-2.png', 'rb') as f: target_bytes = f.read()# 有缺口的图片with open('./verification_code_2-1.png', 'rb') as f: background_bytes = f.read()# 滑块缝合的图片img = cv2.imread("./verification_code_2-2.png")res = slide.slide_comparison(target_bytes, background_bytes)print(res)
运行结果
{'target': [17, 78]}
从文档中没找到这个坐标是滑块的初始坐标还是滑到正确位置的坐标。
当然,这种方案想要运行到自动化中还是比较难的,首先我们很难得到滑块缝合的图片,除非你将验证码的所有图片和缺口图片都保存下来,当验证码随机生成一张图片后,先截图和本地保存的图片对比,然后,找到对应的滑块缝合的图片。通过ddddocr找到元素坐标。
总之,太麻烦了,我选择放弃~!
文字点选验证码
这种验证码现在也比较常见,我们需要按照顺序点击图片中的文字。
import ddddocrimport cv2det = ddddocr.DdddOcr(det=True)# 验证码图片with open("./verification_code_3.png", 'rb') as f: image = f.read()poses = det.detection(image)print(poses)# 验证码图片im = cv2.imread("verification_code_3.png")for box in poses: x1, y1, x2, y2 = box im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)# 结果图片cv2.imwrite("result.jpg", im)
运行结果:
[[17, 28, 82, 92], [55, 95, 118, 158], [39, 160, 103, 222]]
这里给出的坐标就是识别的三个文字的图片坐标。
这种方案同样会面临两个问题;
文字的识别顺序不一定是要你点击的顺序。例如识别出来的文字顺序是: 荷叶饭, 验证码可能提示你点击的顺序是:叶饭荷。
生成的坐标只是图片的坐标,不管是web还是app,验证码图片只是屏幕的一部分,除非你截取整个屏幕。那么识别率就无法控制了。
到此,相信大家对“Python通用验证码识别OCR库怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!