DeepSeek OCR-2 Demo
Extract text from documents with state-of-the-art vision AI running on a Modal serverless GPU.
Upload
Drag & drop a PDF or image
Or click to choose a file (PDF, PNG, JPG).
Or try an example:
?
No file selected
Select a file or try an example
Prompt
PDF settings
These apply only to PDFs.
Streaming output
Upload a file to start.
Prompt CompatibilityHover cells to check prompt/example fit
Prompt compatibility matrix
Hover a cell to see the rationale. Click to inspect the captured output.
Evaluated36/36
Generated2026-01-28T02:42:04.360575+00:00
Examples \ Prompts
Free
Ocr
Document
Image
Figure
General
Rec
📰Newspaper
📄Academic
📊Slides
📋Tables
🖼️Photo w/ Text
🏞️Scene
Green: stable Yellow: partial Red: loop/failure Not evaluated
API UsageUse programmatic access with any OpenAI-compatible SDK
Use the OpenAI client with a custom base URL and API key to access the DeepSeek OCR-2 model. This is an honor system. Please limit your concurrency (10 is ok) and try not to overload the free demo server.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "whale",
baseURL: "https://deepseek-ocr-v2-demo.vercel.app/api/v1",
});
const resp = await client.chat.completions.create({
model: "deepseek-ocr-2",
messages: [
{
role: "user",
content: [
{ type: "text", text: "Free OCR." },
{ type: "image_url", image_url: { url: "data:image/png;base64,..." } },
],
},
],
});
console.log(resp.choices[0].message.content);cURL example:
curl https://deepseek-ocr-v2-demo.vercel.app/api/v1/chat/completions \
-H "Authorization: Bearer whale" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ocr-2",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Free OCR." },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,..." } }
]
}
]
}'