OCRZero

Xiaomi-OCR-0 API 문서

API 키 페이지에서 키를 만들고 Authorization 헤더에 Bearer 토큰으로 보내세요. API 키

POST /api/v1/ocr

  • mode: page (이미지 1장을 Markdown으로), pdf (PDF 각 페이지를 Markdown으로, 최대 20페이지), kie (필드를 JSON으로), vqa (질문에 짧은 답변).
  • file: base64 data URL: PNG, JPEG, WebP는 최대 10MB, pdf 모드의 PDF는 최대 25MB.
  • 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
}

표는 Markdown 안의 HTML로, 수식은 LaTeX로 반환되며 공식 Xiaomi-OCR-0 후처리로 변환됩니다.

오류

  • 401 API 키가 없거나 유효하지 않습니다.
  • 402 요청한 페이지 수에 비해 크레딧이 부족합니다.
  • 413 파일이 너무 큽니다; 422 잘못된 요청이거나 파일을 읽을 수 없습니다.
  • 429 요청 한도 초과; 502/503 모델 서버를 사용할 수 없습니다. 크레딧은 반환됩니다.

Xiaomi-OCR-0는 Apache-2.0 오픈소스입니다. OCRZero는 독립 서비스로 Xiaomi와 제휴하지 않았습니다.