OCR router API with per-request ocr_model
Set ocr_model on /parse and keep the same request shape, jobs API, and OpenParser document graph. Route to Paddle, Mistral, Azure, Google, or AWS Textract without changing client code.
GET /models/ocrSwitch among 9 OCR models with unified API
Set ocr_model on POST /parse. Paddle, Mistral, Azure, Google, and Textract return the same OpenParser blocks and markdown.
- PaddleOCR-VL 1.6paddleocr-vl-1.6
Open-weight hosted. General documents at the lowest page price.
ProviderBaidu / PaddlePricing / 1,000 pages$1OutputMarkdown + boxes - Mistral OCR 4mistral-ocr-4
Complex, visually rich docs when quality matters more than price.
ProviderMistralPricing / 1,000 pages$4.60OutputMarkdown + boxes - Mistral OCR 3mistral-ocr-3
Clean markdown without bounding-box regions.
ProviderMistralPricing / 1,000 pages$2.30OutputMarkdown - Azure DI Layoutazure-di-layout
Microsoft-centric deployments and layout-heavy enterprise PDFs.
ProviderMicrosoft AzurePricing / 1,000 pages$11.50OutputMarkdown + boxes - Azure DI Readazure-di-read
Search and indexing in Microsoft environments.
ProviderMicrosoft AzurePricing / 1,000 pages$1.73OutputPlain text + boxes - Google Enterprise Document OCRgoogle-docai-ocr
Google Cloud deployments needing structured OCR.
ProviderGoogle CloudPricing / 1,000 pages$1.73OutputMarkdown + boxes - AWS Textract Detectaws-textract-detect
Low-cost text detection for AWS-native pipelines.
ProviderAWSPricing / 1,000 pages$1.73OutputPlain text + boxes - AWS Textract Layoutaws-textract-layout
Headings, sections, and layout-aware reading order on AWS.
ProviderAWSPricing / 1,000 pages$4.60OutputMarkdown + boxes - AWS Textract Tables + Layoutaws-textract-tables-layout
Forms and financial docs with important tables in AWS.
ProviderAWSPricing / 1,000 pages$17.25OutputMarkdown + tables + boxes
Switch engines with ocr_model
Every model uses POST /parse, /parse/async, and /parse/batch. Change ocr_model. Auth, jobs, and response shape stay the same.
/parserequestcurl https://api.openparser.dev/parse \
-H "Authorization: Bearer op_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-F 'request={"ocr_model":"paddleocr-vl-1.6","output_format":"openparser@1"};type=application/json' \
-F "file=@statement.pdf"{
"output_format": "openparser@1",
"document_id": "doc_3f9a2c",
"page_count": 1,
"markdown": "## Payment Authorization\n| Item | Amount |\n| --- | --- |\n| Total | $4,318.20 |",
"blocks": [
{
"index": 0,
"page_number": 1,
"kind": "text",
"text": "## Payment Authorization"
},
{
"index": 1,
"page_number": 1,
"kind": "table",
"table_html": "<table><tr><th>Item</th><th>Amount</th></tr><tr><td>Total</td><td>$4,318.20</td></tr></table>",
"bbox": {
"left": 14,
"top": 53,
"right": 146,
"bottom": 123
},
"confidence": 0.98
}
],
"regions": [],
"contents": [],
"chunks": []
}Control plane for OCR routing
You authenticate once, poll the same jobs API, and read one OpenParser output. Each model lists its own page price.
One request shape
Multipart file plus JSON request body. Sync, async, and batch variants stay identical when you change engines.
Per-model page pricing
Each ocr_model lists its own page rate. Open-weight hosted models start at $1 per 1,000 pages. Mistral, Azure, Google, and AWS list higher rates.
Stable document graph
Document metadata, ordered blocks, text, and markdown share one contract. Downstream code reads the graph, not vendor JSON.
Discover models at runtime
GET /models/ocr returns ids, guidance, capabilities, option controls, and current retail page prices.
Jobs API unchanged
Poll /jobs the same way for every engine. Batch up to 100 documents without a provider-specific queue.
Extraction stays separate
Parse meters pages. Extract meters LLM tokens. Cite block indexes from whichever OCR model produced the graph.
Page rates follow the ocr_model you pick
New accounts get $10 in credits at signup, about 10,000 pages on open-weight hosted models at $1/1,000 pages. Mistral, Azure, Google, and AWS publish their own page rates on GET /models/ocr.
- Open-weight hosted from $1 / 1,000 pages
- $10 credits at signup
- Other models: published rates on /models/ocr
- Option surcharges listed per model
- Extraction billed per LLM token
OCR router FAQ
ocr_model values, page pricing, OpenParser output, and when to pick open-weight hosted vs cloud engines.
What is an OCR router?
You pick an OCR model id per request, keep the same endpoints, and receive the same OpenParser document graph.
How do I switch OCR providers?
Change the ocr_model field on parse or file-backed extract requests. Example ids: paddleocr-vl-1.6, mistral-ocr-4, azure-di-layout, google-docai-ocr, aws-textract-layout.
Does every model cost the same?
No. OpenParser-hosted open-weight models start at $1 per 1,000 pages. Mistral, Azure, Google, and AWS publish higher page rates. Check GET /models/ocr for live numbers. New accounts get $10 in free credits.
Does the output format change by model?
The response shape stays the same. Capability details differ: some models omit markdown or regions. The catalog marks those capabilities per id.
How do I list available OCR models?
Call GET /models/ocr, or openparser models ocr --json from the CLI, or client.models.ocr() in the TypeScript SDK.
When should I use open-weight hosted vs a cloud engine?
Start with open-weight hosted models like paddleocr-vl-1.6 for general documents and cost. Move to Mistral for richer visual docs, or Azure/Google/AWS when you need that vendor’s OCR behavior inside the same OpenParser integration.
Upload a PDF and switch ocr_model in Studio
Change ocr_model on the same file, inspect block kinds and markdown, and compare OpenParser output before you ship.