Текст на картинке? Сейчас прочитаем
В 2026 году распознавание текста из картинок все еще остается проблемой. Особенно если текст на арабском, китайском или каком-нибудь вьетнамском. VLM-модели типа Qwen 3 VL или GLM-OCR то справляются, то нет — как повезет. А классические OCR-движки часто требуют отдельной установки, конфигурации и грешат с нелатинскими алфавитами.
PaddleOCR-VL 0.9B — это мультиязычная модель на 0.9 миллиарда параметров, которая в феврале 2026 года вышла в формате GGUF для llama.cpp. Что это значит? Теперь можно запустить качественный OCR на CPU без танцев с бубном. И поддерживает она более 100 языков — от английского до хинди.
Важный момент: PaddleOCR-VL — это не просто OCR. Это vision-language модель, которая понимает контекст. Может отвечать на вопросы по содержимому документа, а не просто выдавать текст.
Что умеет PaddleOCR-VL 0.9B (версия 2026 года)
Последняя версия на февраль 2026 — это улучшенная модель с исправленными проблемами распознавания арабской вязи и китайских иероглифов. Основные фичи:
- Распознает текст на 100+ языках без переключения моделей
- Понимает структуру документа (заголовки, абзацы, таблицы)
- Отвечает на вопросы по содержимому изображения
- Работает на CPU через llama.cpp с GGUF-квантованием
- Требует всего 4-8 ГБ оперативки в зависимости от квантования
Самое приятное — модель уже конвертирована в GGUF и лежит в официальном репозитории. Не нужно самому конвертировать из PyTorch, что обычно заканчивается ошибками совместимости.
PaddleOCR-VL против конкурентов: кто кого?
| Модель | Языки | Размер | Требования | Точность |
|---|---|---|---|---|
| PaddleOCR-VL 0.9B | 100+ | ~3.5 ГБ (Q4_K_M) | CPU, 8 ГБ RAM | Высокая для мультиязычного |
| GLM-OCR | 80+ | ~7 ГБ | GPU желателен | Отличная, но ресурсоемкая |
| LightOnOCR-2 | 50+ | ~5 ГБ | Обязателен GPU | Средняя для нелатинских |
| Tesseract 5.3+ | 100+ | ~500 МБ | CPU, минимальные | Низкая для сложных шрифтов |
Если сравнивать с LightOnOCR-2 и GLM-OCR, то PaddleOCR-VL выигрывает в одном — работает на любом ноутбуке. Не нужно мощной видеокарты. Для бизнес-задач, где нужно обрабатывать документы на сервере без GPU, это решающее преимущество.
Ставим PaddleOCR-VL в llama.cpp: пошагово и без магии
1 Качаем правильную версию llama.cpp
Первая ошибка — пытаться использовать старую версию. На февраль 2026 нужен llama.cpp не ниже версии 2.9.0 с поддержкой VLM. Качаем с GitHub:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j4
Если компиляция падает с ошибкой — проверьте, что установлен cmake 3.25+. На старых системах придется обновлять.
2 Берем GGUF-файлы модели
Официальные веса лежат в репозитории PaddleOCR-VL. Но проще скачать готовые GGUF-файлы с Hugging Face. Ищите paddleocr-vl-0.9b-q4_k_m.gguf — это оптимальный вариант баланса качества и размера.
# Пример для Linux/Mac
wget https://huggingface.co/PaddlePaddle/PaddleOCR-VL/resolve/main/gguf/paddleocr-vl-0.9b-q4_k_m.gguf
# Или через git lfs, если файл большой
git lfs install
git clone https://huggingface.co/PaddlePaddle/PaddleOCR-VL
Не берите q2_k — будет мусор вместо текста. q4_k_m — минимальное разумное квантование. Для production лучше q5_k_m или q6_k.
3 Запускаем и тестируем
Базовый запуск через CLI:
./main -m paddleocr-vl-0.9b-q4_k_m.gguf --mmproj mmproj-paddleocr-vl-0.9b-f16.gguf \
--image /path/to/your/image.png -p "Extract text from this image"
Ключевые флаги:
--mmproj— файл проекции для мультимодальности (обязательно!)--image— путь к изображению-p— промпт. Можно задавать вопросы: "What is the total amount on this invoice?"-ngl 0— если нет GPU, форсируем CPU-режим
Если видите ошибку про mmproj — скачайте файл проекции из того же репозитория. Без него модель не поймет, что делать с картинками.
Реальные примеры: где это работает, а где нет
Сканы документов с плохим качеством — да, PaddleOCR-VL справляется лучше Tesseract, особенно с рукописными цифрами. Но если нужна pixel-perfect точность для юридических документов, лучше использовать классический IDP пайплайн.
Мультиязычные документы (типа инструкций на 5 языках) — здесь PaddleOCR-VL бьет всех. Не нужно переключать языковые модели, как в Tesseract. Одна модель — все языки.
Скриншоты интерфейсов — работает средне. Если текст мелкий и с антиалиасингом, могут быть ошибки. Для этого случая есть специализированные инструменты.
А вот с арабской вязью в последней версии 2026 года стало значительно лучше. Раньше модель путала направление письма, сейчас исправили.
Интеграция в Python-приложения
Через llama-cpp-python библиотеку можно встроить в свои скрипты:
from llama_cpp import Llama
llm = Llama(
model_path="paddleocr-vl-0.9b-q4_k_m.gguf",
n_ctx=2048, # контекст для изображений
n_gpu_layers=0 # 0 для CPU, больше для GPU
)
# Загружаем изображение как base64
import base64
with open("document.jpg", "rb") as f:
image_data = base64.b64encode(f.read()).decode('utf-8')
# Промпт с изображением
response = llm.create_chat_completion(
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Extract all text from this invoice"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}}
]
}
]
)
print(response['choices'][0]['message']['content'])
Важный нюанс — llama-cpp-python должен быть версии не ниже 0.2.70 для поддержки VLM. На старых версиях работать не будет.
Кому подойдет эта связка?
Разработчикам, которым нужен OCR в офлайн-приложениях. Особенно на embedded-устройствах или серверах без GPU. PaddleOCR-VL через llama.cpp потребляет мало памяти и не требует внешних зависимостей.
Лингвистам и исследователям, работающим с мультиязычными корпусами. Одна модель вместо десятка языковых пакетов.
Бизнес-приложениям для обработки документов международных компаний. Счета на немецком, контракты на французском, спецификации на японском — все в одном месте.
Но если вам нужен промышленный OCR для миллионов документов в день — посмотрите в сторону специализированных решений. PaddleOCR-VL быстрее, чем большие VLM, но все же медленнее классических OCR-движков.
Чего ждать дальше?
PaddleOCR-VL 1.5B уже анонсирована на конец 2026 года. Будет больше языков и лучше точность. Но и требования к памяти вырастут.
Основной тренд — уменьшение моделей без потери качества. Сейчас 0.9B — это компромисс. Через год, возможно, появится модель с аналогичными возможностями на 0.5B параметрах.
Интеграция с полностью офлайн-режимом PaddleOCR — следующий логичный шаг. Единый пайплайн для всех типов документов.
Мой прогноз: к концу 2026 году VLM-OCR на CPU станут стандартом для бизнес-приложений среднего масштаба. А PaddleOCR-VL в llama.cpp — одним из самых популярных вариантов из-за простоты развертывания.
Совет напоследок: не используйте эту модель для распознавания CAPTCHA. Это нарушает условия использования большинства сервисов. Да и этично как-то сомнительно.