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-pro0.075 / 0.225да1M36
deepseek-v4.1-flash0.013 / 0.038нет1M39
deepseek-v4-flash0.025 / 0.063нет1M35

Индекс — 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.

bash
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: счёт, чек, анкета

Часто нужно не «просто текст», а поля. Попросите структуру и проверьте её кодом:

bash
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» выглядит как правдоподобное число. Что помогает:

  1. Арифметические проверки. Сумма позиций должна равняться итогу (флаг _sum_ok выше), НДС должен сходиться с суммой.
  2. Формат полей. Дата, ИНН, номер счёта проверяются регулярными выражениями или контрольными суммами.
  3. Второй проход. Разошлись два прогона одной картинки или двух моделей, отправьте документ человеку.
  4. Качество исходника. Мелкий шрифт на сильно сжатой картинке читается плохо: давайте страницы в достаточном разрешении, обрезайте поля и поворачивайте сканы.
  5. Выборочная проверка человеком. Возьмите 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.