当前位置:首页>python>python使用ddddocr识别验证码(超好用)

python使用ddddocr识别验证码(超好用)

  • 2026-10-11 07:59:38
python使用ddddocr识别验证码(超好用)

一、简介

开源文档:https://github.com/sml2h3/ddddocr

目前支持最大python版本:3.12

二、使用

1、安装

Python 环境(推荐 3.7-3.10,过高版本可能兼容问题)

# 从pypi安装pip install ddddocr# 安装API服务支持pip install ddddocr[api]# 可选:安装依赖(若自动安装失败,手动补充)pip install opencv-python pillow numpy

2、使用基础ocr识别能力

主要用于识别单行文字,即文字部分占据图片的主体部分,例如常见的英数验证码等,本项目可以对中文、英文(随机大小写or通过设置结果范围圈定大小写)、数字以及部分特殊字符。

例如以下验证码图片:

(1)普通数字 / 字母/汉字混合验证码识别(最常用)

import ddddocrimport os# 初始化OCR对象(默认加载验证码识别模型)ocr = ddddocr.DdddOcr()# 读取验证码图片(code.png为你的验证码图片文件名)with open("code.png", "rb") as f:    img_bytes = f.read()# 核心识别方法:classification 接收图片二进制数据,返回识别出的字符串;try:    result = ocr.classification(img_bytes)    print(f"识别结果:{result}")except Exception as e:    print(f"识别失败:{e}")

(2)带干扰线识别

若汉字验证码有复杂背景(如干扰线、噪点),可先对图片做简单预处理(如灰度化),提升识别率:

import cv2import numpy as np# 图片预处理:灰度化 + 降噪img = cv2.imdecode(np.frombuffer(img_bytes, np.uint8), cv2.IMREAD_GRAYSCALE)# 重新编码为二进制_, img_bytes = cv2.imencode('.png', img)img_bytes = img_bytes.tobytes()

(3)滑块、点选识别功能

需要配合自动化工具处理,此处暂略。

3、HTTP API服务

(1)启动API服务

# 基础启动python -m ddddocr api# 指定端口和主机python -m ddddocr api --host 0.0.0.0 --port 8000# 开发模式(自动重载)python -m ddddocr api --reload# 查看所有选项python -m ddddocr api --help

(2)API端点说明

端点
方法
说明
/initialize
POST
初始化并选择加载的模型类型
/switch-model
POST
运行时切换模型配置
/toggle-feature
POST
开启/关闭特定功能
/ocr
POST
执行OCR识别
/detect
POST
执行目标检测
/slide-match
POST
滑块匹配算法
/slide-comparison
POST
滑块比较算法
/status
GET
获取当前服务状态
/docs
GET
Swagger UI文档

(3)使用示例

1.初始化服务

curl -X POST "http://localhost:8000/initialize" \     -H "Content-Type: application/json" \     -d '{"ocr": true, "det": false}'

2.OCR识别(支持颜色过滤)

curl -X POST "http://localhost:8000/ocr" \     -H "Content-Type: application/json" \     -d '{       "image": "base64_encoded_image_data",       "color_filter_colors": ["red", "blue"],       "png_fix": false,       "probability": false     }'

3.目标检测

curl -X POST "http://localhost:8000/detect" \     -H "Content-Type: application/json" \     -d '{"image": "base64_encoded_image_data"}'

4.查看服务状态

curl "http://localhost:8000/status"

(4)Python客户端示例

import requestsimport base64# 读取图片并转换为base64with open("captcha.jpg", "rb") as f:    image_data = base64.b64encode(f.read()).decode()# 初始化服务response = requests.post("http://localhost:8000/initialize",                        json={"ocr": True, "det": False})print(response.json())# OCR识别response = requests.post("http://localhost:8000/ocr",                        json={                            "image": image_data,                            "color_filter_colors": ["red", "blue"]                        })result = response.json()print(result["data"]["text"])

最新文章

随机文章