Подробное руководство по Docling
Docling — это новый, открытый исходный код (open-source) инструментарий, разработанный IBM Research, предназначенный для эффективного преобразования сложных корпоративных документов (таких как PDF, руководства, презентации и отчеты) в специализированные структурированные данные.
Основная цель Docling — извлечь данные, хранящиеся в этих сложных форматах, и подготовить их для использования в приложениях генеративного ИИ (Gen AI), таких как крупномасштабные языковые модели (LLM) и системы дополненной генерации с извлечением (RAG).
1. Ключевые особенности и преимущества Docling
Docling выступает в качестве специализированного уровня приема данных для современного стека ИИ.
| Категория | Описание и особенности | Источники |
|---|---|---|
| Поддерживаемые форматы | Docling может обрабатывать множество форматов, включая PDF, DOCX, PPTX, XLSX, HTML, изображения (PNG, TIFF, JPEG и др.), а также аудио (WAV, MP3) и текстовые дорожки (VTT). | |
| Продвинутый анализ PDF | Инструмент превосходит базовое извлечение, понимая макет страницы, порядок чтения, структуру таблиц, код, формулы и классификацию изображений. | |
| Качество вывода | Docling преобразует неструктурированные документы в файлы JSON и Markdown, которые легко обрабатываются LLM. Он сохраняет целостность и структуру исходного документа (например, заголовки, списки, таблицы), что имеет решающее значение для качества RAG-систем. | |
| Локальное выполнение | Docling достаточно мал, чтобы работать на стандартном ноутбуке, и может быть запущен полностью локально (local-first). Это критически важно для обработки конфиденциальных данных и использования в средах с ограниченным доступом к сети (air-gapped environments). | |
| Интерфейсы | Предоставляет интерфейс командной строки (CLI) и Python API. | |
| Лицензия | Распространяется под разрешительной лицензией MIT (MIT-licensed open-source package). | |
| Скорость | Docling является одним из самых быстрых решений в своем классе. Обход традиционного OCR позволяет сократить количество ошибок и ускорить время получения результата в 30 раз. По бенчмаркам, он обрабатывает одну страницу за 1.26 секунды на архитектуре M3 Max. |
2. Архитектура Docling: Как это работает?
Docling построен на модульной, расширяемой архитектуре, включающей конвейеры (Pipelines), бэкэнды парсеров (Parser Backends) и унифицированную модель данных (DoclingDocument).
2.1. Основные компоненты конвейера
Конвейер Docling — это последовательность операций, которые выполняются на каждом документе.
- Бэкэнды парсеров: Начинается с низкоуровневого парсинга файла. Для PDF по умолчанию используется собственный C++ бэкэнд
docling-parse(на основеqpdf) для быстрого извлечения текста и векторной графики, хотя также доступен альтернативный бэкэнд, основанный наpypdfium. - Модель анализа макета (Layout Analysis Model): Используется модель компьютерного зрения, обученная распознавать и классифицировать визуальные элементы на странице. Эта модель, являющаяся детектором объектов (object-detector) и основанная на DocLayNet, предсказывает ограничивающие рамки (bounding boxes) для элементов страницы, таких как параграфы, заголовки и изображения.
- TableFormer: Вторая ключевая модель, предназначенная для преобразования таблиц на основе изображений в машиночитаемые форматы с распознанными строками и столбцами ячеек. TableFormer способен восстанавливать логическую структуру таблиц, включая сложные случаи с частичными или отсутствующими границами, объединением ячеек (cell spans) и иерархией.
- Сборка (Assembly): На этом этапе результаты, полученные со всех страниц, агрегируются, корректируется порядок чтения, сопоставляются рисунки с подписями и извлекаются метаданные (заголовок, авторы, язык документа).
2.2. DoclingDocument
Независимо от исходного формата, Docling преобразует документ в единый, выразительный формат DoclingDocument. Это не просто текст, а богатая структурированная репрезентация, которая сохраняет всю иерархию документа, включая информацию о макете, геометрическое расположение контента, номера страниц и таблицы. Эта структура готова для последующего использования в приложениях ИИ.
2.3. OCR и ASR
Docling предпочитает использовать модели компьютерного зрения для распознавания макета, чтобы избежать ошибок и медлительности, присущих традиционному OCR.
Однако Docling предлагает обширную поддержку OCR для работы с отсканированными PDF и изображениями.
- Движки OCR: Поддерживается EasyOCR (по умолчанию), Tesseract CLI (интерфейс командной строки) и TesseractOcrOptions (для связывания Tesseract), а также RapidOCR.
- ASR: Docling также поддерживает аудиофайлы, используя модели автоматического распознавания речи (ASR).
3. Начало работы и использование
Docling можно установить как Python-пакет и использовать через API или CLI.
3.1. Установка
Docling требует Python версии 3.10, 3.11 или 3.12.
Базовая установка (CPU):
pip install docling
Для установки с поддержкой только CPU на Linux рекомендуется использовать:
pip install docling --extra-index-url https://download.pytorch.org/whl/cpu
Примечание: Для использования Tesseract OCR, его необходимо предварительно установить как системную зависимость.
3.2. Использование Python API
Для преобразования документов достаточно всего нескольких строк кода:
Простое преобразование в Markdown:
from docling.document_converter import DocumentConverter
# Укажите путь к PDF-файлу или URL
source = "https://arxiv.org/pdf/2408.09869"
converter = DocumentConverter()
result = converter.convert(source)
# Вывод структурированного Markdown
print(result.document.export_to_markdown())
3.3. Расширенная настройка преобразования
Для управления процессом используются классы DocumentConverter и PdfPipelineOptions.
Настройка OCR и режима TableFormer:
Вы можете включить OCR или выбрать более точный (но медленный) режим TableFormer:
from docling.document_converter import DocumentConverter
from docling.datamodel.pipeline_options import PipelineOptions, TableFormerMode
pipeline_options = PipelineOptions(
do_table_structure=True, # Включить распознавание структуры таблиц
do_ocr=True, # Включить OCR
)
# Использование более точной, но медленной модели TableFormer
pipeline_options.table_structure_options.mode = TableFormerMode.ACCURATE
doc_converter = DocumentConverter(pipeline_options=pipeline_options)
# Преобразование документа
# ...
.
3.4. Использование Командной строки (CLI)
Docling также предоставляет простой и удобный CLI.
Примеры команд CLI:
- Конвертация одного файла (по умолчанию в Markdown):
docling https://arxiv.org/pdf/2206.01062 - Конвертация в JSON и Markdown без OCR:
docling myfile.pdf --to json --to md --no-ocr - Пакетная конвертация файлов в папке:
docling ./input/dir --from pdf --from docx --to md --to json --output ./scratch
4. Применение в AI-рабочих процессах
Docling разработан специально для подготовки данных для Gen AI.
4.1. Интеграция с RAG
Docling легко интегрируется с ведущими фреймворками LLM, такими как LangChain и LlamaIndex.
- DoclingLoader (для LangChain): Предоставляет возможность использовать Docling для загрузки документов, облегчая сложные рабочие процессы.
- DoclingReader и DoclingNodeParser (для LlamaIndex): Позволяет загружать документы и интеллектуально разделять структурированный JSON
DoclingDocumentна отдельные узлы (nodes) для текста, таблиц и других элементов, что обеспечивает более точный поиск, чем стандартное разделение текста. - Многомодальный RAG (Multimodal RAG): Docling используется для предварительной обработки документов, извлекая текст, таблицы и изображения. Изображения могут быть обработаны мультимодальной LLM (MLLM), такой как Granite vision, для генерации описаний, которые затем векторизуются вместе с текстовыми блоками и таблицами для использования в RAG-системе.
4.2. Чанкинг (Chunking)
Docling включает функции, такие как HybridChunker и HierarchicalChunker, которые разделяют документ с учетом его иерархии и структуры, создавая семантически связные фрагменты, оптимизированные для векторизации и RAG.
4.3. Извлечение структурированной информации (Beta)
Docling предоставляет возможность извлекать структурированные данные из неструктурированных документов, используя заданную схему данных, представленную в виде словаря (dict) или модели Pydantic.
Пример использования модели Pydantic для извлечения счета:
Пользователь определяет желаемую схему (например, класс Invoice), и DocumentExtractor Docling возвращает извлеченные данные, организованные по страницам, в соответствии с этой структурой.
5. Области применения
Docling идеально подходит для решения задач, связанных с большими объемами документов:
- Подготовка данных для Fine-Tuning LLM: Используется для извлечения информации из целевых PDF для обучения базовых моделей ИИ (например, InstructLab).
- Корпоративное управление знаниями (Enterprise Knowledge Management): Структурирование внутренних руководств, политик и технической документации для LLM.
- Юриспруденция и комплаенс (Legal & Compliance): Анализ юридических документов и договоров.
- Исследования и научные работы: Извлечение таблиц, цитат и сводок из академических статей.
- Финансовая отчетность: Обработка ежегодных отчетов и 10-K файлов.
Частые вопросы (FAQ) и ответы по Docling
1. Какие основные модели ИИ использует Docling для анализа документов?
Docling опирается на две ключевые специализированные модели ИИ, разработанные IBM Research:
- Модель анализа макета (Layout Analysis Model): Детектор объектов, обученный на DocLayNet. Он используется для распознавания элементов страницы, таких как параграфы, заголовки и сноски.
- TableFormer: Визуальная модель-трансформер, предназначенная для высококачественного распознавания и восстановления структуры таблиц, даже если таблицы основаны на изображениях.
2. В чем главное преимущество Docling перед традиционным OCR?
Docling старается обходить традиционное оптическое распознавание символов (OCR), когда это возможно, в пользу моделей компьютерного зрения, обученных распознавать визуальные элементы. Это позволяет уменьшить количество ошибок и увеличить скорость обработки в 30 раз. OCR (например, EasyOCR или Tesseract) используется опционально только для сканированных или нецифровых документов.
3. Насколько Docling быстрый?
Docling демонстрирует умеренную и предсказуемую скорость.
- По результатам бенчмаркинга, Docling показал скорость 1.26 секунды на страницу на MacBook Pro M3 Max.
- При пакетной обработке его производительность масштабируется линейно: обработка 1 страницы занимает 6.28 с, а 50 страниц — 65.12 с.
4. Как Docling сравнивается с другими парсерами, такими как PyMuPDF, Unstructured или LlamaParse?
- Сравнение качества: Многие разработчики отмечают, что качество выходных данных Docling является лучшим среди всех открытых решений. Docling демонстрирует высокую точность извлечения текста (100% для плотных параграфов) и превосходное сохранение структуры таблиц (97.9% точности ячеек в сложных таблицах), что делает его наиболее надежным для сложных бизнес-документов.
- Сравнение скорости: Docling часто медленнее, чем PyMuPDF (PyMuPDF может быть в 50 раз быстрее, например, 8 секунд против 8 минут для одной задачи), но Docling предлагает лучшее качество извлечения и категоризацию для структурированного вывода. LlamaParse очень быстр (около 6 секунд независимо от размера документа), но Docling превосходит его в точности и структурной целостности для сложных документов.
5. Может ли Docling обрабатывать сканированные документы и рукописный текст?
Docling имеет обширную поддержку OCR для сканированных PDF и изображений. Однако, сталкивается с проблемами при обработке рукописного текста или отсканированных документов низкого качества, что может потребовать ручной проверки.
6. Какие форматы вывода поддерживаются?
Docling поддерживает несколько форматов вывода, включая Markdown, HTML, DocTags и JSON без потерь (lossless JSON). JSON-вывод включает богатую метаинформацию и структуру документа.
7. Какие функции планируются к добавлению в будущем?
Исследователи планируют расширить возможности Docling для обработки более сложных типов данных:
- Математические уравнения и формулы.
- Графики и диаграммы (Barchart, Piechart, LinePlot и т.д.).
- Код (распознавание блоков кода).
- Сложные химические структуры (Molecular structures).
- Извлечение метаданных, таких как название, авторы, ссылки и язык.
8. Является ли Docling полностью открытым исходным кодом, и может ли он использоваться офлайн?
Да, Docling распространяется под лицензией MIT и спроектирован для полного локального исполнения (run entirely locally), что позволяет использовать его офлайн в частных и безопасных средах, не отправляя конфиденциальные документы сторонним облачным API.