Для массового извлечения данных из документов с помощью AI‑агента запишите схему в подсказку, укажите агенту папку и потребуйте список исключений в конце. Сервер GroupDocs.Parser.Mcp выполняет чтение локально в Docker‑контейнере, поэтому каждый файл проходит через одинаковые инструменты извлечения и ни один документ не покидает машину. LLM определяет порядок работы; движок читает файлы.

Для каждого PDF в моей папке с документами: извлечь таблицы в формате JSON, подсчитать сумму в колонке amount и предоставить одну таблицу с именем файла, общей суммой и количеством страниц.

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

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

Когда люди копируют значения из документов по одному, каждый файл обрабатывается немного иначе: один человек включает налог, другой — нет, третий пропускает файл с необычной разметкой. Несоответствия остаются незаметными, пока не сравниваются итоги. Рабочий процесс устраняет это, делая правила явными и применяя их к каждому файлу одинаково. С агентом правила находятся в одной подсказке, а инструменты извлечения работают идентично для первого и двухсотого файла.

Как построить рабочий процесс?

Подмонтируйте папку в контейнер как /data, задайте GROUPDOCS_MCP_STORAGE_PATH=/data и дайте агенту следующие шаги.

  1. Проверьте лицензию. Подсказка: “Run get_license_status and tell me the mode.” Извлечение без лицензии ограничено, а частичное чтение папки дает тихо неверный набор данных.
  2. Триаж папки. Подсказка: “For each file, report format, page count and whether text extraction returns anything.” get_document_info предоставляет тип, количество страниц и размер, а одностраничный вызов extract_text показывает, есть ли текст.
  3. Исправьте схему. Подсказка: “For each readable file, extract the line-items table as JSON. Columns: item, quantity, amount. Total the amount column.” Для этого используется extract_tables.
  4. Соберите ошибки явно. Подсказка: “List every file that failed, was password-protected, or returned no table, with the reason.” Пакет, который сообщает только об успехах, скрывает исключения.
  5. Запишите результат. Подсказка: “Write one row per file to a CSV in the output folder.”

Файлы разрешаются по имени внутри контейнера, поэтому агент передаёт invoice-014.pdf, а не путь хоста.

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

Шаг Что решает агент Что делает движок
Триаж Какие файлы извлекать Сообщает тип, количество страниц и размер; extract_text показывает, есть ли текст
Захват Какой инструмент нужен каждому файлу Возвращает текст или строки таблицы из файла
Валидация Совпадает ли итог с текстом Ничего; агент сравнивает
Исключения Какие файлы включить в список Возвращает сообщение об ошибке для проблемного файла
Вывод Формат CSV Ничего; агент записывает его

Разделение — это суть. Захват значений — детерминированная работа движка; оценка и сборка — задача агента.

Пример сеанса (сокращённый):

You:    Check the license, triage the folder, then extract line items from every readable PDF and list the exceptions.
Agent:  [calls get_license_status, get_document_info x12, extract_text, extract_tables x10]
        License mode: evaluation. Results below are a smoke test.
        12 files: 10 with a text layer, 1 scan, 1 password-protected.
        Totals written for 10 files. Exceptions: scan-007.pdf (no text layer), hr-020.pdf (password required).

Что происходит с файлами, которые не подходят?

Скан не имеет текстового слоя, поэтому извлечение таблиц ничего не возвращает. Отложите такие файлы в сторону или позвольте агенту переключаться на extract_barcodes, когда на странице присутствует номер отслеживания или код заказа. Список «пройденных» одновременно служит инвентаризацией сканов в архиве. Файл, защищённый паролем, не проходит свой вызов, поэтому попросите агента сообщить о нём и продолжить; инструменты принимают аргумент password, если он у вас есть.

Как сделать большой запуск экономичным?

  • Ограничьте по страницам, когда данные находятся в известном месте, например, на первой странице каждого счёта.
  • Избегайте extract_images в массовом режиме. Он создаёт файл для каждого изображения, а папка с иллюстрированными отчётами генерирует сотни файлов.
  • Следите за метered‑использованием. При метered‑лицензировании каждый вызов оплачивается по обработке, поэтому целенаправленный обход стоит дешевле, чем полный.

Каковы ограничения?

Без лицензии извлечение ограничено; точные ограничения указаны на странице лицензирования библиотеки. У сервера нет OCR, поэтому отсканированный текст нельзя захватить. Он поставляется только как Docker‑образ; команды dnx нет.

Как зарегистрировать сервер?

Минимальная ручная запись для Cursor, Claude Desktop или Windsurf с использованием путей контейнера из документации по конфигурации Parser:

{
  "mcpServers": {
    "groupdocs-parser": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/path/to/documents:/data",
               "-e", "GROUPDOCS_MCP_STORAGE_PATH=/data",
               "ghcr.io/groupdocs-parser/parser-net-mcp:latest"]
    }
  }
}

FAQ

Можно ли обрабатывать папку со счетами с помощью AI без их загрузки?
Да. Контейнер читает смонтированную папку и общается с вашим клиентом через stdio, поэтому счета остаются на вашем компьютере.

Как выполнить пакетное извлечение текста из PDF‑ов локально?
Попросите агента пройтись по папке и вызвать extract_text для каждого файла, постранично для длинных документов, потому что очень большие выводы обрезаются маркером.

Может ли агент автоматизировать ввод данных из документов?
Он может собрать извлечённые строки в CSV или сводную таблицу. Просмотрите список исключений, прежде чем что‑то будет внесено в другую систему.

Углубиться