OCRZero

Xiaomi-OCR-0 API 文档

在 API 密钥页面创建密钥,并在 Authorization 请求头中以 Bearer 令牌发送。 API 密钥

POST /api/v1/ocr

  • mode: page (单张图片转 Markdown), pdf (PDF 每页转 Markdown,最多 20 页), kie (字段转 JSON), vqa (提问得到简短答案).
  • file: base64 data URL:PNG、JPEG 或 WebP 最大 10 MB;pdf 模式下 PDF 最大 25 MB。
  • fields: kie 模式可选的字段名列表。
  • question: vqa 模式必填。

计费

1 积分 = 1 页。PDF 每页 1 积分;图片用于页面 OCR、字段提取或提问时各用 1 积分。失败的页面会在同一响应中退回,显示在 credits.refunded 和 X-OCRZero-Credits-Refunded 响应头中。 查看价格

cURL

curl --fail-with-body https://ocrzero.com/api/v1/ocr \
  -H "Authorization: Bearer $OCRZERO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"page","file":"data:image/png;base64,'"$(base64 < page.png | tr -d '\n')"'"}'

Python:发票字段转 JSON

import base64, os, requests

with open("invoice.jpg", "rb") as f:
    data = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

r = requests.post("https://ocrzero.com/api/v1/ocr",
    headers={"Authorization": f"Bearer {os.environ['OCRZERO_API_KEY']}"},
    json={"mode": "kie", "file": data, "fields": ["invoice_number", "total_amount"]})
r.raise_for_status()
print(r.json()["json"])

Python:PDF 转 Markdown

import base64, os, requests

with open("report.pdf", "rb") as f:
    data = "data:application/pdf;base64," + base64.b64encode(f.read()).decode()

r = requests.post("https://ocrzero.com/api/v1/ocr",
    headers={"Authorization": f"Bearer {os.environ['OCRZERO_API_KEY']}"},
    json={"mode": "pdf", "file": data}, timeout=600)
r.raise_for_status()
body = r.json()
print(body["credits"], body["failedPages"])
open("report.md", "w").write(body["markdown"])

响应

{
  "object": "ocr.result",
  "model": "xiaomi-ocr-0",
  "id": "4b7c…",
  "mode": "pdf",
  "markdown": "<!-- page 1 -->\n\n# Annual report …",
  "pages": 12,
  "totalPages": 12,
  "failedPages": [],
  "credits": { "charged": 12, "refunded": 0 },
  "usage": { "prompt_tokens": 25824, "completion_tokens": 9310, "total_tokens": 35134 },
  "latency_ms": 18450
}

表格以 HTML 形式嵌入 Markdown,公式以 LaTeX 返回,均使用官方 Xiaomi-OCR-0 后处理转换。

错误

  • 401 缺少或无效的 API 密钥。
  • 402 积分不足以支付请求中的页数。
  • 413 文件过大; 422 请求无效或文件无法读取。
  • 429 请求过于频繁; 502/503 模型服务器不可用,积分会退回。

Xiaomi-OCR-0 以 Apache-2.0 开源。OCRZero 是独立服务,与小米无关联。