上传大图与小图


按小图从左到右的顺序,在大图中定位相应图案。
上传验证码大图与提示小图,获取按提示顺序排列的坐标,以及标有 1、2、3 顺序记号的拼接图。
从两张原图到有序坐标,一眼了解输入与输出。
接口文档与请求示例可直接查看。
登录并进入测试台 →POST /solver/v1/solve/image-click/1 · X-API-Key 鉴权
| 参数 | 类型 | 说明 |
|---|---|---|
| big_image | file · 必填 | 验证码大图,最大 2 MiB;宽高各 32–2048 像素,总像素不超过 2,097,152。 |
| small_image | file · 必填 | 三个提示图案的小图,最大 2 MiB;宽 9–1024、高 6–512 像素,总像素不超过 262,144。 |
使用 multipart/form-data 上传 JPEG、PNG 或 WebP 单帧图片,不接受图片 URL、SVG、动图、模型或文件路径。请求库会生成 boundary,不要手工填写 Content-Type。图片按原始像素读取,不依据 EXIF 旋转。
识别只返回本类型验证码的三个图案坐标,不执行站点验证,也不保证所有图片均识别正确。若未检出三个不同目标会返回 422,不填造坐标。单次进程最长运行 60 秒,排队与环境检查另计,客户端建议保留 180 秒等待时间。
import base64
import os
from pathlib import Path
import requests
with open("big.jpg", "rb") as big, open("small.png", "rb") as small:
response = requests.post(
"https://your-host/solver/v1/solve/image-click/1",
headers={"X-API-Key": os.environ["WANXIANG_API_KEY"]},
files={
"big_image": ("big.jpg", big, "image/jpeg"),
"small_image": ("small.png", small, "image/png"),
},
timeout=180,
)
response.raise_for_status()
result = response.json()
print(result["points"]) # [[x1, y1], [x2, y2], [x3, y3]]
Path("result.png").write_bytes(base64.b64decode(result["annotated_image"]["base64"]))curl 'https://your-host/solver/v1/solve/image-click/1' \
-H "X-API-Key: $WANXIANG_API_KEY" \
-F 'big_image=@big.jpg' \
-F 'small_image=@small.png' \
--max-time 180points 是按小图顺序排列的三个 [x, y];coordinates 为带 order、x、y 的对象数组。big_image 与 small_image 提供原始宽高;annotated_image 包含 mime_type、base64、width、height。大图保持原始像素后加入边距,小图使用本次上传的原图、保持原始尺寸,透明背景合成到浅色底,编号置于图外;返回坐标始终不含拼接偏移。另有 service、coordinate_system、elapsed_seconds、request_id、quota(limit / used / remaining)。elapsed_seconds 为模型识别耗时,不包含首次加载。
401 / 403:鉴权或登录失败;422:上传参数、图片无效或识别不完整;429:额度不足;503:模型未就绪(未扣费);504:超时,返回 charged=false、charge_units=0 并自动退费;500:内部异常。超时退费记账失败时返回 503 并提示管理员核账。其他已受理失败仍按现有规则扣 1 个额度,不要盲目重复提交。