ID Card and Passport Reader
A passport becomes fields — and the check digits say whether the read is right.
VisionParse reads a passport or identity card into named fields — number, names, nationality, dates — and then checks its own work against the document’s check digits.
The machine-readable zone is not just text. ICAO 9303 puts a check digit after the document number, the date of birth and the expiry date, plus a composite digit over the whole line, each a weighted sum. We recompute all of them. Across two specimen documents in four conditions each, 60 of 60 fields came back correct and 32 of 32 check digits agreed — and when a single character is altered, the checker says so instead of passing it on.
- AI tier · 1 credit a document
- JPG · PNG · WEBP · PDF
- Photos auto-compressed · PDF to 25 pages
- Deleted within 1h
What this tool does, in numbers.
- ACCURACY
60 of 60 fields correct across two specimen documents in four conditions each, with 32 of 32 check digits agreeing.
- PRIVACY
A corrupted document number is caught by the check digit rather than returned — the reason this tool is willing to read identity documents at all.
- LIMIT
Check digits cover the number and the dates. Names carry no check digit in the format, so those are read but not verifiable.
- SPEED
A passport photograph returns fields and a verdict in about two seconds.
- COST
One AI credit a document, the same in the browser as over the API.
- ACCESS
Needs an account with AI credits: every paid plan includes them monthly, or a one-time pack adds them without a subscription.
- RETENTION
The uploaded document is deleted within an hour and the fields within 30 days; nothing trains a model.
Where the 60 of 60 fields, 32 of 32 check digits comes from.
Every figure on this page traces to a dated run on hardware we name. Nothing here is a vendor estimate.
Measured 2026-08-06
- Claim
- The read is verified, not asserted: every check digit the format carries is recomputed, and a single altered character fails them.
- Method
- AI extraction tier (gemini-3.5-flash-lite) with ICAO 9303 check-digit verification. Full methodology.
- Sample
- Two specimen documents built for this test — a TD3 passport and a TD1 identity card, entirely invented people, check digits computed by the ICAO rule — each read clean, photographed at an angle under uneven light, at 700 pixels wide, and blurred. Plus a negative control: one character of the document number altered, to confirm the checker fails when it should.
- Measured
2026-08-06on Contabo Cloud VPS 8 — 8 vCPU AMD EPYC, 24 GB RAM, Ubuntu 24.04.4- Limitations
- Both are our own specimens, printed in a monospaced font rather than the OCR-B of a real passport, and neither carries holograms, security printing or a photo page’s texture. Real passports vary by issuer and wear; measure yours before relying on this. Names are not covered by any check digit in the format.
- Contact
- VisionParse@senithu.lk
What this tool gets wrong
A single altered character fails the check, every time. This is the property that matters. Change one digit of the document number and both the number’s own check digit and the composite digit over the whole line disagree — the read is refused rather than returned looking plausible. A check that cannot fail is not a check, so the failing case is tested as deliberately as the passing one.
Names are read but cannot be verified. ICAO puts check digits over the number, the dates and the composite line — not over the name field. So a surname comes back read but unverified, and we say so rather than letting a green tick imply otherwise. Where the name matters legally, it needs a human eye.
Our specimens are not real passports. The fixtures are invented people printed in a monospaced font, with correct check digits but none of a real document’s OCR-B type, security printing, holograms or wear. That makes them a fair test of the arithmetic and an optimistic test of the reading. Send real documents — with a lawful reason to process them — and we measure before you rely on it.
Three steps, no account.
Photograph the document
The page with the machine-readable zone at the bottom. JPG, PNG, WebP or PDF; angled and low-resolution photos both measured fine.
The fields come back with the zone
Number, names, nationality, dates and sex, plus the MRZ lines exactly as printed — because a tidied line cannot be checked.
Read the verdict, not just the fields
Every check digit the format carries is recomputed. Agreement means the number and dates were read correctly; a disagreement names which one is wrong.
What this tool accepts.
| Property | Free tool |
|---|---|
| Engine | AI extraction tier + ICAO 9303 check digits, 1 credit per document |
| Measured result | 60 of 60 fields, 32 of 32 check digits, two documents × four conditions (2026-08-06) |
| Formats | TD3 passport (2×44) and TD1 identity card (3×30) |
| Verified | Document number, date of birth, expiry, personal number, composite |
| Not verified | Names — the format carries no check digit over them |
| Output | Named fields, the MRZ lines as printed, and a per-digit verdict |
| Access | Account with AI credits — any paid plan, or a one-time pack |
| File retention | Originals deleted within 1 hour; results within 30 days |
When to use the API instead.
This page converts one file now. To convert files from your own software, the same engine runs over HTTP from Starter upward.
# same engine, from your code curl -X POST https://api.visionparse.app/v1/ocr \ -H "x-api-key: $VISIONPARSE_KEY" \ -F "file=@image.jpg" → 202 { "jobId": "c0df8e2c…" }
Use the API when
You convert more than a few files, convert on a schedule, or need results inside another system. Batch, webhooks and bounding boxes are API-only.
Frequently asked
How do I know the passport number was read correctly?
Because the document tells us. The machine-readable zone carries a check digit after the number, computed by a weighted sum defined in ICAO 9303, and we recompute it. If our read of the number and the printed check digit disagree, you are told which field is wrong instead of being handed a plausible-looking number. That is the entire reason we are willing to read identity documents.
What is not verified?
The names. The format simply does not carry a check digit over the name field, so a surname is read but unverifiable — and we say so rather than showing a tick that covers more than it should. Numbers and dates are covered.
Were these tested on real passports?
No, and the page will not pretend otherwise. The specimens are invented people printed in a monospaced font with correctly computed check digits — a fair test of the arithmetic, an optimistic test of the reading, because real documents have OCR-B type, security printing and wear. Send real ones, with a lawful basis for processing them, and we will measure properly.
What happens to the document I upload?
It is deleted within an hour of processing and the extracted fields within 30 days, and nothing you send ever trains a model. Identity documents deserve the shortest retention we offer, and that is the same one every file on this site gets.
Can I use this for KYC or onboarding?
The reading and the check digits are the mechanical half, and they are measured. The rest — lawful basis, consent, retention rules, sanctions screening, liveness — is your obligation and not something a document reader provides. We can tell you whether the number was read correctly, not whether you are allowed to hold it.