Documentazione dell’API di Xiaomi-OCR-0
Crea una chiave nella pagina delle chiavi API e inviala come token Bearer nell’intestazione Authorization. Chiavi API
POST /api/v1/ocr
mode:page(un’immagine in Markdown),pdf(ogni pagina del PDF in Markdown, fino a 20 pagine),kie(campi in JSON),vqa(domanda con risposta breve).file: data URL in base64: PNG, JPEG o WebP fino a 10 MB; PDF fino a 25 MB in modalità pdf.fields: elenco facoltativo di nomi di campo per kie.question: obbligatorio per vqa.
Fatturazione
1 credito = 1 pagina. Un PDF usa 1 credito per pagina; un’immagine usa 1 credito per OCR di pagina, estrazione di campi o una domanda. Le pagine non riuscite vengono rimborsate nella stessa risposta, indicate in credits.refunded e nell’intestazione X-OCRZero-Credits-Refunded. Vedi i prezzi
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: campi di fattura in 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: da PDF a 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"])Risposta
{
"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
}Le tabelle vengono restituite come HTML nel Markdown e le formule in LaTeX, convertite con il post-processing ufficiale di Xiaomi-OCR-0.
Errori
401chiave API mancante o non valida.402crediti insufficienti per le pagine della richiesta.413file troppo grande;422richiesta non valida o file illeggibile.429limite di richieste raggiunto;502/503server del modello non disponibile. I crediti vengono restituiti.
Xiaomi-OCR-0 è open source con licenza Apache-2.0. OCRZero è indipendente e non affiliato a Xiaomi.