DeepSeek API OCR: распознаём текст с картинок через V4 Pro
DeepSeek V4 Pro принимает изображения, а значит умеет читать текст со скриншотов и сканов. Показываем код на Python, JSON-режим, проверки точности и расчёт стоимости на 1000 страниц.
5 мин · · автоматизация · API-ключи
Если вам нужен DeepSeek API OCR, то есть распознавание текста на картинках через DeepSeek, начать стоит с оговорки. В каталоге Zukko нет отдельной OCR-модели: из линейки DeepSeek изображения на вход принимает deepseek-v4-pro, это обычная мультимодальная модель, которой вы отправляете картинку и просите вернуть текст или JSON. Модели deepseek-v4.1-flash и deepseek-v4-flash изображения не принимают. Ниже: код на Python, структурированный вывод, проверки точности, ограничения и стоимость.
DeepSeek API OCR: что именно доступно
Из каталога на 18 октября 2026 (цены в $ за 1M токенов):
| Модель | Вход / выход | Картинки на вход | Контекст | Индекс |
|---|---|---|---|---|
deepseek-v4-pro | 0.075 / 0.225 | да | 1M | 36 |
deepseek-v4.1-flash | 0.013 / 0.038 | нет | 1M | 39 |
deepseek-v4-flash | 0.025 / 0.063 | нет | 1M | 35 |
Индекс — Intelligence Index от Artificial Analysis, он общий, не «по распознаванию текста»: качество OCR на ваших документах нужно проверять отдельно. Так как «deepseek vision api» и «deepseek ocr api» часто ищут как одно и то же, уточним: через Zukko вы работаете с deepseek-v4-pro как с универсальной моделью, а не со специализированной OCR-моделью. Другие модели каталога с поддержкой изображений (например, qwen3.8-max, claude-sonnet-5-5) тоже можно использовать, ниже сравним стоимость. Подробнее о самой модели: DeepSeek V4 Pro через API.
Простой запрос: изображение в текст
Zukko принимает изображения в OpenAI-формате (/v1/chat/completions): картинка передаётся как часть content в виде data URL. Подробнее о методе: chat completions.
import base64
import mimetypes
from pathlib import Path
from openai import OpenAI
client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_ваш_ключ")
def to_data_url(path: str) -> str:
mime = mimetypes.guess_type(path)[0] or "image/png"
b64 = base64.b64encode(Path(path).read_bytes()).decode()
return f"data:{mime};base64,{b64}"
def ocr(path: str) -> str:
r = client.chat.completions.create(Строка с usage нужна, чтобы узнать, сколько токенов занимает ваша картинка: это зависит от размера изображения и модели, и фиксированных цифр мы не берём. Запустите код на нескольких типичных страницах и запишите реальные значения.
Не текст, а JSON: счёт, чек, анкета
Часто нужно не «просто текст», а поля. Попросите структуру и проверьте её кодом:
import json
PROMPT_JSON = """На изображении счёт. Верни только JSON без пояснений в формате:
{"number": строка или null, "date": "YYYY-MM-DD" или null, "total": число или null,
"items": [{"name": строка, "qty": число, "price": число}]}
Если поле не видно, ставь null. Ничего не придумывай."""
def parse_json(text: str) -> dict:
text = text.strip()
if text.startswith("`" * 3):
text = text.strip("`").removeprefix("json").strip()
return json.loads(text)
def extract_invoice(path: str) -> dict:Здесь модель просим вернуть JSON обычным текстом промпта, а код обрабатывает возможные «заборчики» вокруг. Другие способы получить строго структурированный ответ описаны в статье структурированный JSON-ответ.
Как проверять точность
OCR ошибается тихо: цифра «8» вместо «3» выглядит как правдоподобное число. Что помогает:
- Арифметические проверки. Сумма позиций должна равняться итогу (флаг
_sum_okвыше), НДС должен сходиться с суммой. - Формат полей. Дата, ИНН, номер счёта проверяются регулярными выражениями или контрольными суммами.
- Второй проход. Разошлись два прогона одной картинки или двух моделей, отправьте документ человеку.
- Качество исходника. Мелкий шрифт на сильно сжатой картинке читается плохо: давайте страницы в достаточном разрешении, обрезайте поля и поворачивайте сканы.
- Выборочная проверка человеком. Возьмите 30-50 документов, сверьте вручную и оцените долю ошибок на своих данных.
Результаты вашей проверки и будут единственным настоящим показателем качества. Мы не приводим процентов точности, потому что у нас нет собственных измерений на ваших документах.
Ограничения vision-запросов
- Модель должна принимать изображения. В таблице моделей это колонка «картинки на вход». Не отправляйте картинки моделям с «нет».
- Размер и формат. Допустимые форматы и максимальный размер зависят от провайдера модели. Слишком большой запрос вернёт 413: уменьшите изображение или разбейте документ на страницы.
- PDF. Для PDF сначала превратите страницы в картинки, как в статье как распознать PDF нейросетью.
- Персональные данные. Паспорта, медицинские и банковские документы передавайте, только если у вас есть на это право, и не пишите содержимое таких запросов в общие логи.
Нейросеть или классический OCR
Для чистого печатного текста хорошего качества достаточно классического OCR вроде Tesseract: он работает локально и без оплаты за запрос. Модель с изображениями выигрывает там, где важна структура и смысл: таблицы, счета, чеки, смешанные макеты, извлечение полей сразу в JSON. Практичный вариант: прогнать часть документов обоими способами и сравнить, не забывая про стоимость.
Сколько это стоит
Формула: стоимость = вход × цена входа / 1 000 000 + выход × цена выхода / 1 000 000. Допущение для примера (замерьте на своих страницах через usage): на страницу 1 600 токенов входа (изображение и инструкция) и 600 токенов выхода. На 1 000 страниц: вход 1.6M, выход 0.6M.
deepseek-v4-pro(0.075 / 0.225): 1.6 × $0.075 + 0.6 × $0.225 = $0.12 + $0.135 = $0.255. По официальным ценам (0.66 / 1.98): 1.6 × $0.66 + 0.6 × $1.98 = $1.056 + $1.188 = $2.244.qwen3.8-max(0.088 / 0.238): 1.6 × $0.088 + 0.6 × $0.238 = $0.1408 + $0.1428 = $0.2836.claude-sonnet-5-5(0.4 / 2): 1.6 × $0.4 + 0.6 × $2 = $0.64 + $1.20 = $1.84.
Число токенов на картинку у разных моделей может отличаться, поэтому сравнивайте на реальных usage, а не по этим допущениям. Кэш в расчёте не учтён. Актуальные цены: GET https://api.zukko.pro/v1/models или страница «Модели» в кабинете. Для массовой обработки поставьте на ключ дневной лимит в долларах на странице API-ключей, чтобы ошибка в цикле не опустошила баланс. Баланс в долларах пополняется от $1: СБП (платёжная страница добавляет 8,5% сверху), криптой или картой MasterCard.
Частые вопросы
Есть ли у DeepSeek отдельная OCR-модель в Zukko?
Нет. В каталоге изображения принимает deepseek-v4-pro, обычная мультимодальная модель. Отдельной OCR-модели в списке нет.
Принимает ли deepseek-v4.1-flash картинки?
Нет, у неё и у deepseek-v4-flash в таблице моделей отмечено «нет» в колонке картинок на вход. Для изображений используйте deepseek-v4-pro или другую модель с поддержкой изображений.
Как отправить PDF?
Превратите страницы PDF в изображения и отправляйте их по одной или группами, как описано в статье про PDF.
Насколько точно распознаются рукописные тексты?
Мы не измеряли и точности не обещаем. Проверьте на выборке ваших документов и настройте проверки полей.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- База знаний в Open WebUI: настройка RAG на своих документахВ Open WebUI можно загрузить документы и задавать по ним вопросы. Показываем, как создать базу знаний, какие настройки влияют на точность ответов и во что обходится один вопрос.
- Chat PDF: как задавать вопросы к PDF через нейросеть по APIДва способа спрашивать PDF у модели: положить документ в контекст и кэшировать или искать нужные куски. Код на Python и расчёт цены двадцати вопросов.
- Анализ сайта нейросетью: аудит страниц, текстов и структуры через APIСобираем данные страниц скриптом, отправляем модели компактный JSON и получаем отчёт по заголовкам, мета-тегам и структуре текста. С расчётом цены и честными ограничениями.
- Ключи OpenAI API в открытом доступе: почему ими нельзя пользоватьсяОткуда берутся «бесплатные» ключи на GitHub, почему пользоваться ими опасно и для вас, и для владельца, и как защитить собственный ключ от такой же утечки.