Docling — превращает документы в данные для ИИ
Обновлено
Не удалось запустить аудио. Нажмите кнопку воспроизведения в плеере.
Docling превращает PDF, офисные документы, изображения и другие файлы в структурированные данные для поиска по документам и систем RAG (генерации с дополнением контекста). Инструмент сохраняет порядок чтения, таблицы и элементы разметки, запускается локально и доступен как библиотека Python, инструмент командной строки (CLI) и REST-сервис.
Что делает Docling
Docling разбирает структуру документа и формирует объект DoclingDocument, который можно экспортировать в Markdown, JSON, HTML, DocTags или обычный текст. Стандартный конвейер использует отдельные этапы для определения разметки, OCR и распознавания таблиц.
Для PDF доступны:
- определение абзацев, заголовков, таблиц, изображений и других элементов;
- восстановление порядка чтения;
- распознавание структуры таблиц через TableFormer;
- оптическое распознавание текста (OCR) для сканов и изображений;
- извлечение кода и формул;
- классификация изображений и их описание при включённом обогащении;
- стандартный и визуально-языковой (VLM) конвейеры.
Docling можно использовать локально без передачи документов внешнему сервису. Удалённые модели и API подключаются отдельно и требуют явного разрешения в Docling Serve.
Основные возможности
| Область | Что доступно |
| Входные данные | PDF, офисные документы, HTML, изображения и другие поддерживаемые форматы |
| Результат | Markdown, JSON, HTML, DocTags, текст |
| Разметка | Абзацы, заголовки, таблицы, изображения и порядок чтения |
| Таблицы | TableFormer в режимах accurate и fast; также доступны отдельные VLM-подходы |
| OCR | Auto, Tesseract, EasyOCR, RapidOCR, macOS Vision и SuryaOCR |
| VLM | Полностраничное преобразование в DocTags или Markdown |
| Запуск | Python, CLI, Docling Serve, контейнер |
| Интеграции | REST API, Python-клиент, MCP-сервер и фреймворки для RAG |
Установка и быстрый запуск
Python-библиотека
pip install doclingfrom docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2501.17887")
print(result.document.export_to_markdown())CLI
docling https://arxiv.org/pdf/2501.17887Docling Serve
CPU-контейнер:
docker run -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=true quay.io/docling-project/docling-serveДля NVIDIA CUDA опубликован отдельный образ:
docker run --gpus all -p 5001:5001 -e DOCLING_SERVE_ENABLE_UI=true quay.io/docling-project/docling-serve-cu128По умолчанию сервер слушает порт 5001. После запуска:
- интерактивная документация OpenAPI доступна по адресу
http://localhost:5001/docs; - демонстрационный интерфейс при включённом
DOCLING_SERVE_ENABLE_UI— по адресуhttp://localhost:5001/ui; - синхронная загрузка файла выполняется через
POST /v1/convert/file; - преобразование URL или Base64-источника — через
POST /v1/convert/source.
На 2 сентября 2026 года последний найденный релиз Docling Serve — v1.32.0. Страница REST API в документации синхронизирована с v1.21.0, поэтому исчерпывающим контрактом для установленного сервера остаётся его собственная страница /docs.
Проверка результата через REST API
Минимальный запрос для загрузки PDF и получения Markdown:
curl -X POST "http://localhost:5001/v1/convert/file" -F "files=@document.pdf;type=application/pdf" -F "from_formats=pdf" -F "to_formats=md" -F "do_ocr=true" -F "table_mode=accurate"Успешная проверка должна дать результат преобразования с содержимым документа. Если запрос не проходит, сначала откройте /docs, сверьте названия полей и протестируйте тот же файл через /ui.
Для длительной обработки используйте асинхронные маршруты:
- Отправьте файл через
POST /v1/convert/file/asyncили источник черезPOST /v1/convert/source/async. - Проверяйте состояние через
GET /v1/status/poll/{task_id}либо WebSocket/v1/status/ws/{task_id}. - После статуса
successполучите результат черезGET /v1/result/{task_id}.
Если на сервере задана переменная DOCLING_SERVE_API_KEY, каждый запрос должен содержать заголовок X-Api-Key.
Настройка OCR и таблиц
Основные параметры преобразования:
| Параметр | Назначение |
do_ocr | Включает OCR |
force_ocr | Запускает OCR принудительно, в том числе для цифрового PDF |
ocr_preset | Выбирает предустановку OCR; доступные значения зависят от версии |
ocr_lang | Задаёт языки распознавания |
table_mode | Выбирает режим таблиц: accurate или fast |
pdf_backend | Выбирает движок разбора PDF |
pipeline | Выбирает стандартный или VLM-конвейер |
ocr_engine помечен как устаревший (deprecated) в REST-документации, синхронизированной с docling-serve v1.21.0. Для новых конфигураций используйте ocr_preset; старое поле сохраняйте только при подтверждённой совместимости вашей версии Open WebUI и Docling Serve.accurate — рекомендуемый режим TableFormer для лучшего качества структуры таблиц. fast уменьшает затраты на обработку, но может уступать на сложной вёрстке.
Языковые коды зависят от выбранного OCR:
- Tesseract использует трёхбуквенные коды, например
rus,eng,deu; - EasyOCR использует двухбуквенные коды, например
ru,en,de; - для Tesseract должен быть установлен соответствующий языковой пакет;
- RapidOCR и SuryaOCR могут требовать собственных моделей или дополнительных зависимостей.
Фрагмент параметров для русско-английского скана в JSON-запросе:
{
"options": {
"do_ocr": true,
"ocr_lang": ["rus", "eng"],
"table_mode": "accurate"
}
}Если нужен конкретный OCR-движок, добавьте ocr_preset после проверки допустимых значений в /docs установленного сервера.
Русские документы
Цифровой PDF с корректным текстовым слоем обычно не требует OCR: Docling извлекает существующий текст, а визуальный анализ отвечает за структуру страницы. Для сканов нужно включить OCR и указать русский язык в формате выбранного движка.
force_ocr. Для скана включите OCR и задайте ru для EasyOCR либо rus для Tesseract.Проверяйте результат на нескольких страницах, где есть кириллица, таблицы и смешанный русско-английский текст. Хороший признак — читаемые слова, сохранённые строки таблицы и правильный порядок абзацев.
Docling и Open WebUI
Open WebUI может передавать загруженные документы в Docling Serve перед добавлением в базу знаний. Это помогает сохранить структуру сложных PDF и таблиц.
Базовая настройка:
- Запустите Docling Serve и проверьте преобразование файла через
/ui. - В Open WebUI откройте раздел настроек документов. В актуальном снимке документации указан путь
Settings → Admin → Tools → Documents. - Выберите Docling как движок извлечения содержимого.
- Укажите
http://host.docker.internal:5001, если Open WebUI запущен в Docker, а Docling Serve доступен на хосте, либоhttp://localhost:5001при нативной установке и подходящей сетевой конфигурации. - Сохраните настройки.
- Загрузите тестовый документ в базу знаний и убедитесь, что обработка завершилась, а извлечённый текст сохранил заголовки и таблицы.
При использовании встроенного LocalOrchestrator оставляйте UVICORN_WORKERS=1. Несколько процессов Uvicorn используют отдельные хранилища задач и могут возвращать Task Not Found. Для масштабирования Docling Serve поддерживает другие вычислительные движки, включая RQ с Redis и Ray; их нужно настраивать отдельно.
Для больших документов синхронный запрос по умолчанию ждёт до 120 секунд. При необходимости увеличьте DOCLING_SERVE_MAX_SYNC_WAIT или используйте асинхронный API.
Если компонент должен обращаться к удалённой VLM или OpenAI-совместимому API, запустите сервер с:
docker run -p 5001:5001 -e DOCLING_SERVE_ENABLE_REMOTE_SERVICES=true quay.io/docling-project/docling-serveБез этой настройки Docling Serve блокирует компоненты, которым нужны внешние подключения. В REST-документации, синхронизированной с docling-serve v1.21.0, старые параметры picture_description_local и picture_description_api помечены устаревшими; вместо них используются picture_description_preset и picture_description_custom_config.
Granite Docling и другие VLM
Granite-Docling-258M — модель на 258 млн параметров для полностраничного преобразования. Она выдаёт структурированный формат DocTags и доступна через предустановку granite_docling. Каталог также перечисляет SmolDocling и несколько более крупных моделей, формирующих DocTags или Markdown.
VLM-конвейер полезен, когда нужно разбирать страницу единой визуально-языковой моделью. Стандартный конвейер остаётся практичным выбором для задач, где достаточно отдельных стадий разметки, OCR и TableFormer.
Совместимость зависит от модели и среды. Например, Granite Docling поддерживается через Transformers и MLX, а часть моделей работает только через конкретный локальный или удалённый движок. TableFormer поддерживает CPU, CUDA и XPU; MPS для него отключён из-за проблем с производительностью.
Ограничения
- Качество зависит от документа, выбранного OCR, языка и режима таблиц.
- Сложные таблицы, объединённые ячейки и нестандартная отчётная вёрстка требуют проверки результата.
- Скорость и расход памяти зависят от оборудования, размера документа и моделей.
- Не все модели и движки работают на каждой платформе.
- Синхронные запросы могут завершаться по тайм-ауту на больших документах.
- UI, параметры и API развиваются быстро, поэтому конфигурацию нужно сверять с
/docsустановленной версии.
Полезные сценарии
Подготовка базы знаний по регламентам и отчётам
Задача — подготовить цифровые PDF, DOCX и презентации к индексации. Преобразуйте документы в Markdown или JSON, затем передайте результат системе индексации. Проверьте ответы RAG по таблицам и разделам исходного файла. Наблюдаемый результат — индексируемое содержимое с сохранённой структурой. Ограничение: для сканов дополнительно настройте OCR, а качество зависит от исходного файла и выбранного движка.
Извлечение таблиц из PDF
Задача — получить данные из таблицы в PDF-отчёте. Включите table_mode=accurate, преобразуйте файл и сравните строки, столбцы и объединённые ячейки с оригиналом. Наблюдаемый результат — таблица, пригодная для дальнейшего разбора. Ограничение: сложную вёрстку нельзя принимать без выборочной проверки.
Поиск по архиву сканов
Задача — сделать архив сканов доступным для полнотекстового поиска. Запустите пакетное или асинхронное преобразование с подходящим OCR и языками, затем индексируйте полученный текст. Проверьте поиск по словам с кириллицей. Наблюдаемый результат — найденные страницы или фрагменты по тестовым запросам. Ограничение: плохо отсканированные и рукописные страницы могут потребовать предварительной обработки.
Конвейер для ИИ-агента
Задача — дать агенту структурированное содержимое документа. Подключите Docling через REST API, Python-клиент или MCP. Агент получает результат преобразования вместо необработанного PDF. Ограничение: для удалённых компонентов нужно явно включить сетевой доступ, а качество извлечения следует проверять на реальных документах.
Ссылки
- Документация Docling
- REST API Docling Serve
- Каталог моделей
- Репозиторий Docling
- Репозиторий Docling Serve
- Релизы Docling Serve
- Инструкция сообщества по интеграции с Open WebUI
Следующий шаг
Open WebUI — собственный интерфейс для любых языковых моделей
Связанные материалы
- Статья: Карпати перестал кодить и начал «компилировать знания» — разбираю его систему LLM Knowledge Bases
- Блог: SotaOCR — OCR-сервис за 25 копеек за страницу, который понимает таблицы, формулы и 100+ языков
Если вы строите поиск по документам, полезно заранее выбрать способ извлечения и проверить качество на реальных файлах, а требования к инфраструктуре оценить до развёртывания.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov