OCR 文字识别
POST /v1/recognize 图片/PDF 文字识别,multipart 上传,支持多 OCR provider。
无界模型云提供 OCR 文字识别能力:上传图片或 PDF,返回结构化的识别文本与版面块(blocks)。接口形态为 multipart/form-data 上传,后端可路由到多个 OCR 号源。
私有化部署 API 完全一致,仅需替换 Base 域名 → 企业私有化部署。
概览
- 接口:
POST https://ai.tos.run/v1/recognize,multipart/form-data。 - OCR provider:
paddleocr、volcengine(火山)、aliyun(阿里)。具体启用哪个号源、默认号源以控制台为准。
鉴权与 Base
- Host:OCR 在 master host
https://ai.tos.run上提供——数据面api.tos.run没有对应的 OCR 路径,curl / SDK 直接打到ai.tos.run。 - 鉴权头:
Authorization: Bearer $TOS_API_KEY,Key 以gk_开头。 - scope:需要
ai:ocr(创建 Key 时勾选;ai:*通配亦可)。
详见 鉴权。
字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | file | 是 | 待识别的图片或 PDF 文件 |
scene | string | 否 | 识别场景,默认 general;可选 general / document / receipt / idcard |
language | string | 否 | 识别语言,默认 zh-CN |
format | string | 否 | 文件格式,不传时由文件名后缀 / MIME 推断 |
- 支持格式:
png/jpg(jpeg会规整为jpg)/webp/bmp/pdf。 - 图片上限 50MB,超过会返回 400。
请求示例
curl "https://ai.tos.run/v1/recognize" \
-H "Authorization: Bearer $TOS_API_KEY" \
-F "image=@invoice.png" \
-F "scene=document" \
-F "language=zh-CN"import os
import requests
with open("invoice.png", "rb") as f:
resp = requests.post(
"https://ai.tos.run/v1/recognize",
headers={"Authorization": f"Bearer {os.environ['TOS_API_KEY']}"},
data={"scene": "document", "language": "zh-CN"},
files={"image": ("invoice.png", f, "image/png")},
timeout=120,
)
resp.raise_for_status()
data = resp.json()
print(data["text"])import fs from "node:fs";
const form = new FormData();
form.set("scene", "document");
form.set("language", "zh-CN");
form.append("image", new Blob([fs.readFileSync("invoice.png")]), "invoice.png");
const resp = await fetch("https://ai.tos.run/v1/recognize", {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.TOS_API_KEY}` },
body: form,
});
const data = await resp.json();
console.log(data.text);响应
返回 JSON:text 是拼接好的整页文本,blocks 是带坐标的版面块;多页文档(如 PDF)会给出 page_count 与逐页结果 pages。
{
"text": "发票代码:031001900111\n金额合计:¥1,280.00",
"blocks": [
{ "text": "发票代码:031001900111", "box": [10, 12, 220, 40], "score": 0.99 }
],
"page_count": 1,
"pages": [
{ "text": "...", "blocks": [] }
]
}不同 OCR 号源返回的 blocks 坐标精度、score 字段可能略有差异;如对版面坐标有严格要求,建议固定使用同一号源并在控制台核对。
错误处理
400:参数错误、文件为空、格式不支持、超过 50MB,或图片无法识别(invalid_image)。429:触发限流,响应头可能带retry-after。502/504:上游 OCR 号源错误或超时。