一、简介

开源文档: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 ddddocr
import 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 cv2
import 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 requests
import base64

# 读取图片并转换为base64
with 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"])

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐