Вы можете позволить ИИ‑агенту просматривать страницу документа вместо того, чтобы читать её текстовый дамп. Сервер GroupDocs.Viewer.Mcp рендерит любую страницу PDF, Word, Excel или PowerPoint файла в PNG и возвращает её агенту, делая это локально на вашем компьютере:

Сколько страниц в report.pdf? Затем покажи последнюю.

Пошаговая версия с конфигурацией и устранением неполадок находится в документации: Как позволить ИИ‑агенту видеть страницы документов.

Почему извлечение текста не работает с реальными документами?

Текстовый извлекатель возвращает символы в порядке чтения. Он не возвращает столбчатую диаграмму между двумя абзацами, штамп «APPROVED» в углу, колонковую разметку таблицы цен или страницу, которая является сканированным изображением и не содержит символов вовсе. Агент, работающий с таким выводом, уверенно отвечает о документе, который он увидел лишь наполовину, а недостающая половина обычно является той частью, о которой вы спрашивали.

Исправление — не лучший запрос. Это другой ввод: страница в виде изображения, передаваемая модели, принимающей изображение.

Неправильный подход: пропускать всё через извлечение текста

Обычный вариант — конвертировать документ в текст, вставить текст в окно контекста и задавать вопросы. Это работает для прозы. Он ломается четырьмя способами, которые вы можете проверить на любом своём документе:

  • Разметка исчезает, поэтому вопрос «находится ли итог в правой колонке?» нельзя ответить.
  • Графики внутри диаграмм исчезают, потому что они нарисованы, а не набраны.
  • Печати, подписи и рукописный текст исчезают.
  • Отсканированный PDF не содержит текста.

Модель не может восстановить информацию, которая была удалена до того, как она увидела документ.

Правильный подход: рендерить страницу PDF в изображение для LLM

render_page рендерит одну страницу в PNG, возвращает изображение встроенно агенту и сохраняет копию в вашей папке вывода как <name>_page<N>.png. Сервер поддерживает более 170 форматов, включая PDF, DOCX, XLSX, PPTX, ODT, RTF, HTML, EML и MSG. Модель, способная работать с изображениями, тогда видит страницу так, как вы бы её видели.

Агент не должен угадывать номера страниц, поэтому он сочетает render_page с get_view_info, который возвращает тип файла, количество страниц и размер каждой страницы без рендеринга. Третий инструмент, get_license_status, сообщает активный режим лицензирования.

Как запустить сервер для Claude, Cursor или Copilot?

Docker‑образ самодостаточен:

docker run --rm -i -v $(pwd)/documents:/data \
  ghcr.io/groupdocs-viewer/viewer-net-mcp:latest

С установленным .NET 10 SDK команда dnx GroupDocs.Viewer.Mcp --yes запускает тот же сервер без Docker. Зарегистрируйте его в Claude Desktop, Claude Code, Cursor, VS Code с GitHub Copilot, Windsurf и других клиентах; страница хаба перечисляет точную конфигурацию для каждого. Клиент запускает сервер как дочерний процесс и общается с ним через стандартный ввод и вывод, поэтому нет входного порта и конечной точки для защиты.

Пример сеанса

Это иллюстрация, построенная на задокументированном поведении двух инструментов, а не захваченный скриншот.

You:   How many pages does report.pdf have? Then show me the last one.

Agent: [calls get_view_info on report.pdf]
       report.pdf is a PDF with 2 pages, both 612 x 792 points (US Letter).
       [calls render_page with page = 2]
       Page 2 of 'report.pdf' Saved to: <output folder>/report_page2.png
       Here is what page 2 shows: ...

Изображение появляется встроенно в клиентах, которые его отображают. Текстовый ответ — это описание агентом того, что он видит на странице.

Что решает агент, а что делает движок?

Агент решает, какая страница отвечает на вопрос и что спросить у модели о ней. Движок выполняет точную часть: открывает файл, разбивает его на страницы так же, как делает это документ, и создаёт PNG. Модели никогда не нужно угадывать разметку страницы, потому что она получает уже отрендеренную страницу.

Честные ограничения

  • Evaluation mode. Без лицензии отрендеренные страницы содержат водяной знак оценки, а процесс сервера открывает не более 15 документов. Водяной знак может закрывать именно ту деталь, о которой вы спрашиваете. Спросите у агента «Лицензирован ли сервер Viewer?», чтобы он вызвал get_license_status перед тем, как вы будете полагаться на прочитанное.
  • PNG only. Вывод — изображение PNG; вариантов формата нет.
  • No page-number check. render_page не отклоняет номер страницы, превышающий последнюю. Сначала проверьте количество с помощью get_view_info.
  • The model must accept images. При модели, принимающей только текст, агент всё равно получает путь к сохранённому файлу, но не может сказать, что находится на странице.
  • Images are large. Каждая страница — встроенный PNG, часто несколько сотен килобайт. Рендерьте только те страницы, которые нужны задаче, а не весь файл.
  • One thing leaves the machine. Отрендеренное изображение отправляется агенту и оттуда к используемой модели. При локально размещённой модели всё остаётся на машине.

Часто задаваемые вопросы

Может ли Claude увидеть мою страницу PDF и её разметку? Да, если страница PDF отрендерена в изображение и используемая модель Claude принимает ввод изображений. render_page создаёт это изображение локально и возвращает его клиенту.

Нужно ли где‑то загружать документ для рендеринга? Сервер читает файл из папки, которую вы монтируете, и записывает изображение рядом с ним; документ сервером не загружается. Изображение страницы всё же отправляется модели вашего агента.

Работает ли это с Excel и PowerPoint, а не только с PDF? Да. PowerPoint рендерит одно изображение на каждый слайд, а листы Excel разбиваются на страницы, количество которых видно через get_view_info.

Подробнее