Docling: как локально превратить PDF, DOCX и таблицы в Markdown для LLM и RAG
Перед тем как отдавать документы локальной или облачной LLM, их нужно нормально разобрать: сохранить заголовки, таблицы, порядок блоков, формулы и структуру страниц. Docling — open-source toolkit, который конвертирует PDF, Word, PowerPoint, Excel, HTML, изображения и другие форматы в единое структурированное представление, а затем экспортирует его в Markdown, JSON, chunks и другие форматы для AI-пайплайнов.
Docling не просто вытаскивает текст — он строит структурированное представление документа
Если просто прогнать PDF через обычный text extractor, можно потерять порядок колонок, заголовки, таблицы, подписи и связь между элементами страницы. Docling сначала строит внутренний DoclingDocument, в котором сохраняются hierarchy и layout, а уже потом экспортирует результат.
Заголовки, списки, paragraphs и другие blocks сохраняются как структура, а не плоский текст.
Для PDF учитывается расположение объектов на странице и reading order.
Таблица распознаётся как таблица и может быть экспортирована отдельно.
Markdown и chunks можно сразу отдавать в LLM/RAG без самодельного PDF parser.
Docling давно вышел за пределы одного PDF
Современные Microsoft Office документы.
Поддерживаются через LibreOffice backend.
Плюс AsciiDoc, MHTML/MHT и ряд XML-форматов.
Текст, таблицы и презентации OpenDocument.
Могут обрабатываться через OCR или VLM pipeline.
Есть backends для специализированных enterprise/scientific форматов.
Основные output formats
mdMarkdownУдобный формат для LLM и ручного просмотра.
jsonDocling JSONLossless serialization структуры документа.
chunksJSONL chunksГотовый выход для RAG ingestion.
htmlHTMLСтруктурированный визуальный export.
textPlain textЕсли структура Markdown не нужна.
latexLaTeXДля scientific/document workflows.
Установка Docling 2.129.0
Официальный пакет работает на Windows, Linux и macOS. Python requirement текущей версии — 3.10–3.14.
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
pip install docling==2.129.0
Если используете uv:
uv add docling==2.129.0
На CPU-only сервере может быть выгоднее заранее установить CPU-сборку PyTorch. На GPU-системе — подходящую CUDA/accelerator сборку под ваше железо.
Один PDF можно превратить в Markdown одной командой
docling convert document.pdf --to md
В актуальном CLI Markdown — output по умолчанию.
Markdown + JSON
docling convert document.pdf \
--to md \
--to json \
--output ./result
Папка документов
docling convert ./documents \
--from pdf \
--from docx \
--to md \
--output ./converted
Без OCR
docling convert document.pdf --no-ocr
Если PDF уже содержит хороший text layer, принудительный OCR только увеличит время и может ухудшить текст.
Конвертация документа из Python
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("document.pdf")
markdown = result.document.export_to_markdown()
print(markdown)
В отличие от CLI здесь у вас остаётся сам DoclingDocument.
Можно отдельно обходить tables, pictures, headings и другие элементы,
а не работать только с финальным Markdown.
Markdown для LLM и человека.
Структура документа в Python/JSON.
Доступ к распознанным таблицам отдельно от текста.
Работа с картинками, captions и enrichment.
Таблицу из PDF можно получить как DataFrame, CSV или HTML
Для технических паспортов, прайс-листов, отчётов и документации это важнее обычного «вытащить весь текст».
from docling.document_converter import DocumentConverter
result = DocumentConverter().convert("report.pdf")
for index, table in enumerate(result.document.tables):
df = table.export_to_dataframe()
df.to_csv(
f"table_{index}.csv",
index=False
)
Когда качество table structure менее критично.
Default CLI mode для table structure recognition.
Merged cells, многоуровневые headers, повернутый текст и плохой scan способны привести к ошибкам даже у хорошего parser.
Docling поддерживает несколько OCR engines
OCR включён в стандартном PDF pipeline и применяется к bitmap content. В зависимости от системы можно использовать разные engines.
ONNX-based вариант, устанавливается отдельным extra.
Классический OCR с явным выбором языковых моделей.
Отдельный optional backend.
Вариант для macOS.
Пример с RapidOCR
pip install "docling[rapidocr]"
docling convert scan.pdf \
--ocr \
--ocr-engine rapidocr \
--ocr-lang "iso:ru,iso:en" \
--to md
CLI поддерживает как native engine tags, так и canonical BCP-47 через префикс iso:.
Для сложных страниц можно использовать VLM вместо классического pipeline
pip install "docling[vlm]"
docling convert document.pdf \
--pipeline vlm \
--to md
VLM pipeline анализирует страницу с помощью vision-language model. Это полезно для сложного layout и визуального понимания, но заметно тяжелее обычного parsing и требует model weights.
Быстрее и детерминированнее для большинства обычных PDF.
Полезен, если conventional parsing/OCR недостаточно.
Docling может сразу подготовить chunks для RAG
Вместо собственного splitter можно попросить CLI вернуть JSONL chunks. Поддерживаются hierarchical и hybrid chunking.
docling convert manual.pdf \
--to chunks \
--chunks-type hybrid \
--chunks-max-tokens 512 \
--output ./rag-data
В официальных examples есть интеграции с LangChain, LlamaIndex и Haystack, а также vector stores вроде Qdrant, Milvus и Weaviate.
Claude и другие MCP-клиенты могут конвертировать документы как tool
У проекта есть отдельный официальный docling-mcp. Актуальная версия на PyPI — 3.2.0, Python 3.10+, MIT.
{
"mcpServers": {
"docling": {
"command": "uvx",
"args": [
"--from=docling-mcp",
"docling-mcp-server"
]
}
}
}
После подключения agent получает document conversion tools и может, например, по инструкции превратить PDF в DoclingDocument, затем читать или обрабатывать его дальше.
Обработка документов непосредственно на машине MCP server.
Можно направить MCP на отдельный Docling Serve endpoint.
У MCP package есть optional tools для RAG workflow.
Можно управлять сохранением и представлением картинок в Markdown.
Для очень старого custom MCP client на SDK v1 документация рекомендует ветку docling-mcp<3.
Базовый Docling может обрабатывать локальные файлы локально
Standard parsing, OCR и локальные model pipelines могут выполняться на своей машине.
Полностью offline environment нужно подготовить заранее.
Если вы специально включили remote enrichment/model backend, его privacy зависит от provider.
Для server deployment ограничивайте, какие внешние URL разрешено передавать.
Проверяйте extras и настройки конкретного enrichment/VLM backend. Для чувствительных документов используйте только явно локальные components.
Docling, Firecrawl и AnythingLLM находятся на разных этапах pipeline
Эти инструменты не обязательно конкурируют. Например: Firecrawl собирает веб, Docling обрабатывает локальные PDF, Qdrant хранит chunks, а Open WebUI или AnythingLLM становятся пользовательским интерфейсом.
В 2026 году у Docling были security advisories: используйте актуальную версию
Документ parser обрабатывает архивы, XML, HTML, LaTeX, URL и изображения, поэтому его attack surface больше, чем кажется. В 2026 году Docling опубликовал несколько advisories, включая unsafe HTML rendering, path traversal и XML/archive parsing issues.
Старый Playwright rendering мог выполнять JavaScript и делать unrestricted network requests.
\input и \includegraphics раньше могли выйти за base directory.
Model archive extraction теперь проверяет traversal.
Старый parser мог читать локальные файлы или делать SSRF через external entities.
Но на сервере, который принимает файлы от пользователей, всё равно нужны resource limits, отдельный user/container и регулярное обновление dependencies.
Даже исправленный parser лучше изолировать: отдельный container/user, read-only mounts и отсутствие ненужных credentials уменьшают последствия будущей неизвестной уязвимости.
Даже хороший document understanding не гарантирует идеальную конвертацию
Низкое разрешение и артефакты снижают OCR quality.
Газетные колонки, callouts и дизайнерские отчёты могут нарушать reading order.
Merged cells и visual grouping не всегда восстанавливаются идеально.
Дополнительные models увеличивают время и resource usage.
Не стоит включать vision model для обычного цифрового PDF без причины.
512 tokens может быть отлично для одного corpus и плохо для другого.
Один красивый demo PDF ничего не говорит о том, как pipeline справится с вашими сканами, техническими таблицами или бухгалтерскими формами.
Где Docling особенно полезен
Сохранить headings и tables вместо плоского PDF text.
Вытащить таблицы отдельно в CSV/DataFrame.
Пакетно конвертировать DOCX/PDF/PPTX в единый формат.
Дать Claude/Codex tool «прочитай и структурируй этот документ».
Формулы, таблицы, hierarchy и специализированные XML formats.
Не отправлять документы в сторонний SaaS parser.
Docling: версия, форматы, CLI, MCP и security
На дату проверки актуальный Docling — 2.129.0 от 18 сентября 2026 года,
Python >=3.10,<4.0, MIT. Актуальный docling-mcp — 3.2.0.
Docling нужен тогда, когда качество входного документа важнее самого чата с LLM
Если в RAG загрузить плохо разобранный PDF, большая модель не восстановит потерянную таблицу, неправильный reading order или отсутствующий OCR-текст. Docling решает проблему раньше — на этапе подготовки документа.
Особенно полезен он для локальных AI-систем: можно держать parser рядом с Ollama/Qdrant, конвертировать закрытые документы внутри своей инфраструктуры и отдавать LLM уже нормализованные Markdown/chunks.
Частые вопросы о Docling
Что такое Docling простыми словами?
Open-source parser документов, который превращает PDF, Word, Excel, PowerPoint, изображения и другие форматы в структурированный document model, Markdown, JSON или RAG chunks.
Docling работает на Windows?
Да. Актуальный пакет официально поддерживает Windows, Linux и macOS.
Нужна ли видеокарта?
Нет для базового использования. GPU может ускорить model-based pipeline и нужен для тяжёлых VLM/enrichment сценариев.
Можно ли использовать Docling полностью локально?
Да для standard parsing/OCR/local models. Dependencies и model weights нужно заранее скачать, если среда полностью без интернета.
Docling умеет OCR?
Да. Поддерживаются несколько OCR backends, включая RapidOCR, Tesseract/Tesserocr, EasyOCR и OcrMac.
Можно ли извлекать таблицы?
Да. Таблицы становятся структурированными объектами и могут экспортироваться в DataFrame, CSV, HTML и Markdown.
Подходит ли Docling для RAG?
Да. CLI умеет напрямую экспортировать hierarchical или hybrid chunks в JSONL, а официальные examples покрывают LangChain, LlamaIndex, Haystack и разные vector databases.
Есть ли MCP?
Да. Официальный docling-mcp позволяет AI-клиентам вызывать document conversion и связанные tools.
Какая версия актуальна?
На 21 сентября 2026 года актуальный Docling — 2.129.0, а docling-mcp — 3.2.0.
Нужно разобрать PDF, технические паспорта или архив документов для локальной LLM?
Можно подобрать pipeline: Docling для parsing, OCR/table extraction, затем локальные embeddings, Qdrant и Ollama/Open WebUI/AnythingLLM для поиска и ответов.