热点复现|验证码识别

举报
darkpard 发表于 2021/07/28 20:16:17 2021/07/28
【摘要】 无需任何配置,用ddddocr库做文字识别。

最近忙着做OCR的小项目,很久没上ModelArts,刚好周末在 快学Python 看到朱小五的《5行Python实现验证码识别,太稳了!》介绍了一个名为ddddocr的,配置要求远低于之前用的EasyOCR和pytesseract,刚好来ModelArts探索、复现一下。


1. 库的安装

这个库的安装非常简单。

!pip install ddddocr


2. 验证码识别尝试

首先向小五学习,去百度图片下载一些验证码图片,放入文件夹验证码图片。

!pip install matplotlibimport matplotlib.pyplot as plt%matplotlib inline
import ddddocrocr = ddddocr.DdddOcr()p = plt.imread('验证码图片/t1.jpg')plt.imshow(p)with open('验证码图片/t1.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)
cxcy

p = plt.imread('验证码图片/t2.jpg')plt.imshow(p)with open('验证码图片/t2.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)
534

p = plt.imread('验证码图片/t3.jpg')plt.imshow(p)with open('验证码图片/t3.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)
一o

p = plt.imread('验证码图片/t4.jpg')plt.imshow(p)with open('验证码图片/t4.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

25d7

p = plt.imread('验证码图片/t5.jpg')plt.imshow(p)with open('验证码图片/t5.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

7482

p = plt.imread('验证码图片/t6.jpg')plt.imshow(p)with open('验证码图片/t6.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

uwy6

p = plt.imread('验证码图片/t7.jpg')plt.imshow(p)with open('验证码图片/t7.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

p = plt.imread('验证码图片/t8.jpg')plt.imshow(p)with open('验证码图片/t8.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

DwSe

可能是我们选的样本更加复杂,我们试验下来,ddddocr库对验证码的识别效果比小五介绍的弱,对于重叠和角度不正的识别效果并不是很理想。

在此,我们想到了中文,于是尝试了一下中文验证码。

p = plt.imread('验证码图片/t11.png')plt.imshow(p)with open('验证码图片/t11.png', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

离技以

发现ddddocr库对中文验证码的识别能力并不弱于对数字和英文验证码的识别。


3. 通用文字识别尝试

p = plt.imread('验证码图片/t12.jpg')plt.imshow(p)with open('验证码图片/t12.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

验证码图片

p = plt.imread('验证码图片/t17.jpg')plt.imshow(p)with open('验证码图片/t17.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

验收标准按第二条标准验收

p = plt.imread('验证码图片/t20.jpg')plt.imshow(p)with open('验证码图片/t20.jpg', 'rb') as f:    img_bytes = f.read()res = ocr.classification(img_bytes)print(res)

一二

可以看到,ddddocr可以用来做一般的文字识别,但只能识别单行,不能识别多行。


4. 应用

ddddocr最大的优势是内置了很多去噪的功能,对非白底高清的图片有很强的适应性,应用起来非常简单。如果简单的做些文字识别,ddddocr是一个非常不错的开源库。

我将它地封装在 http://www.gchatst.club:8050/ ​,有兴趣但对代码不熟悉的同学也可以简单​尝试下。

此外,如果想正式入门文字识别,ddddocr也是一个不错的敲门砖。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。