Upload / OCR

Try the service. Uses the same API as everyone else, so you need an API key.

(result appears here)

API Docs

Base URL: · one endpoint, bearer-key auth.

POST /v1/ocr

Multipart form. Header Authorization: Bearer <key>. Max image 10 MB.

FieldRequiredMeaning
fileyesimage (png, jpg, webp, …)
enginenotesseract (default) or rapidocr
modenono-ai (default) · ai-direct (vision LLM reads the image) · ai-verify (engine reads first, LLM checks)
langnoTesseract language codes, e.g. eng, chi_sim+eng (default eng)
hintsnoJSON string: {"expect":"digits|amount|date|alnum|text","pattern":"AAA9999A","decimals":2}. pattern: A = letter, 9 = digit, other characters literal. Hints fix look-alike characters (0/O, 1/I, 5/S, 8/B) and layout of amounts and dates.

Response (200)

{
  "text": "RM 12,345.67",
  "confidence": null,        // 0..1, or null when the engine gives none
  "engine": "tesseract",     // or "llm:<model>" when an AI mode answered
  "mode": "no-ai",
  "spans": [],
  "fallback": null,          // "budget" | "no-key" | "llm-error:…" when an AI mode fell back to the plain engine
  "cost_usd": 0.0,
  "ms": 412
}

Errors: 400 bad image/params · 401 missing or invalid key · 413 image too large.

Example


  

Privacy and limits

GET /health

No auth. Returns engine list, whether AI is enabled, and this month's AI spend vs cap.

Status

loading…