Python自动打码,DdddOcr通用验证码自动识别库

在Python爬虫中,或者使用POST提交的过程中,往往需要提交验证码来验证,除了人工打码,付费的api接口(打码接口),深度学习识别验证码,当然还有适合新人使用的OCR验证码识别库,简单的验证码是可以完全实现自动打码的,比如下面本渣渣分享的通用验证码自动识别库:ddddocr(带带弟弟OCR)!

DdddOcr库安装

pip install ddddocr

想要更快,使用国内镜像安装:

pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple

DdddOcr库用法

  • 参数说明 DdddOcr 接受两个参数

参数名 默认值 说明 use_gpu False Bool 是否使用gpu进行推理,如果该值为False则device_id不生效 device_id 0 int cuda设备号,目前仅支持单张显卡

classification 参数名 默认值 说明 img 0 bytes 图片的bytes格式

461f2737ef7273867aca2f86ce73823a.png

  • 参考源码:

import ddddocr

ocr = ddddocr.DdddOcr()
with open('code.png', 'rb') as f:
    img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)

30b0629c523241f8c548129b962ecdb6.png

DdddOcr实战

  • 网站评论提交

url:https://www.feifeidm.com/Play/10919-0-0.html

验证码地址:https://www.feifeidm.com/include/vdimgck.php?r=0.7145461007261535

参考源码:

import ddddocr
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
code_url="https://www.feifeidm.com/include/vdimgck.php?r=0.7145461007261535"
r=requests.get(url=code_url,headers=headers,timeout=5)
with open('code.png','wb')as f:
    f.write(r.content)
    print("下载验证码成功!")

ocr = ddddocr.DdddOcr()

#with open(r'C:\Users\Administrator\Desktop\验证码识别\code.png', 'rb') as f:
    #img_bytes = f.read()
img_bytes=r.content

res = ocr.classification(img_bytes)

print(res)

e220a25ed3172fcbd3855c86a48db8c3.png

  • 搜狗快照删除/提交

url:http://fankui.help.sogou.com/index.php/web/web/index?type=2

扩展:其他适合新人的ocr识别库

  • pytesseract ytesseract需要配合安装在本地的tesseract-ocr.exe文件一起使用,Tesseract Ocr文字识别,需要注意的是安装时一定要选中中文包,默认是只支持英文识别。

库安装:

pip install pytesseract

库用法:

import pytesseract
from PIL import Image
text = pytesseract.image_to_string(Image.open(code.png"))
print(text)
  • PaddleOCR addleOCR是百度开源的一款基于深度学习的ocr识别库,对中文的识别精度相当不错,可以应付绝大多数的文字提取需求。

库安装:需要依次安装三个依赖库,安装命令如下,其中shapely库可能会受系统影响安装报错。

pip install paddlepaddle
pip install shapely
pip install paddleocr

库用法:

ocr = PaddleOCR(use_angle_cls=True, lang="ch")

# 输入待识别图片路径
img_path = r"code.png"

# 输出结果保存路径
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

from PIL import Image
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores)
im_show = Image.fromarray(im_show)
im_show.show()
  • easyocr github上一万多个star的开源ocr项目,支持80多种语言的识别,识别精度超高。

库安装:

pip install easyocr

库用法:

import easyocr

#设置识别中英文两种语言
reader = easyocr.Reader(['ch_sim','en'], gpu = False) # need to run only once to load model into memory
result = reader.readtext(r"code.png", detail = 0)
print(result)
  • muggle_ocr muggle_ocr是一款轻量级的ocr识别库,从名字也可以看出来,专为麻瓜设计!使用也非常简单,但其强项主要是用于识别各类验证码,一般文字提取效果就稍差了。

库安装:

pip install muggle_ocr

库用法:

import muggle_ocr

# 初始化sdk;model_type 包含了 ModelType.OCR/ModelType.Captcha 两种模式,分别对应常规图片与验证码
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)

with open(r"code.png", "rb") as f:
    img = f.read()

text = sdk.predict(image_bytes=img)
print(text)

相关阅读:

Python批量图片转文字信息参考源码

f3e3e595d1639dd5785f08850df36b63.png

搜狗站长平台链接提交工具Python脚本源码

48eab049b9186ed3f61c4256849eadb4.png

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

5f7a82dd1ba8561192e893407cfb41e6.png

9908ffe593b239b448b1cbe9a34afd12.png

关注我的都变秃了

说错了,都变强了!

不信你试试

aa71b3a98d54406f9621941fa0b46fc5.png

扫码关注最新动态

公众号ID:eryeji

  • 9
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中使用cv2可以实现自动识别验证码的功能。cv2是一个强大的图像处理,它提供了一系列功能来处理和分析图像。 在使用cv2自动识别验证码时,可以通过以下步骤来实现: 1. 首先,我们需要读取验证码的图像文件。使用cv2的imread函数可以读取图像文件,并将其存储为一个numpy数组。 2. 接下来,我们需要对图像进行预处理,以便提高验证码识别的准确性。常用的预处理方法包括灰度化、二值化、去噪等。使用cv2的cvtColor函数可以将图像转为灰度图像,使用cv2的threshold函数可以对灰度图像进行二值化处理,使用cv2的morphologyEx函数可以进行图像去噪操作。 3. 在进行图像处理后,我们可以使用cv2的findContours函数来查找图像中的轮廓。验证码通常包含一些数字或字母,通过查找轮廓可以将这些字符分离出来。 4. 然后,我们可以通过训练机器学习模型来识别验证码字符。常用的模型包括支持向量机(SVM)和卷积神经网络(CNN)。可以使用cv2的ml模块来训练和使用机器学习模型。 5. 最后,我们可以使用训练好的模型来对待识别的验证码进行预测。使用cv2的predict函数可以对验证码字符进行预测,从而实现验证码自动识别。 综上所述,通过使用cv2,我们可以方便地进行验证码自动识别。这个过程包括图像读取、预处理、轮廓提取、机器学习模型训练和预测等步骤。使用cv2的图像处理和机器学习功能,我们可以实现高效、准确的验证码识别。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值