Обзор Docling: подготовка документов для ИИ — это разбор парсера, который превращает PDF, DOCX, сканы и другие файлы в структурированное представление для последующей загрузки в поисковый контур. Документация проекта на docling-project.github.io описывает его как инструмент упрощения обработки документов с расширенным пониманием PDF и интеграциями с генеративными системами. Дальше — назначение, форматы, приёмка таблицы и границы применимости.
Назначение парсера и его место перед RAG
Парсер занимает позицию между исходным файлом и хранилищем, из которого модель достаёт фрагменты. Документация проекта перечисляет интеграции с фреймворками и сервисный запуск. В этом обзоре используем самостоятельный путь: извлечение, проверка результата, затем передача в выбранный поисковый контур.
В туториале IBM Developer по инструменту заполнения форм Docling назван открытым инструментом IBM, который разбирает документы и переводит HTML и PDF в формат, удобный для языковой модели, например в Markdown. Там же описана последовательность: приложение получает файл, конвертирует его и передаёт текст в модель. Разделение обязанностей важно для диагностики: ошибка в цифре может появиться на этапе извлечения, а может — на этапе генерации. Проверка парсера отвечает только за первую половину пути.
RAG нужен, когда набор контекстных документов велик. В том же туториале IBM Developer сказано, что для очень большого набора документов имеет смысл сначала разбить, векторизовать и извлекать документы из векторной базы, а затем передавать их модели. Парсер готовит материал для этой базы. Если извлечение потеряло строку таблицы, поиск найдёт неполный фрагмент, и модель ответит по неполным данным.
Практический вывод: приёмку парсера проводят до индексации. Сравнивают исходный документ и результат извлечения по конкретным признакам, и только после этого загружают данные в поисковый контур. Так ошибка извлечения не растворяется в общем качестве ответов.
Цифровой PDF, скан и OCR
Цифровой PDF может содержать доступный текстовый слой; его наличие и порядок чтения нужно проверить на исходном файле. Скан хранит изображение страницы, и текст из него извлекается распознаванием. Документация проекта на docling-project.github.io указывает расширенную поддержку OCR для сканированных PDF и изображений, а также поддержку визуально-языковых моделей, включая GraniteDocling.
Для цифрового PDF проверяют текст и структуру, включая связи ячеек и порядок чтения. Если читатель сделает скан нашей ведомости, отдельно нужно сверить распознавание A-10, B-20 и количеств. Время обработки на таком файле редакция не измеряла.
Порядок действий для скана: сначала прогон распознавания, затем проверка распознанного текста, затем проверка структуры. Смешивать эти этапы неудобно, потому что ошибка распознавания маскируется под ошибку разбора таблицы. Если читатель дополнительно создаёт скан учебной ведомости, распознавание проверяется отдельным прогоном, и версия использованной модели фиксируется отдельно. Редакция PDF и OCR не запускала.
DoclingDocument и форматы экспорта
Документация проекта на docling-project.github.io называет DoclingDocument единым выразительным форматом представления. Там же перечислены варианты экспорта: Markdown, HTML, WebVTT, DocLang, DocTags и JSON без потерь. Выбор формата определяет, что читатель получит на выходе и как будет проверять результат.
Markdown удобно читать человеку, а структурированный JSON использовать для программной проверки ячеек. Ни один формат сам по себе не подтверждает правильность распознанного содержания.
Базовый вызов в документации проекта выглядит так: создаётся DocumentConverter, вызывается convert для источника, затем результат экспортируется методом export_to_markdown. Источником служит локальный путь или URL. Документация проекта также описывает освобождение входных ресурсов: после конвертации вызывается release у входного объекта, что выгружает бэкенд и закрывает потоки. Повторный вызов release безопасен, а во время активной работы с бэкендом его вызывать не следует.
Практический вывод: Markdown берут для чтения и передачи в модель, JSON — для автоматической сверки. Формат экспорта выбирают под задачу проверки.
Самостоятельный запуск без LangChain
README приводит установку библиотеки, а страница Usage — конвертацию локального пути или URL и экспорт в Markdown. После создания учебного файла vedomost.pdf ниже можно подготовить такое отдельное окружение:
python -m venv .venv
# Активируйте окружение способом своей оболочки.
python -m pip install docling
docling --help
docling vedomost.pdf
Команда CLI показывает простой самостоятельный путь. Для выбора нужных выходных форматов сверяйте параметры своей версии через --help. Название vedomost.pdf здесь задаёт читатель; оно не является готовым вложением сайта. Первый запуск может потребовать загрузки ресурсов выбранных моделей, поэтому работу без сети проверяют после подготовки окружения.
Программный вариант той же конвертации:
from pathlib import Path
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("vedomost.pdf")
result.input.release()
markdown = result.document.export_to_markdown()
Path("vedomost.md").write_text(markdown, encoding="utf-8")
Вызов release() освобождает входной бэкенд после завершённой конвертации; экспортированное представление остаётся доступным. Этот код — редакционная адаптация документированного API, запуск на учебном файле не выполнялся. После получения vedomost.md сверьте строки с эталоном ниже. Для структурированного экспорта используйте документированный сериализатор установленной версии и проверяйте те же отношения между кодом, названием и количеством.
Полный учебный документ и сохранение в PDF
Для приёмки нужен документ, устройство которого известно заранее. Ниже — полный учебный текст. Читатель создаёт его в Word или LibreOffice и сохраняет как PDF. Публичного готового вложения статья не обещает.
Склад учебного проекта
Ведомость от 10 ноября 2026
Код | Название | Количество, шт.
A-10 | Кабель | 2
B-20 | Переходник | 3
Итого: 5 шт.
Дата поставки не назначена. Резерв в количество не включён.
Шаги создания файла: открыть текстовый редактор, набрать заголовок и подзаголовок, вставить таблицу с тремя колонками и двумя строками данных, добавить под таблицей две отдельные строки, сохранить документ и экспортировать его в PDF. Страница A4, шрифт и поля остаются на выбор читателя. Такой источник содержит и таблицу, и текст вокруг неё, поэтому проверяет не только ячейки.
Ручной эталон извлечения: заголовок и дата относятся ко всей ведомости; две строки сохраняют пары A-10/Кабель/2 и B-20/Переходник/3; сумма 2+3=5; дата поставки остаётся неизвестной; резерв нельзя превратить в дополнительную строку количества. Эти значения заданы как учебный вход. Редакция Docling на этом файле не запускала.
Проверка ячеек и отношений
Корректный JSON подтверждает синтаксис и не подтверждает правильность ячеек. Приёмка идёт по признакам. Карта приёмки сравнивает источник, Markdown и структурированный экспорт по пяти признакам: число строк, связь кода с названием, связь числа с единицей, итог и примечание.
| Признак | Что сверяем | Эталон | Ошибочный результат |
|---|---|---|---|
| Число строк | количество строк данных | 2 | 2 |
| Код и название | пара в одной строке | A-10/Кабель, B-20/Переходник | A-10/Кабель, B-20/Переходник |
| Число и единица | количество рядом с «шт.» | 2 и 3 | 3 и 2 |
| Итог | сумма количеств | 5 | 5 |
| Примечание | текст о резерве и дате | сохранён | сохранён |
Заданный ошибочный результат A-10/Кабель/3 и B-20/Переходник/2 не проходит проверку, хотя сумма по-прежнему равна 5. Этот пример показывает, почему общий итог служит слабым индикатором: перестановка значений между строками сохраняет сумму и разрушает смысл ведомости. Проверять нужно связь кода с названием и связь числа с единицей в каждой строке.
Порядок сверки: открыть исходный PDF, открыть экспорт, пройти по строкам сверху вниз, отметить расхождения, затем сверить итог и примечание. Расхождение в одной ячейке фиксируется как дефект извлечения до передачи данных в поисковый контур.
Сохранение неизвестного и примечания
Неизвестное значение остаётся неизвестным. В учебной ведомости дата поставки не назначена, и это состояние должно дойти до модели в том же виде. Если парсер или последующая обработка подставят правдоподобную дату, читатель получит уверенный ответ по данным, которых в документе нет.
Примечание о резерве несёт ограничение: резерв в количество не включён. Примечание ограничивает толкование числа 5: размер резерва в учебном входе не указан. По ведомости нельзя вычислить общий запас вместе с резервом. Примечание проверяют как отдельный элемент результата.
Практический приём: в схеме извлечения завести отдельное поле для неизвестного значения и отдельное поле для примечания. Пустое поле честнее подставленного значения. В туториале IBM Developer по заполнению форм есть похожая установка в промпте: извлекать только явно указанную информацию и оставлять поля пустыми, если сведения не приведены. Там же сказано не добавлять детали сверх данного. Этот принцип переносится на приёмку таблиц.
Локальные компоненты и внешние сервисы
Документация проекта на docling-project.github.io указывает локальное исполнение для чувствительных данных и изолированных сред. Там же перечислены интеграции с внешними инструментами и запуск как сервиса. Эти два режима различаются по тому, куда уходят данные.
| Режим | Где выполняется обработка | Что подключается явно |
|---|---|---|
| Локальный запуск | на машине читателя | библиотека и локальные модели |
| Сервисный запуск | на выделенном сервере | API-сервер docling-serve |
| Внешняя модель | у выбранного провайдера | ключи и адрес сервиса |
В туториале IBM Developer пример использует watsonx.ai и LangChain, а переменные окружения с идентификатором проекта и ключом задаются перед запуском серверной части. Это внешний сервис со своими условиями. Документация Open WebUI описывает интеграцию с Docling как пример сообщества: версии и настройки там свои, и переносить их на все установки нельзя.
Практический вывод: перед запуском читатель определяет, какие компоненты работают на его машине и какие обращаются к внешнему сервису. Ключи храните в переменных окружения; отдельно проверьте, что приложение и настройки журналирования не выводят их в логи.
Границы применимости и честная оценка
Точность, скорость и полнота сохранения таблиц зависят от конкретного документа и конфигурации. Документация проекта на docling-project.github.io перечисляет возможности, включая понимание разметки страницы, порядка чтения и структуры таблиц. Эти возможности описывают назначение инструмента.
Измерение качества проводится на своём наборе файлов. Для этого готовят несколько документов с известным устройством, прогоняют их и сравнивают результат с эталоном по признакам из карты приёмки. Число строк, связи и примечания дают проверяемые показатели. Итоговая сумма без сверки строк показатель слабый.
Учебный пример в этой статье задан как вход для ручной проверки. Значения 2, 3 и 5 рассчитаны по этому входу. Редакция Docling, PDF и OCR не запускала, поэтому статья не содержит измеренной точности, скорости или доли сохранённых таблиц. Читатель получает процедуру приёмки и применяет её к своим документам.
Частые вопросы
Что такое Docling и для чего он нужен?
Это парсер документов для последующей обработки и поиска. В нашем примере он должен сохранить строки ведомости, итог и неизвестную дату поставки.
Docling от IBM — это официальный проект?
README проекта сообщает, что он развивается в фонде LF AI & Data и начат командой AI for knowledge в IBM Research Zurich. Кодовая база распространяется по лицензии MIT. Условия использования отдельных моделей указаны в их исходных пакетах.
Как установить и запустить Docling?
README проекта приводит команду установки pip install docling и отмечает, что поддержка Python 3.9 прекращена в версии 2.70.0, нужен Python 3.10 или выше. Запуск из терминала выполняется командой docling с адресом документа. Для программной работы создаётся DocumentConverter и вызывается convert.
Как проверить, что таблица извлечена правильно?
Сравните исходный документ и экспорт по признакам: число строк, связь кода с названием, связь числа с единицей, итог и примечание. Перестановка значений между строками сохраняет сумму и разрушает смысл. Проверка по строкам выявляет такой дефект, проверка по итогу его пропускает.
Работает ли Docling локально и нужен ли внешний сервис?
Локальный запуск поддерживается. Перед обработкой своей ведомости проверьте, какие модели и сервисы включены в выбранную конфигурацию и куда отправляется содержимое файла.
