Unlimited-OCR — это end-to-end модель оптического распознавания символов (OCR) и парсинга документов, разработанная компанией Baidu и позиционируемая как модель, открывающая «эру одноэтапного парсинга с длинным горизонтом» (Era of One-shot Long-horizon Parsing). В отличие от существующих OCR-систем, которые, как правило, обрабатывают многостраничные документы постранично в цикле, сбрасывая память между итерациями, Unlimited-OCR способна за один прямой проход распознать и преобразовать в структурированный формат десятки страниц документа. Это фундаментальное преимущество стало возможным благодаря сочетанию двух ключевых архитектурных решений: высокоэффективного визуального энкодера DeepEncoder с 16-кратной компрессией визуальных токенов и инновационного механизма внимания R-SWA, который поддерживает постоянный размер KV-кэша на протяжении всего процесса декодирования.
Базовая архитектура модели унаследована от DeepSeek-OCR и состоит из двух основных компонентов. Визуальный энкодер DeepEncoder представляет собой каскадную архитектуру SAM-ViT-B + CLIP-L, которая сжимает изображение 1024×1024 пикселя всего до 256 токенов — это критически важно для работы с многостраничными документами, так как радикально сокращает базовый размер KV-кэша. Декодер построен на базе MoE-архитектуры (Mixture of Experts) с 3 млрд общих параметров и лишь 500 млн активируемых при инференсе. Модель включает 12 скрытых слоёв, 64 маршрутизируемых эксперта и 2 общих эксперта, максимальный контекст – 32768 токенов.
Главное архитектурное новшество Unlimited-OCR — Reference Sliding Window Attention (R-SWA), который полностью заменяет стандартное Multi-Head Attention (MHA) в декодере. R-SWA решает фундаментальную проблему линейного роста KV-кэша и замедления генерации по мере удлинения выходной последовательности. При генерации каждого нового токена R-SWA вычисляет внимание к двум группам токенов: ко всем референсным токенам (в случае OCR — это визуальные токены и промпт) и к ограниченному числу предшествующих выходных токенов (по умолчанию — окно в 128 токенов, но для сложных документов рекомендуется увеличить его до 1024). В отличие от стандартного Sliding Window Attention (SWA), в R-SWA референсные токены исключаются из циклического обновления состояния и присутствуют всегда, что предотвращает их постепенное «размывание» при продвижении окна. KV-кэш реализован как очередь фиксированной ёмкости m + n, где m — референсные токены, а n — окно выходных токенов, и при генерации каждого нового токена из очереди удаляется наиболее старый KV-элемент группы выходных токенов – n. Благодаря этому размер KV-кэша остается постоянным на протяжении всего процесса декодирования, независимо от длины выходного текста, что обеспечивает не только предсказуемое потребление памяти, но и стабильную скорость генерации.
Ключевое преимущество Unlimited-OCR перед другими LLM-моделями для задач OCR заключается в том, что она решает проблему переполнения KV-кэша, которая делала невозможным одновременную обработку сразу нескольких страниц и проблему снижения скорости генерации с накоплением декодированных токенов. При этом модель не только не теряет в качестве по сравнению с полным вниманием, но и превосходит базовый DeepSeek-OCR на 6,22% по общему показателю на бенчмарке OmniDocBench v1.5, достигая 93,23% — это первое место среди всех энд-ту-энд моделей, включая значительно более крупные модели: GPT-4o (75,02%), Gemini-2.5 Pro (88,03%), Qwen2.5-VL 72B (87,02%) и Qwen3-VL 235B (89,15%). На актуальном бенчмарке OmniDocBench v1.6 Unlimited-OCR также занимает первую позицию с результатом 93,92%, демонстрируя лучшие показатели в распознавании формул (Formula CDM: 95,79%) и извлечении структуры таблиц (Table TEDS-S: 93,32%).
Ключевой сценарий использования Unlimited-OCR - одноэтапный парсинг многостраничных документов. Модель способна транскрибировать PDF-файлы, книги, научные статьи и другие документы объемом до десятков страниц за один проход, без необходимости постраничной обработки и сброса памяти. Эта особенность модели приобретает максимальную актуальность при оцифровке архивов, библиотек, юридических документов и решении других OCR задач, где важна не только точность, но и скорость получения финального результата при существенных объемах.
С информацией об особенностях направления запросов к модели можно ознакомиться по ссылке - https://recipes.vllm.ai/baidu/Unlimited-OCR
| Наименование модели | Контекст | Тип | GPU | TPS | Tooling | Статус | Ссылка |
|---|---|---|---|---|---|---|---|
| baidu/Unlimited-OCR | 32K | Публичный | A2 | 107 | доступен | чат |
curl https://chat.immers.cloud/v1/endpoints/unlimited-ocr/generate/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer USER_API_KEY" \
--data-binary @- <<"EOF"
{"model": "unlimited-ocr", "temperature": 0.0, "skip_special_tokens": false, "messages": [
{"role": "user", "content": [
{ "type": "text", "text": "<image>document parsing." },
{ "type": "image_url", "image_url": { "url": "https://raw.githubusercontent.com/open-mmlab/mmocr/refs/heads/main/demo/demo_text_det.jpg" }}
]}
]}
EOF
$response = Invoke-WebRequest https://chat.immers.cloud/v1/endpoints/unlimited-ocr/generate/chat/completions `
-Method POST `
-Headers @{
"Authorization" = "Bearer USER_API_KEY"
"Content-Type" = "application/json; charset=utf-8"
} `
-Body ([System.Text.Encoding]::UTF8.GetBytes((@{
model = "unlimited-ocr"
skip_special_tokens = $false
temperature = 0.0
messages = @(
@{ role = "user"; content = @(
@{ type = "text"; text = "<image>document parsing." },
@{ type = "image_url"; image_url = @{ url = "https://raw.githubusercontent.com/open-mmlab/mmocr/refs/heads/main/demo/demo_text_det.jpg" } })
})
} | ConvertTo-Json -Depth 10)))
([System.Text.Encoding]::UTF8.GetString($response.RawContentStream.ToArray()) | ConvertFrom-Json).choices[0].message.content
#!pip install OpenAI --upgrade
from openai import OpenAI
client = OpenAI(
api_key="USER_API_KEY",
base_url="https://chat.immers.cloud/v1/endpoints/unlimited-ocr/generate/",
)
chat_response = client.chat.completions.create(
model="unlimited-ocr",
temperature=0.0,
extra_body={
"skip_special_tokens": False
},
messages=[
{"role": "user", "content": [
{"type": "text", "text": "<image>document parsing."},
{"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/open-mmlab/mmocr/refs/heads/main/demo/demo_text_det.jpg"}}
]},
]
)
print(chat_response.choices[0].message.content)
Арендуйте собственный физически выделенный инстанс с почасовой оплатой или на длительный срок с помесячной оплатой.
Мы рекомендуем создание частных инстансов в случаях, если необходимо:
| Наименование | GPU | TPS | Параллельность (макс.) | |||
|---|---|---|---|---|---|---|
32 768 |
1 | 33,74 ₽ | 165.72 | 4,00 | Запустить | |
32 768 |
1 | 46,94 ₽ | 258.28 | 7,88 | Запустить | |
32 768 |
1 | 51,34 ₽ | 118.19 | 1,55 | Запустить | |
32 768 |
1 | 73,73 ₽ | 214.16 | 8,40 | Запустить | |
32 768 |
1 | 91,14 ₽ | 221.26 | 8,38 | Запустить | |
32 768 tensor |
2 | 139,77 ₽ | 18,20 | Запустить | ||
32 768 |
1 | 141,77 ₽ | 12,22 | Запустить | ||
32 768 |
1 | 211,77 ₽ | 243.01 | 35,72 | Запустить | |
32 768 |
1 | 341,77 ₽ | 433.25 | 35,69 | Запустить | |
32 768 |
1 | 367,41 ₽ | 435.49 | 42,51 | Запустить | |
32 768 tensor |
2 | 411,81 ₽ | 72,85 | Запустить | ||
32 768 |
1 | 423,04 ₽ | 65,43 | Запустить | ||
32 768 tensor |
2 | 839,97 ₽ | 132,27 | Запустить | ||
| Наименование | GPU | TPS | Параллельность (макс.) | |||
|---|---|---|---|---|---|---|
32 768 |
1 | 33,74 ₽ | 3,75 | Запустить | ||
32 768 |
1 | 46,94 ₽ | 7,62 | Запустить | ||
32 768 |
1 | 51,34 ₽ | 1,30 | Запустить | ||
32 768 |
1 | 73,73 ₽ | 8,14 | Запустить | ||
32 768 |
1 | 91,14 ₽ | 8,12 | Запустить | ||
32 768 tensor |
2 | 139,77 ₽ | 17,94 | Запустить | ||
32 768 |
1 | 141,77 ₽ | 11,97 | Запустить | ||
32 768 |
1 | 211,77 ₽ | 35,47 | Запустить | ||
32 768 |
1 | 341,77 ₽ | 35,43 | Запустить | ||
32 768 |
1 | 367,41 ₽ | 42,26 | Запустить | ||
32 768 tensor |
2 | 411,81 ₽ | 72,59 | Запустить | ||
32 768 |
1 | 423,04 ₽ | 65,18 | Запустить | ||
32 768 tensor |
2 | 839,97 ₽ | 132,01 | Запустить | ||
| Наименование | GPU | TPS | Параллельность (макс.) | |||
|---|---|---|---|---|---|---|
32 768 |
1 | 33,74 ₽ | 107.00 | 2,09 | Запустить | |
32 768 |
1 | 46,94 ₽ | 201.98 | 5,97 | Запустить | |
32 768 |
1 | 73,73 ₽ | 275.71 | 6,49 | Запустить | |
32 768 tensor |
2 | 86,54 ₽ | 2,60 | Запустить | ||
32 768 |
1 | 91,14 ₽ | 308.62 | 6,47 | Запустить | |
32 768 tensor |
2 | 139,77 ₽ | 16,29 | Запустить | ||
32 768 |
1 | 141,77 ₽ | 10,31 | Запустить | ||
32 768 |
1 | 211,77 ₽ | 254.54 | 33,81 | Запустить | |
32 768 |
1 | 341,77 ₽ | 424.67 | 33,78 | Запустить | |
32 768 |
1 | 367,41 ₽ | 384.51 | 40,60 | Запустить | |
32 768 tensor |
2 | 411,81 ₽ | 70,94 | Запустить | ||
32 768 |
1 | 423,04 ₽ | 63,52 | Запустить | ||
32 768 tensor |
2 | 839,97 ₽ | 130,36 | Запустить | ||
Свяжитесь с нашей специализированной группой поддержки по нейросетям support@immers.cloud или отправьте ваш запрос в отдел продаж sale@immers.cloud.