pimenov.ai

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-подходы
OCRAuto, Tesseract, EasyOCR, RapidOCR, macOS Vision и SuryaOCR
VLMПолностраничное преобразование в DocTags или Markdown
ЗапускPython, CLI, Docling Serve, контейнер
ИнтеграцииREST API, Python-клиент, MCP-сервер и фреймворки для RAG
⚖️
Набор моделей и совместимость движков меняются регулярно. Проверяйте каталог моделей и живую OpenAPI-схему конкретной версии Docling Serve перед переносом конфигурации в продакшен.

Установка и быстрый запуск

Python-библиотека

pip install docling
from 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.17887

Docling 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.

Для длительной обработки используйте асинхронные маршруты:

  1. Отправьте файл через POST /v1/convert/file/async или источник через POST /v1/convert/source/async.
  2. Проверяйте состояние через GET /v1/status/poll/{task_id} либо WebSocket /v1/status/ws/{task_id}.
  3. После статуса 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 и таблиц.

⚖️
Инструкция на сайте Open WebUI помечена самим сайтом как материал сообщества и официально не поддерживается командой Open WebUI. Пути в интерфейсе и передаваемые параметры могут измениться.

Базовая настройка:

  1. Запустите Docling Serve и проверьте преобразование файла через /ui.
  2. В Open WebUI откройте раздел настроек документов. В актуальном снимке документации указан путь Settings → Admin → Tools → Documents.
  3. Выберите Docling как движок извлечения содержимого.
  4. Укажите http://host.docker.internal:5001, если Open WebUI запущен в Docker, а Docling Serve доступен на хосте, либо http://localhost:5001 при нативной установке и подходящей сетевой конфигурации.
  5. Сохраните настройки.
  6. Загрузите тестовый документ в базу знаний и убедитесь, что обработка завершилась, а извлечённый текст сохранил заголовки и таблицы.

При использовании встроенного 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. Ограничение: для удалённых компонентов нужно явно включить сетевой доступ, а качество извлечения следует проверять на реальных документах.


Ссылки

Следующий шаг

Open WebUI — собственный интерфейс для любых языковых моделей

Связанные материалы

Если вы строите поиск по документам, полезно заранее выбрать способ извлечения и проверить качество на реальных файлах, а требования к инфраструктуре оценить до развёртывания.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov