How doc.cheap compares
Every comparison page is written by the winner, so here is the deal: the prices below are the vendors' own published list prices, the units are named because they differ, and a speed or accuracy a vendor does not publish is marked as not published. If a row looks unfavourable to us, it is because it is.
Published prices read on .
The table
| Price per document | Billed when the scan fails? | First call without an account? | Encoded zone + printed fields | Speed | Accuracy | MCP server? | |
|---|---|---|---|---|---|---|---|
| doc.cheap | $0.01 flat, any volume; Free – 100 documents every month | No – a failed recognition is free | Yes – public sandbox key, 10 per IP | Both, compared field by field | 200 ms | 99.87% | MCP server, six tools |
| AWS Textract (Analyze ID) source | $0.025/page to 100k/mo, then $0.01/page (us-west-2) | Not published as a no-charge case | No – AWS account and IAM first | Extracts ID fields; zone/print comparison not published | Not published | Not published | No MCP server published |
| Google Document AI (passport parser) source | $0.10/document | Not published as a no-charge case | No – GCP project and billing first | Parser output; zone/print comparison not published | Not published | Not published | No MCP server published |
| Azure Document Intelligence (ID model) source | $10 per 1,000 pages, $0.01/page (Central US) | Not published as a no-charge case | No – Azure subscription first | Returns the encoded zone as one field; comparison not published | Not published | Not published | Not found on the vendor's pages |
| Mindee source | Credits from $0.05/document, +20% on overage | Not published as a no-charge case | No – account first | Extracts document fields; comparison not published | Not published | Above 95% for most fields (Mindee's figure) source | No MCP server published |
| Nanonets source | $0.30 per data-extraction run | Not published as a no-charge case | No – account first | Extracts passport fields; comparison not published | Not published | Not published | Not found on the vendor's pages |
| ID Analyzer source | $89/mo for 1,000 calls, then $0.12/call | Not published as a no-charge case | No – account first | Reads the encoded zone, barcode, chip or printed zone; comparison not published | 3 s from upload to decision, average (ID Analyzer's figure) source | 99.8% OCR (ID Analyzer's figure) source | Not found on the vendor's pages |
| Veriff source | $0.80/verification, $49/mo minimum | Not published as a no-charge case | No – account first | Extracts key ID fields; comparison not published | 6 s per verification, average (Veriff's figure) source | ~99.6% of decisions (Veriff's figure) source | Not found on the vendor's pages |
Prices are the vendors' published list prices read on 2026-09-25; Textract's figure is the us-west-2 rate and Azure's the Central US rate, and both differ by region. A competitor's speed and accuracy are its own published figures, linked where it publishes one. Re-check all of them before relying on this table – this is the kind of page that rots.
Vendors that quote a price only on request are not in the table: we will not publish a number we have not read. Open-source libraries and free projects are not in it either; this page compares paid services.
Read the units before you read the numbers
Some vendors bill by the page, we bill by the document. A passport data page is one page and one document, so for that case the two units coincide – but a multi-page document is one document here and several pages there, and the comparison stops being like-for-like immediately. Where a vendor's unit is the page, the table says so.
The second difference is what a failure costs. Here, a scan that finds no document, cannot read the image, or cannot identify the type is answered and not charged, and a billed flag on every response says which it was. We have not found a published equivalent rule at the others; treat their cells as “read the current terms”, not as “they charge you”.
Where we are ahead
- Price, for the identity-document case. 1¢ per document. Same price for everyone, at any volume – the first document and the ten-millionth cost the same. Beyond 100,000 pages a month Textract's rate meets ours rather than exceeding it, and Azure's prebuilt ID model lists the same rate by the page.
- A failed scan is free, and the response tells you.
- You can call it before you have an account. No cloud project, no IAM role, no billing setup, no card: a sandbox key printed in the documentation.
- Both zones, compared. Every field is read from the machine-readable zone and from the printed visual zone separately, each with its own confidence, so a disagreement between the encoded date of birth and the printed one is visible. Check digits are verified against ICAO Doc 9303.
- Native script beside the Latin. Values in Greek, Arabic, Han, Hangul or Thai come back in their own script, tagged with their language, not flattened to ASCII.
- Retention you control. The image is never written to disk. A result is kept for the retain_hours a request names or, without them, for the account's own setting – one year until you change it – and retain_hours: 0 stores nothing.
- Speed you can check. About 200 ms of recognition time per document, every response carrying its own timing split, and the live figure published on the status page.
- An MCP server, so an assistant calls the API directly with six tools and no SDK in between.
Same price for everyone, at any volume – the first document and the ten-millionth cost the same. The first call needs no account, the billing rules are published in full, and the MCP server is the same recognition reached by an assistant.
To see what it returns before you choose, the doc.cheap Passport and ID OCR API has a live demo on its home page, and the free MRZ parser recomputes a zone's check digits in your browser.