同一套接口就能做万能识别,不用换地址。
英文和数字用 question「识别图中文本」,返回的 msg 是图里的字母或数字。问答用「回答图中问题」,msg 是答案。点选用「框出正确位置」,msg 是坐标。本地图片先转成 base64,不要带 data:image 前缀,再 POST JSON。keyCode 从控制台复制。免费模型用来先测通,正式调用换成普通模型。
import base64
import requests
API = "http://ai.xinyuocr.xyz/api/qrcode/predict"
# question:
# 识别图中文本 英文和数字
# 回答图中问题 问答
# 框出正确位置 点选,坐标在 msg
# modelName: 免费模型先测,普通模型正式用
# base64 不要带 data:image/...;base64, 前缀
# 控制台:ai.xinyuocr.xyz 登录后复制 keyCode
def predict(image_path, key_code, question="识别图中文本", model_name="普通模型"):
with open(image_path, "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
payload = {
"base64Image": image_b64,
"modelName": model_name,
"keyCode": key_code,
"question": question,
}
data = requests.post(API, json=payload, timeout=60).json()
if data.get("errCode") != 0:
return data.get("err")
return data.get("msg")
if __name__ == "__main__":
print(predict("demo.png", "YOUR_KEYCODE"))
errCode 为 0 才算成功,文本或坐标都在 msg,失败原因在 err。返回 2003 时先等一会再请求,不要立刻重试。查余额走同一主机的 /api/qrcode/balance?keyCode=YOUR_KEYCODE,用 success 判断,付费余额看 money,积分看 freeMoney。