🔍 ddddocr

通用验证码在线识别服务

智能识别:beta 模型 + 颜色过滤 + 预处理策略 + 投票机制
📤
点击或拖拽上传验证码图片
🎯
上传滑块图片
🖼️
上传背景图片
识别中...

识别结果

点击结果即可复制

🔐 鉴权方式

所有 API 请求需在 Header 中携带 API Key:

Authorization: Bearer dk_xxxxxxxxxxxx

API Key 通过管理后台(/admin)创建获取。每个 Key 可独立配置额度和 IP 白名单。


📝 文字识别

POST /api/ocr
参数类型必填说明
fileFile必填验证码图片(支持 jpg/png/bmp)
enhancedBoolean可选true 启用自动预处理(去噪点、增强对比度等),适合带噪点/低对比度验证码
charsetString可选字符集裁剪:digits(纯数字) / lower(小写) / upper(大写) / alpha(纯字母) / lower_digits(小写+数字) / upper_digits(大写+数字) / alnum(字母+数字)。缩小候选范围可显著提升准确率
lengthInteger可选期望识别位数。传入后若结果位数不一致会返回提示
# 基础识别
curl -X POST http(s)://your-address/api/ocr \
  -H "Authorization: Bearer *** \
  -F "file=@captcha.png"

# 增强识别 + 位数校验(期望4位)
curl -X POST http(s)://your-address/api/ocr \
  -H "Authorization: Bearer *** \
  -F "file=@captcha.png" \
  -F "enhanced=true" \
  -F "length=4"

响应示例(成功):

{"code": 0, "result": "AB3K", "confidence": 0.85, "attempts": 1}

响应示例(智能重试后):

{ "code": 0, "result": "AB3K", "confidence": 0.92, "strategy": "clahe_threshold", "attempts": 3 }

响应示例(字符集裁剪):

{"code": 0, "result": "3847", "confidence": 0.98, "charset": "digits", "attempts": 1}

响应示例(位数不一致):

{ "code": 1, "result": "AB3", "message": "识别结果位数不一致(期望 4 位,实际 3 位),请重新获取验证码", "attempts": 3 }

智能识别机制(v2.3):

识别阶段触发条件说明
默认模型始终执行ddddocr 默认 OCR 模型直识别
Beta 模型置信度 < 0.5使用 ddddocr beta 新模型交叉验证
颜色过滤置信度 < 0.7 + 彩色图片自动检测彩色验证码,按颜色(红/蓝/绿)过滤干扰
预处理策略置信度 < 0.7 或位数不匹配自适应阈值 / Otsu / 降噪 / 锐化 / 反色 / CLAHE
投票机制多候选结果相同识别结果累计置信度加分,投票选最佳

🎯 目标检测

POST /api/det
参数类型必填说明
fileFile必填待检测图片
curl -X POST http(s)://your-address/api/det \
  -H "Authorization: Bearer dk_xxxxx" \
  -F "file=@image.png"

响应示例:

{"code": 0, "result": [[x1, y1, x2, y2], ...]}

🧩 滑块验证码 — 边缘匹配

POST /api/slide/match
参数类型必填说明
targetFile必填滑块缺口图片
bgFile必填完整背景图片
curl -X POST http(s)://your-address/api/slide/match \
  -H "Authorization: Bearer dk_xxxxx" \
  -F "target=@slider.png" \
  -F "bg=@background.png"

响应示例:

{"code": 0, "result": {"target": [x1, y1, x2, y2]}}

🧩 滑块验证码 — 图像对比

POST /api/slide/compare
参数类型必填说明
targetFile必填滑块图片
bgFile必填背景图片
curl -X POST http(s)://your-address/api/slide/compare \
  -H "Authorization: Bearer dk_xxxxx" \
  -F "target=@slider.png" \
  -F "bg=@background.png"

响应示例:

{"code": 0, "result": 0.98}

❤️ 健康检查

GET /health

无需鉴权,返回服务状态和已加载的模型。

{"status": "ok", "models_loaded": ["ocr", "det", "slide"]}

⚠️ 错误码说明

状态码说明
400请求参数错误(图片过大等)
401API Key 缺失或无效
403API Key 已禁用,或当前 IP 不在白名单中
429请求过于频繁,或 API Key 额度已用完
500服务内部错误(识别失败等)

文件大小限制:8MB · 频率限制:30次/分钟/IP · 图片格式:JPG / PNG / BMP