Read any document.
Speak any text.
On your hardware.
FastVision AI is the OCR + Text-to-Speech API for teams that can't ship their data to someone else's cloud. PaddleOCR and DocTR for documents, Piper for speech — deployed on infrastructure you control, behind one clean REST API.
- No third-party AI APIs
- 100 pages free every month
- Deploys with docker compose
POST /api/v1/ocr/image · doc_type=receiptreceipt_0704.png
result.json
Processing documents for privacy-first teams
- Northbeam Health
- Ledgerline
- Casaverde Bank
- Aerofreight
- Quill & Co.
- Statlas Analytics
- Harbor Legal
- Mombasa Pay
One API, two engines
Everything OCR. Everything TTS.
Nothing leaves your network.
A complete document-and-speech pipeline: extraction with layout awareness on one side, natural neural voices on the other.
Document OCR that understands structure
PaddleOCR primary, DocTR fallback, OpenCV preprocessing — deskew, denoise, binarize — before a single character is read. Purpose-tuned extraction for seven document types:
- generic
- receipt
- invoice
- passport
- id_card
- bank_statement
- business_card
Handwriting
Receipts & invoices
Passports & IDs
Bounding boxes
[x1, y1, x2, y2] coordinates and a per-block confidence score. Build highlighters, redactors, review UIs.Searchable PDF
outputs=pdf and get the original document back with an invisible text layer — Cmd+F just works. JSON and TXT come along for free.Multi-language OCR
languages=en,de,zh and mix scripts within a single document.Neural TTS in 9 languages
Piper voices with natural prosody, running entirely on your CPU or GPU:
- English
- Spanish
- French
- German
- Portuguese
- Italian
- Dutch
- Polish
- Chinese
Streaming audio
POST /stream returns chunked WAV as it is synthesized — first audible byte in milliseconds, ideal for voice agents.
SSML control
How it works
From raw pixels to structured data in four hops
Async by design: your request returns instantly, workers do the heavy lifting, and a webhook closes the loop.
Upload
One multipart request to /ocr/image, /ocr/pdf or /tts. The API answers in milliseconds with a 202 and a job id — heavy lifting happens off the request path.
POST /api/v1/ocr/pdf → 202 { id, status: "queued" }Preprocess
OpenCV normalizes the input: deskew, denoise, contrast, binarization. Bad scans become readable before recognition starts.
deskew → denoise → adaptive thresholdRecognize
PaddleOCR reads text with layout awareness; DocTR steps in as a fallback. TTS jobs go to Piper. Dedicated Celery queues keep OCR and TTS from starving each other.
queue: ocr · engine: paddle · priority: 5Deliver
Structured JSON with bounding boxes, plain text, searchable PDF or audio land in storage. A signed job.completed webhook tells your app the moment it's done.
X-FastVision-Signature: sha256=…Developer experience
Your first extraction
in five lines
Authenticate with an API key, POST a file, poll or wait for the job. Six official SDKs wrap the same REST surface — or just use cURL.
curl -X POST https://api.fastvision.example/api/v1/ocr/image \ -H "X-API-Key: fv_live_yourkeyhere" \ -F "file=@receipt.png" \ -F "doc_type=receipt" \ -F "languages=en" \ -F "outputs=json,txt,pdf"# → 202 Accepted# { "id": "9f4c…", "type": "ocr", "status": "queued", … }Loved by regulated teams
The teams who can't use cloud AI use FastVision
Healthcare, fintech, legal, government — anywhere the documents are the sensitive part.
“We process 40,000 patient intake forms a month and none of them can leave our VPC. FastVision replaced a manual data-entry team and a compliance headache in the same quarter.”
“The bounding boxes are the killer feature. We built a human-review UI on top of the block coordinates in a week — reviewers only touch the fields the model was unsure about.”
“Piper streaming through the /stream endpoint gives our IVR first audio in under 300 ms — on a CPU box. We turned off our cloud TTS vendor and our bill dropped 90%.”
Own your document pipeline.
Start scanning tonight.
100 OCR pages and 10,000 TTS characters free, every month. No credit card, no sales call, no data leaving your stack.
docker compose up · first extraction in ~5 minutes