DeepSeek-OCR is live on unoblox: turn document images into usable text
DeepSeek-OCR is now on unoblox. Turn document images into text or Markdown with an India-hosted model and rupee-native token pricing.
Your next AI feature might be stuck inside a screenshot.
A scanned page looks readable to a person. To your application, it can still be a rectangle of pixels. Before you can search it, index it or pass its contents to another model, you need the text.
DeepSeek-OCR is now available on unoblox. Send document images and receive text or Markdown through the same platform you use for your other AI calls. The model is self-hosted in India.
Images, bills, receipts, invoices — and handwritten notes
Bring your images, bills, receipts and invoices into the same image-to-text workflow. Try handwritten notes too: legibility and scan quality affect the result, so check the extraction against the original.
Turn the resulting text into searchable records, feed it into a retrieval pipeline, or pass it to your application for further processing.
DeepSeek-OCR gives developers the recognition step. Your application decides what happens next: index the extracted text, ask another model a question about it, or send it into an existing workflow.
For agencies, this means an OCR model to evaluate for client applications without hosting the model yourselves. For product teams, it is another capability available through unoblox.
What is available today
| Capability | Current catalogue listing |
|---|---|
| Model ID | deepseek-ai/deepseek-ocr |
| Input | Text and images |
| Output | Text / Markdown |
| Context window | 8,192 tokens |
| Deployment | Self-hosted in India |
| Displayed input rate | ₹1.00 per million tokens |
| Displayed output rate | ₹1.00 per million tokens |
Prices are the public model-page rates checked on 28 September 2026. Token pricing is not a fixed per-page quote. Document size and generated output affect usage; consult the live model page and billing documentation for current rates, platform fees and billing details.
Start with one document you keep retyping
Choose a representative document image. Use a non-sensitive sample for your first evaluation, and keep a manually checked version of the text beside it.
- Open the model page and copy
deepseek-ai/deepseek-ocr. - Follow the unoblox API reference to send an image with your OCR instruction. The API base URL is
https://api.unoblox.ai/v1. - Compare the extraction against the original, particularly names, numbers, punctuation and reading order.
- Check latency and billed usage before extending the test to more pages.
If your source is a scanned PDF, prepare page images for this image-input workflow. The listing does not establish direct PDF upload support. Tables, poor scans and complex layouts deserve their own evaluation before you automate downstream actions.
Try an image with cURL
Create an API key in your unoblox dashboard, then replace YOUR_UNOBLOX_API_KEY in the command below. Keep the key private. The example below uses a local PNG image, Python 3 and cURL. For a JPEG, change both the filename and MIME type to image/jpeg.
python3 - document.png image/png > ocr-request.json <<'PY'
import base64
import json
import pathlib
import sys
image = base64.b64encode(pathlib.Path(sys.argv[1]).read_bytes()).decode()
json.dump({
"model": "deepseek-ai/deepseek-ocr",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Convert this document to Markdown."},
{"type": "image_url", "image_url": {
"url": f"data:{sys.argv[2]};base64,{image}"
}}
]
}],
"temperature": 0,
"max_tokens": 2048,
"stream": False
}, sys.stdout)
PY
curl --fail-with-body https://api.unoblox.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_UNOBLOX_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @ocr-request.json \
--output ocr-response.json
python3 -c 'import json; r=json.load(open("ocr-response.json")); print(r["choices"][0]["message"]["content"])'
This uses the OpenAI-compatible image message format. It is an integration example, not a published accuracy benchmark. Inspect the response and finish_reason; a length finish can mean the output limit needs increasing within the model's context allowance. Local request files contain your encoded image, so handle them as you would the original document.
Starting from a PDF
For a scanned PDF, render a page to PNG first using Poppler's pdftoppm, then use the same cURL request above. This workflow sends a page image; it does not assume direct PDF upload support.
# Requires Poppler. Render the first page of document.pdf to document.png.
pdftoppm -f 1 -l 1 -r 150 -png -singlefile document.pdf document
# Now run the image example above with document.png.
For a multi-page document, render and process each page separately, retaining page order. Start with one page to check quality and usage before processing the rest. The sample needs to be validated on your own documents and account.
A useful building block for your next feature
The opportunity is bigger than copying text out of a picture. Once a document becomes usable text, your application can make it searchable and bring it into a wider AI workflow.
DeepSeek-OCR is the model capability. unoblox provides access. You build the experience around it.
Try one document your team keeps retyping.
Get started with DeepSeek-OCR on unoblox
References
More from unoblox
Blog
Building with AI? Count Thinking Tokens Before You Scale
Blog
Six Invoices. Qwen Matched Opus. Does Your Workflow Need a Premium Model?
Blog
From Alert to Action: Building Reliable NOC and SOC Automation with Jev
Blog
An AI Gateway: The Missing Layer Between Models and Developer Workflows
Blog
Use free Qwen3.8-27B in Claude Code with unoblox
Blog
Build a paper-trading review assistant with Jev and the unoblox API
Start building in rupees
Call every major model through one OpenAI-compatible endpoint, billed in ₹ on a GST invoice.