Skip to main content
ID Document OCR · Live

Every ID card, parsed in about 20 seconds.

Drop an ID — front, back, or both — and get back structured JSON with every field in both scripts, confidence scores, and validation status. No setup required.

The response

One call in, one document out.

A clean JSON envelope with every field, a per-field confidence score, an MRZ checksum result, and a request id you can quote in support tickets.

  • Document number
  • Card number
  • Last name
  • First name
  • Full name (native)
  • Gender
  • Nationality
  • Date of birth
  • Place of birth
  • Issue date
  • Expiry date
  • Issuing authority
  • Mother name
  • Father name
  • Spouse name
response.json
{
  "success": true,
  "request_id": "req_a3f19c…",
  "latency_ms": 19840,
  "fields": {
    "document_number": { "value": "784-1985-1234567-1", "confidence": 99.6, "band": "verified" },
    "last_name":       { "value": "AL SAADI",           "confidence": 99.1, "band": "verified" },
    "first_name":      { "value": "AHMED",              "confidence": 99.0, "band": "verified" },
    "full_name_native":{ "value": "أحمد محمد السعدي",    "confidence": 97.0, "band": "verified" },
    "nationality":     { "value": "United Arab Emirates","confidence": 99.0, "band": "verified" },
    "date_of_birth":   { "value": "1985-03-15",         "confidence": 99.9, "band": "verified" },
    "expiry_date":     { "value": "2030-01-01",         "confidence": 99.8, "band": "verified" },
    "mrz_valid":       { "value": true,                 "confidence": 100,  "band": "verified" }
  },

  // Added only when you request a target language (here: language=French).
  // The English "fields" above never change. "native" is the value exactly as
  // printed on the card — the ORIGINAL native script — and "translatory" its translation.
  "translation": {
    "fields": {
      "last_name":     { "label": "Nom",              "native": "السعدي",  "translatory": "AL SAADI",             "band": "verified" },
      "first_name":    { "label": "Prénom",           "native": "أحمد",    "translatory": "AHMED",                "band": "verified" },
      "nationality":   { "label": "Nationalité",      "native": "الإمارات العربية المتحدة", "translatory": "Émirats arabes unis", "band": "verified" },
      "date_of_birth": { "label": "Date de naissance", "native": "1985-03-15", "translatory": "15/03/1985",        "band": "verified" }
    }
  }
}
Why teams pick OnPoint

Designed for the hardest 1% of IDs.

Most OCRs handle clean scans. We're built for glare-flecked phone shots, laminated cards, bilingual layouts, and holograms that bleed across the text — any country, any script.

Every field, both scripts

Name, ID number, nationality, dates, issuing authority, parents — returned in a single response, each in Latin and its native script (Arabic, Cyrillic, CJK…) exactly as printed.

About 20 seconds, synchronously

Around 20 seconds end to end, measured on production traffic. No queueing, no warmup — built for synchronous KYC.

MRZ checksum validation

TD1, TD2 and TD3 machine-readable zones are auto-detected and every check digit is verified per ICAO 9303. No MRZ? The visual zone is read with the same care.

Front + back intelligent merge

Drop both sides in any order. The visual zone and MRZ are reconciled across sides into one authoritative value per field, and conflicts are surfaced.

Per-field confidence scores

Five confidence bands per field, not per document. Auto-route the one uncertain field to a reviewer instead of failing the whole call.

Images never stored · results purged in 30 days

The document image is processed in memory and never written to disk. The extracted fields are kept for up to 30 days so they appear in your extraction history, then purged — and purged immediately if you delete your account.

Coverage

If it's an ID, we read it.

A universal pipeline benchmarked continuously against fresh in-the-wild documents from every region. Any issuing country, any written script, front and back — one integration.

200+ ID templates
Any issuing country
Any written script
National IDs & civil cards
Residence & work permits
PDF + JPG + PNG + HEIC
Try it on us

2 free instantly. 5 with a free account. No card.

Test the full production API end-to-end before you ever talk to billing. It's the same credit that runs passports — one balance, both services. Volume pricing kicks in automatically when you keep going.

Put it in front of real customer IDs.

One API key, every government-issued ID, in production this afternoon.