# Open WebUI и Docling: таблицы PDF для локального RAG

Источник: https://modelium.tech/zhurnal/open-webui-docling/

Open WebUI может отправлять PDF в Docling Serve как внешний движок извлечения, а затем индексировать полученный текст для RAG. Сначала проверьте структуру таблицы в результате Docling, после загрузки — доступность нужной строки через поиск и ссылку на исходный PDF в ответе. Успешная загрузка файла сама по себе не доказывает правильности распознавания ячеек или ответа модели.

**Срез документации — 7 октября 2026 года.** Пошаговая страница Open WebUI о Docling опубликована как вклад сообщества и прямо помечена неподдерживаемой командой Open WebUI. Сверяйте интерфейс и совместимость на своих версиях. Документация Docling Serve описывает v1.21.0; это не означает, что ваш контейнер имеет эту версию. Modelium не запускал стек и не измерял качество. [s1](#src-s1) [s5](#src-s5)

## Когда нужен Docling вместо обычного чтения PDF?

Для вопроса по таблице важны не только слова, но и соответствие строки, столбца и страницы: ошибочно соединённые ячейки дадут правдоподобный, но неверный ответ. В этой схеме Docling Serve преобразует PDF, Open WebUI делит извлечённое содержимое на фрагменты и индексирует его, embedding-модель ищет фрагменты, а выбранная локальная LLM формулирует ответ. Это **четыре разных этапа** с разными проверками, а не одна кнопка «понимает PDF». Docling документирует обнаружение таблиц и экспорт в CSV/HTML; сохранность конкретной таблицы при импорте через Open WebUI проверяется отдельно. [s1](#src-s1) [s3](#src-s3) [s6](#src-s6)

Нужны работающий Open WebUI, модель ответа, настроенная локальная модель эмбеддингов, доступный Docling Serve и обезличенный PDF с известной таблицей. Для документов, которым нельзя покидать контур, проверьте фактические адреса extraction, embeddings и LLM: само слово «локальный» в названии интерфейса этого не гарантирует. У Docling Serve есть режим вызова удалённых сервисов для описания картинок; **не включайте** `DOCLING_SERVE_ENABLE_REMOTE_SERVICES=true` из примера сообщества, если такой сетевой вызов не нужен и не согласован. [s1](#src-s1) [s3](#src-s3) [s4](#src-s4) [s8](#src-s8)

## Как подключить Docling Serve без случайного доступа извне?

Разверните Docling Serve из документации проекта как отдельный HTTP-сервис. Официальный пример использует порт `5001`, а справочник установки описывает контейнерный и однопроцессный варианты; Local engine выполняет задания на одном узле. Для закрытого пилота поместите Open WebUI и Docling в одну разрешённую контейнерную сеть и проверьте доступ к адресу сервиса **из контейнера Open WebUI**, а не только из браузера администратора. Публиковать порт Docling в интернет для этой схемы не нужно: входной маршрут ограничьте собственной сетью, а если сервис доступен другим клиентам, настройте `DOCLING_SERVE_API_KEY` и передавайте ключ как `X-Api-Key`. Сетевое ограничение остаётся отдельным требованием даже при ключе. [s1](#src-s1) [s5](#src-s5) [s8](#src-s8)

В Open WebUI откройте **Settings → Admin → Documents**, выберите Docling как движок извлечения и задайте URL Docling Serve. В примере интеграции указан адрес контейнера `http://docling:5001`, а `localhost:5001` подходит только тогда, когда Docling действительно слушает в той же сетевой области, где работает вызывающий процесс; имена сервиса и адреса в вашем Compose могут отличаться. Если задан ключ Docling Serve, укажите его в предусмотренном поле Open WebUI и убедитесь, что он не попадает в статью или логи теста. Оставьте настройки описания картинок выключенными для первого текстового PDF. [s1](#src-s1) [s8](#src-s8)

Рецепт сообщества предлагает параметры `table_mode: accurate`, `do_ocr: true`, `ocr_engine: tesseract` и список `ocr_lang`. Это **варианты для проверки**, не доказанный оптимум: для цифрового PDF и скана получатся разные ветки обработки. Формат кода языка зависит от OCR-движка (трёхбуквенный у Tesseract, двухбуквенный у EasyOCR); подбирайте его под тестовый русский документ и подтверждайте фактический результат. Не копируйте пример `ocr_lang: ["eng"]` для русского скана как готовую настройку. [s1](#src-s1) [s2](#src-s2)

## Как проверить таблицу до создания RAG-индекса?

Возьмите тестовый PDF с 2–3 строками и ручной эталон: страница, заголовки столбцов, артикул, количество и цена одного товара. Сначала преобразуйте его непосредственно в Docling Serve и просмотрите полученный Markdown. Отдельный официальный пример Docling показывает, как экспортировать найденные таблицы в CSV и HTML: это позволяет сверить пары «название столбца → значение» без влияния LLM. Если строка переехала под другой столбец, повторный вопрос к RAG не исправит извлечение: измените настройки конвертера или обработайте документ другим путём. Это протокол для вашего стенда, **не** результат проверки Modelium. [s1](#src-s1) [s5](#src-s5) [s6](#src-s6)

Если прямое преобразование проходит, загрузите тот же PDF в **Workspace → Knowledge**, дождитесь завершения обработки и откройте предварительный просмотр извлечённого содержимого. Проверьте, что искомый артикул, число и заголовки остались вместе и есть указание на исходный файл. Затем прикрепите базу к чату через `#` либо к модели в настройках Workspace; режим привязки влияет на то, получает ли модель контекст сразу или должна вызвать инструмент поиска. В Troubleshooting Open WebUI отдельно рекомендует сначала проверить preview, прежде чем винить генеративную модель. [s3](#src-s3) [s4](#src-s4) [s7](#src-s7)

## Как проверить поиск и ответ с цитатой?

Задайте вопрос по одному **точному артикулу** и ожидаемому значению из строки. Сначала осмотрите найденный фрагмент или открытый файл: содержит ли он заголовок нужного столбца, артикул и число? Затем сравните ответ LLM с этой строкой и с оригинальной страницей PDF. Сохраните четыре свидетельства в своём журнале пилота: исходную строку, извлечённый текст, найденный фрагмент и ответ со ссылкой на файл. Наличие ссылки в ответе означает только связь с источником, не правильность ячеек; ошибку разметки таблицы надо ловить раньше. [s3](#src-s3) [s4](#src-s4) [s6](#src-s6)

Если модель ничего не находит, проверьте завершённость обработки, разрешения на базу знаний, включённые File Context/Builtin Tools и режим function calling. Документация предупреждает: база, прикреплённая к модели в режиме Default/Native при выключенных Builtin Tools, может остаться вообще недоступной модели. Для небольшого локального контекста уменьшите число подаваемых фрагментов или пересмотрите размер чанка; сначала докажите, что правильная строка извлечена и доступна поиску. [s3](#src-s3) [s4](#src-s4) [s7](#src-s7)

## Что делать после смены движка или OCR-настроек?

Open WebUI прямо указывает: **Reindex не разбирает исходный PDF заново**; он использует уже сохранённый извлечённый текст. Поэтому при смене Docling, OCR или параметров извлечения загрузите тестовый файл повторно и сравните новый preview со старым. При смене embedding-модели, напротив, переиндексация базы нужна: старые и новые векторы не лежат в одном сопоставимом пространстве. Для файлов, загруженных только в чат, штатная переиндексация базы не заменяет повторную загрузку. [s3](#src-s3)

Типовые симптомы: невозможность соединения — проверяйте сеть между контейнерами и URL; `404 /v1alpha/convert/file` — сравните версии Open WebUI и Docling Serve с документированным `/v1` API; ошибки `Task Not Found` при нескольких Uvicorn workers на Local engine — верните один worker или проектируйте общий backend задач; пустой/неполный preview — сверяйте OCR, исходный PDF и ограничения времени конвертации. Это рекомендации документации сообщества и проекта, а не диагностированный Modelium сбой вашего экземпляра. [s1](#src-s1) [s7](#src-s7) [s8](#src-s8)

**Следующий шаг:** проведите [контрольный тест качества RAG](/zhurnal/ocenka-kachestva-rag/) на обезличенном PDF. Не переносите реальные договоры, счета или персональные данные в новый стек, пока не подтверждены маршруты передачи, хранение, права доступа и качество извлечения на тестовом материале. [s3](#src-s3) [s4](#src-s4)

## Источники

1. [Open WebUI: Docling Document Extraction (community contribution)](https://docs.openwebui.com/features/chat-conversations/rag/document-extraction/docling/) — получено 2026-10-07
2. [Open WebUI: Document Extraction](https://docs.openwebui.com/features/chat-conversations/rag/document-extraction/) — получено 2026-10-07
3. [Open WebUI: Retrieval Augmented Generation](https://docs.openwebui.com/features/chat-conversations/rag/) — получено 2026-10-07
4. [Open WebUI: Knowledge Bases and Document Chat](https://docs.openwebui.com/features/workspace/knowledge) — получено 2026-10-07
5. [Docling: API server (docling-serve v1.21.0 documentation)](https://docling-project.github.io/docling/usage/api_server/) — получено 2026-10-07
6. [Docling: Export tables example](https://docling-project.github.io/docling/_generated/examples/export_tables/) — получено 2026-10-07
7. [Open WebUI: Troubleshoot Document Retrieval](https://docs.openwebui.com/troubleshooting/rag) — получено 2026-10-07
8. [Docling: API server deployment](https://docling-project.github.io/docling/usage/api_server/deployment/) — получено 2026-10-07
