per 1M tokens
DeepSeek OCR 2
novita/deepseek/deepseek-ocr-2
DeepSeek-OCR 2 is a multimodal document recognition model released by DeepSeek AI, serving as an upgrade to DeepSeek-OCR. By introducing the DeepEncoder V2 architecture, it achieves a paradigm shift in visual encoding from "fixed scanning" to "semantic reasoning." The model replaces the original CLIP encoder with a lightweight language model (Qwen2-0.5B) and incorporates a causal flow query mechanism, while retaining the DeepSeek-3B-MoE decoder. The model requires only 256 to 1120 visual tokens to cover complex document pages. On the OmniDocBench v1.5 benchmark, it achieves an overall score of 91.09%, a 3.73% improvement over its predecessor, with reading order recognition edit distance reduced from 0.085 to 0.057.
Price
per 1M tokens
Providers
Each row is one seller. Prices are the published rate from that source. A dash means that source did not publish the amount. Sorted by a 3:1 blend of input and output.
| Provider | Tag | Quant | Input | Output | Context | Uptime | Status | Source |
|---|---|---|---|---|---|---|---|---|
| Novita | — | — | $0.03/1M | $0.03/1M | 8K | — | Listed | novita |
Monthly bill
Token models use the token counts. Image, video, and audio models use units times the flat rate.
$0.06 at list price for this workload
Every rate
| Unit | Input | Output | Flat | Confidence |
|---|---|---|---|---|
| token | $0.03/1M | $0.03/1M | Not published— | official |
Price history
input or flat output
Daily snapshots
| UTC date | Unit | Input | Output | Flat |
|---|---|---|---|---|
| 2026-10-08 | token | $0.03 | $0.03 | Not published— |
| 2026-10-09 | token | $0.03 | $0.03 | Not published— |
| 2026-10-10 | token | $0.03 | $0.03 | Not published— |
| 2026-10-11 | token | $0.03 | $0.03 | Not published— |
| 2026-10-12 | token | $0.03 | $0.03 | Not published— |
| 2026-10-13 | token | $0.03 | $0.03 | Not published— |
| 2026-10-14 | token | $0.03 | $0.03 | Not published— |
| 2026-10-15 | token | $0.03 | $0.03 | Not published— |
| 2026-10-16 | token | $0.03 | $0.03 | Not published— |
| 2026-10-17 | token | $0.03 | $0.03 | Not published— |
| 2026-10-18 | token | $0.03 | $0.03 | Not published— |
| 2026-10-19 | token | $0.03 | $0.03 | Not published— |
| 2026-10-20 | token | $0.03 | $0.03 | Not published— |
| 2026-10-21 | token | $0.03 | $0.03 | Not published— |
| 2026-10-22 | token | $0.03 | $0.03 | Not published— |
| 2026-10-23 | token | $0.03 | $0.03 | Not published— |
| 2026-10-24 | token | $0.03 | $0.03 | Not published— |
| 2026-10-25 | token | $0.03 | $0.03 | Not published— |
| 2026-10-26 | token | $0.03 | $0.03 | Not published— |
| 2026-10-27 | token | $0.03 | $0.03 | Not published— |
| 2026-10-28 | token | $0.03 | $0.03 | Not published— |
| 2026-10-29 | token | $0.03 | $0.03 | Not published— |
| 2026-10-30 | token | $0.03 | $0.03 | Not published— |
Alternatives
- inference-net/schematron-v2-turbo$0.03/1M · Compare
- Inference.net: Schematron V2 Turbo$0.03/1M · Compare
- openai/gpt-oss-20b$0.03/1M · Compare
- Perplexity: Embed V1 4B$0.03/1M · Compare
- Qwen: Qwen3.7 Flash$0.03/1M · Compare
- OpenAI: gpt-oss-120b (batch)$0.0296/1M · Compare
Call this model
OpenRouter id novita/deepseek/deepseek-ocr-2. InferenceList does not send the request.
curl
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"novita/deepseek/deepseek-ocr-2","messages":[{"role":"user","content":"Hello"}]}'
JavaScript
await fetch("https://openrouter.ai/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.OPENROUTER_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "novita/deepseek/deepseek-ocr-2",
messages: [{ role: "user", content: "Hello" }],
}),
});
Python
import os, json, urllib.request
req = urllib.request.Request(
"https://openrouter.ai/api/v1/chat/completions",
data=json.dumps({"model": "novita/deepseek/deepseek-ocr-2", "messages": [{"role": "user", "content": "Hello"}]}).encode(),
headers={"Authorization": "Bearer " + os.environ["OPENROUTER_API_KEY"], "Content-Type": "application/json"},
)
print(urllib.request.urlopen(req).read().decode())