Docling: локальный разбор PDF, таблиц и OCR
На странице · 6 разделов
Docling преобразует PDF в структурированный документ и экспортирует его в Markdown или JSON; таблицы можно отдельно вывести в CSV. Для сканов нужен настроенный OCR-движок и подходящие языковые модели, а для офлайна — заранее загруженные артефакты. Проверяйте порядок чтения, ячейки и реквизиты на исходном документе: успешная конвертация не доказывает точность распознавания.
Документация Docling сверена по Git-ревизии
cd05bef2837cот 29 сентября 2026 года. Команды ниже взяты из справочника этой ревизии, но не запускались Modelium на PDF или OCR-модели. Перед рабочими документами проведите самостоятельный тест на разрешённом файле.
Что извлекает Docling и когда он полезен?
Docling — не одна OCR-модель. Он разбирает PDF и другие форматы в DoclingDocument: текст, таблицы, изображения, иерархию и, где доступно, координаты элементов; экспортирует результат в Markdown и JSON s1s8. Для счета или инструкции это путь от исходного файла к проверяемой структуре, а не готовое заполнение реквизитов 1С. Если задача — выбрать движок для фото или скана, начните с сравнения OCR; эта страница посвящена именно запуску Docling, таблицам и проверке вывода.
Вход: небольшой разрешённый PDF с текстовым слоем и второй файл со сканом страницы, русским текстом и таблицей. Ожидаемый выход: .md для чтения и .json с представлением документа; для последующего контроля строк — CSV из обнаруженной таблицы s3s4s7. Сохраните исходные файлы, известные правильные значения и версии окружения до теста. Не считайте успешный код завершения оценкой качества распознавания.
Как установить и конвертировать локальный PDF?
Документация указывает Python 3.10+ для актуальной линейки, установку docling через pip и поддержку macOS, Linux и Windows на обозначенных архитектурах. Вариант PyTorch, CPU/GPU и дополнительные OCR-пакеты зависят от вашего окружения; не выводите минимальную RAM или VRAM из размера пакета s1s2. Выполняйте команды в отдельном Python-окружении со своей версией python, затем сверяйте установленный CLI:
python -m venv .venv
. .venv/bin/activate
python -m pip install docling
docling --version
docling convert --help
Пример активации выше рассчитан на POSIX shell; на Windows используйте соответствующий способ активации virtualenv. Для закрытых файлов передавайте локальный путь, не URL. В закреплённом справочнике convert отделён от convert-remote: последняя команда обращается к серверу. По умолчанию --to выдаёт Markdown, --output задаёт каталог; явная команда для теста s4:
mkdir -p ./docling-out
docling convert --to md --to json --output ./docling-out ./test-invoice.pdf
Документация также показывает короткий вызов docling FILE и Python DocumentConverter().convert(source).document.export_to_markdown(); синтаксис ключей CLI именно для этой ревизии сверяйте через docling convert --help s1s3s4. Проверьте в выходном каталоге наличие и читаемость обоих файлов. JSON и Markdown не заменяют визуального сравнения с PDF: порядок строк, подписи колонок и цифры сумм могут требовать ручной сверки.
Как получить таблицы, а не только плоский текст?
Стандартный CLI включает распознавание структуры таблиц (--tables) и режим accurate, при этом разрешает --no-tables и --table-mode fast; выбор меняет обработку, но авторская метка accurate не является нашим независимым замером точности s4. В стандартном PDF-конвейере вариант do_cell_matching=False использует текстовые ячейки предсказанной структуры вместо сопоставления с ячейками PDF — диагностическая альтернатива, если колонки ошибочно склеиваются s5. Запишите вариант режима, сверяйте на одном файле, не переключайте настройки после получения удобного результата без протокола.
В официальном примере conv_res.document.tables содержит обнаруженные таблицы; каждый table.export_to_dataframe(doc=conv_res.document) преобразует таблицу в DataFrame, из которого автор экспортирует CSV. Это пример API, не гарантия, что Docling распознает таблицу на конкретном счёте s7. Для собственного скрипта после установки Docling и pandas:
from pathlib import Path
from docling.document_converter import DocumentConverter
result = DocumentConverter().convert("./test-invoice.pdf")
out = Path("./docling-out")
out.mkdir(exist_ok=True)
for index, table in enumerate(result.document.tables, start=1):
frame = table.export_to_dataframe(doc=result.document)
frame.to_csv(out / f"table-{index}.csv", index=False)
Проверьте число строк и колонок, артикулы, единицы измерения, разделители чисел и совпадение каждой критичной суммы со сканом. Если tables пуст, сначала сравните наличие таблицы в исходнике и структуру PDF; не добавляйте фиктивную строку в CSV. CSV из извлечения — черновик данных, а не разрешение автоматически записывать их в 1С. Сценарий сверки счёта и акта продолжает процесс после парсинга.
Что делать со сканами и русским OCR?
В стандартном CLI OCR и таблицы включены по умолчанию, но выбранный --ocr-engine auto и языки не означают автоматически проверенное распознавание русского s4. Официальная документация перечисляет EasyOCR, RapidOCR, Tesseract CLI/tesserocr и другие движки; часть пакетов ставится отдельно, а Tesseract требует системной установки и языковых данных s2s6. Для эксперимента задайте движок и язык осознанно:
docling convert --ocr-engine tesseract --ocr-lang iso:ru --to md --output ./docling-out ./scan-invoice.pdf
Это только пример конфигурации: нужен установленный Tesseract и русский traineddata. В этой ревизии iso: задаёт переносимый BCP-47 тег и преобразуется в собственный код движка; голое ru передаётся нативным кодом и у разных движков трактуется по-разному. Для RapidOCR iso:ru ведёт к eslav линейки PP-OCR v5, для EasyOCR — к кириллической модели; пустой выбор языка у RapidOCR обращается к китайскому варианту по умолчанию s4s6. Не приписывайте Docling универсальную русскую модель и не объявляйте его OCR точнее Tesseract без одинакового корпуса и выбранного backend.
Если русский языковой файл отсутствует, подготовьте его через поддерживаемый пакет для вашей ОС; руководство Docling требует установленный Tesseract и настроенный путь к tessdata s2s6. Сверяйте буквосочетания и цифры в исходнике, отдельно отмечайте ложные объединения строк, ошибки в ИНН, датах и суммах. Для PDF с готовым текстовым слоем сравните вывод стандартного пути с --no-ocr на одной странице; OCR не должен автоматически подменять достоверный текст s4.
Можно ли запускать Docling без сети?
По умолчанию модели могут загрузиться при первом использовании; документация предлагает docling-tools models download, указание каталога через --artifacts-path или DOCLING_ARTIFACTS_PATH и отдельную подготовку OCR-моделей нужных языков s4s5. В сети подготовки загрузите именно компоненты выбранного конвейера, потом перенесите их по разрешённой процедуре. Пример для заранее подготовленного каталога:
docling convert --artifacts-path ./prepared-models --to md --output ./docling-out ./test-invoice.pdf
convert-remote отправляет документ в сервис; convert с локальным файлом — путь локальной обработки. При этом флаг --no-enable-remote-services запрещает явно поддерживаемые удалённые inference-сервисы, но не является сетевым экраном и не отменяет загрузку отсутствующих весов; это разные механизмы в документации s4s5. Без независимой сетевой проверки всего окружения нельзя гарантировать «никаких исходящих соединений». Протокол проверки офлайн-контура — дополнительный контроль после успешной конвертации.
Как решить, годится ли результат?
На одной и той же паре разрешённых PDF сохраните исходник, конфигурацию движка, версии Python/Docling и модельных артефактов, ожидаемые строки таблицы и поля. Сравните Markdown, JSON и CSV с визуальным оригиналом по порядку чтения, колонкам, цифрам и пропускам. Отдельно измерьте на своём оборудовании время и фактическую память, не используя чужой размер весов как требование. Если нужен поиск по документам, после качественного извлечения ещё потребуются разбиение, embeddings, хранилище и проверка цитат; Docling сам по себе не подтверждает качество итогового RAG.
Следующий шаг: проверьте извлечённые реквизиты в сценарии для 1С до загрузки в учётную систему. Modelium не запускал приведённые команды с Docling или клиентскими документами: статья опирается на закреплённую документацию, а не на собственный бенчмарк.
Источники
- Docling — README, закреплённая ревизия — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — installation, закреплённая ревизия — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — quickstart, закреплённая ревизия — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — CLI reference, закреплённая ревизия — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — advanced options: модели и локальное исполнение — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — OCR and language selection — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — пример экспорта таблиц — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.
- Docling — структура DoclingDocument — revision cd05bef2837c879cb636b5e8e61b03405bfdf7b8. Получено 29.09.2026.