Document type

Passport OCR

Read passports through the machine-readable zone with checksum validation, or through the AI reader when the MRZ is not usable.

Can Mahad OCR read a Passport?

Available now. Read passports through the machine-readable zone with checksum validation, or through the AI reader when the MRZ is not usable. It returns surname, given_names; document_number; nationality, issuing_country and more as JSON. Input: PNG, JPG, PDF · up to 10 MB · MRZ must be visible for the free deterministic path. Limitation: Only the data page is read — visas inside the passport are separate documents.

Available now

Fields normally extracted

  • surname, given_names
  • document_number
  • nationality, issuing_country
  • date_of_birth, sex
  • expiry_date

Validation available

MRZ check digits are verified field by field; fields they prove are marked confirmed. A failed check digit marks the field ⚠ check it and sends the document to human review. Expiry is available for monitoring.

Example response

Synthetic example — not a real document.

{
  "status": "verified",
  "result": {
    "decision": "verified",
    "document_type": "passport",
    "values": { "surname": "ERIKSSON", "given_names": "ANNA MARIA", "document_number": "L898902C3", "date_of_birth": "1974-08-12", "expiry_date": "2027-04-15" },
    "field_evidence": { "surname": "corroborated", "document_number": "deterministic", "date_of_birth": "deterministic" },
    "review_reasons": []
  }
}

Supported formats

PNG, JPG, PDF · up to 10 MB · MRZ must be visible for the free deterministic path

Common business uses

  • Recruitment and visa processing
  • KYC and customer onboarding
  • Travel and immigration workflows
  • Workforce compliance records

Integration

POST https://api.mahadocr.com/v1/documents/upload

Integration guide →Passport OCR API: fields, API example, limits →

Limitations

Only the data page is read — visas inside the passport are separate documents. Mahad OCR does not verify a passport against any government database and performs no biometric face match.

Try it on your own document

Upload a passport in the live demo — the file is processed in memory and not stored.