Self-hosted 4B vision-language model that reads scanned documents, receipts, invoices, forms, screenshots, charts and photos of text in 30+ languages and returns the text, the fields or a table - OCR, transcription and document understanding of an attached image without it leaving the deployment. It reads pictures; it does not create them.
Executable through /v1/chat/completions On Prem boundary PII allowed Tool calling
Requests per day this target answered on this deployment, with the cost line.
requests (peak 1)
failed
cost
Tokens
900
Spend
$0.0001
Previous window
0 req
Routed for
Domains the signal layer detected on requests that ended here.
General1 · 100%
Capabilities
DomainsGeneral, Finance, Legal, Customer Support, Data Analysis
ActionsExtract, Image
Complexity band0.00 - 0.60
Languages*
Context window256K tokens
Streamingyes
Policy constraints
Hard stops enforced before scoring.
Data boundaryOn Prem
Regionsanywhere
PIIallowed
Max input tokensunlimited
Tenantsall
Representative prompts
Examples the similarity strategy matches against.
Read this scanned invoice image and extract the vendor, invoice number, total and due date.
OCR this photo of a receipt and list every line item with its price.
Transcribe the text in this screenshot exactly.
Extract the table from this scanned PDF page as CSV.
Read the handwritten notes in the attached picture.
Call it
Pin this target with model="vision-ocr", or send a candidate list and let the router choose and fall back.
curlbash
curl https://api.opensmartroute.ai/v1/chat/completions \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "vision-ocr", "messages": [{"role": "user", "content": "Read this scanned invoice image and extract the vendor, invoice number, total and due date."}]}'
OpenAI SDKpython
from openai import OpenAI
client = OpenAI(base_url="https://api.opensmartroute.ai/v1", api_key="osr_live_...")
resp = client.chat.completions.create(
model="vision-ocr", # pin this target, or "auto" to let the router choose
messages=[{"role": "user", "content": "Read this scanned invoice image and extract the vendor, invoice number, total and due date."}],
extra_body={"models": ["vision-ocr", "auto"]}, # fall back to the router's pick if it fails
)
print(resp.model, resp.choices[0].message.content)