Категория

Автоматизация обработки счетов с помощью ИИ-агента в .NET

2026-08-28 07:50:38 jie zou
AI Summarize:
ChatGPT
ChatGPT
Claude
Grok
Perplexity
Quick
Quick
Concise overview
Highlights
Key takeaways
Detailed
Structured explanation
Brief
One sentence summary
Summarize |

Автоматизация обработки счетов с помощью ИИ-агента в .NET — извлечение данных из PDF, Word, Excel и сканированных изображений в единую структурированную книгу с помощью инструкций на естественном языке

Автоматизированная обработка счетов означает чтение входящих счетов от поставщиков, извлечение позиций, их сверку с заказами на поставку и запись результатов в структурированную книгу, которую может использовать ваша финансовая система. На практике это автоматизация документов в .NET, где инструкции на естественном языке заменяют код для сопоставления полей и настройки макетов. Spire.Agent.Office — это SDK ИИ-агента для работы с документами, который берет на себя обработку языка, а детерминированный уровень работы с документами гарантирует получение корректных файлов Excel и PDF.

Быстрая навигация

  1. Почему обработка счетов подходит для ИИ
  2. Что может и чего не может ИИ-агент для счетов
  3. Типичные сценарии обработки счетов
  4. Три способа автоматизации обработки счетов в .NET
  5. Пример работы: извлечение, проверка и отчетность на C#
  6. Почему стоит использовать Spire.Agent.Office для обработки счетов с ИИ
  7. Часто задаваемые вопросы (FAQ)

1. Почему обработка счетов подходит для ИИ

Работа со счетами в мире разработки — это три повторяющиеся задачи: чтение (извлечение поставщика, даты, позиций и итоговых сумм из документов, поступающих в виде PDF, файлов Word, таблиц Excel или сканированных изображений), проверка (сверка счетов с заказами на поставку и выявление расхождений) и создание (запись результатов в структурированную книгу для бухгалтерской системы).

Для .NET-разработчиков проблема заключается не только в понимании содержания счета, но и в превращении неструктурированных документов в различных форматах в структурированные, воспроизводимые рабочие процессы.

Три свойства делают эти задачи идеальными для языковой модели, а не для жестко заданных правил:

  • Входные данные имеют разные форматы. Входящие счета приходят как вложения PDF, сканированные изображения, документы Word или файлы Excel — каждый со своим макетом. Правила, работающие для одного формата, ломаются на другом; LLM же читает текст напрямую, независимо от типа файла.
  • Выходные данные имеют форму документа. Результатом является реальный файл .xlsx или .pdf с правильным форматированием, а не просто набор текста. Именно здесь уровень работы с документами оправдывает себя.
  • Объем постоянно меняется. Привлечение 50 новых поставщиков или проверка 200 счетов в месяц требует решения, управляемого конфигурацией, а не переписывания кода под каждого поставщика.

На практике извлечение и проверка идут рука об руку: командам нужно, чтобы счета были суммированы, расхождения отмечены, а новые счета создавались на основе шаблона и структурированных данных. Более подробно о том, как устроен ИИ-агент для документов и где он вписывается в конвейер обработки контента, см. в статье ИИ-агент для обработки документов: что это и как работает.


2. Что может и чего не может ИИ-агент для счетов

Может Не может
Извлекать поставщика, дату, позиции, итоговые суммы из PDF, Word, Excel и сканов Заменить профессиональную проверку бухгалтером для дорогостоящих или регулируемых транзакций
Сверять счета с заказами на поставку и отмечать расхождения Гарантировать точность сверки для намеренно двусмысленных или мошеннических счетов
Создавать структурированные книги или PDF-отчеты пакетно Вести переговоры или принимать условия от вашего имени
Сохранять форматирование, стили таблиц и шрифты Интерпретировать новые или двусмысленные условия поставщиков; перенаправлять в отдел закупок
Работать внутри вашего приложения (без загрузки в облако) Гарантировать отсутствие ошибок без проверки человеком

Разделение труда: агент автоматизирует чтение, извлечение и проверку (то, на что бухгалтер тратит часы), а человек-рецензент берет на себя финальное утверждение. Эта граница делает инструмент полезным, а процесс — обоснованным.


3. Типичные сценарии обработки счетов

Обработка счетов охватывает не только разовое извлечение данных. Один и тот же шаблон (инструкция, файлы счетов и опциональные справочные данные) покрывает большинство сценариев, которые ищут команды:

Сценарий Пример инструкции
Извлечение из счетов в разных форматах "Извлеки поставщика, дату, позиции и итоговые суммы из этих счетов и объедини в один лист."
Трехсторонняя сверка с заказом (PO) "Сравни каждый счет с заказами на поставку и отметь расхождения более 5%."
Пакетная отчетность по счетам "Создай сводную книгу с общей суммой по поставщикам, отмеченными расхождениями и отчетом для печати."
Обнаружение дубликатов "Выяви потенциальные дубликаты счетов, сравнив поставщика, дату и сумму во входящих."
Маршрутизация рабочих процессов утверждения "Направляй счета свыше $10 000 в очередь на утверждение, а остальные — на автоутверждение."

Каждый сценарий имеет одну и ту же архитектуру: инструкция на входе, реальный документ на выходе.


4. Три способа автоматизации обработки счетов в .NET

Подход Объем кода Точность формата Обслуживание Для кого лучше
ИИ-агент для документов (LLM + уровень документов) Одна инструкция + ~10 строк Высокая (реальные файлы Excel/PDF) Низкое (изменение поведения через правку инструкций) Команды, автоматизирующие счета без создания конвейера LLM
Raw LLM API (OpenAI/Claude + ваш код) Высокий (промпты, парсинг, ввод-вывод) Низкая (LLM не читают/пишут файлы Office напрямую) Высокое (вы сами отвечаете за RAG, маршрутизацию, ошибки) Команды, у которых уже есть стек LLM
Традиционный SDK (Spire.Office и аналоги) Десятки строк на каждый тип документа Высокая (детерминированная) Высокое (каждое сопоставление — это код) Фиксированные счета, которые редко меняются

Ключевой момент: LLM не может прочитать PDF-счет без уровня обработки документов, а традиционный SDK не может понять запрос на естественном языке. ИИ-агент для документов объединяет и то, и другое.

Это не значит, что традиционный путь неверен. Для фиксированных счетов, которые редко меняются, детерминированный SDK часто является правильным выбором, и Spire.Office по-прежнему закрывает эту потребность. Если это ваш случай, статья Генерация документов Word из данных Excel на C# демонстрирует классический рабочий процесс генерации документов на основе данных. Агент же выигрывает, когда макеты поставщиков, форматы ввода и правила проверки меняются настолько часто, что переписывание кода становится «бутылочным горлышком».

Почему Raw LLM API недостаточно для обработки счетов

Вызов gpt-4 или claude напрямую с командой "извлеки данные из этого счета" проваливается в трех аспектах, важных для продакшена:

  1. Невозможность надежно читать или писать файлы Office. LLM видят текст, а не структуру .xlsx и .pdf. Чтение PDF-счета, сохранение таблицы позиций или создание валидной книги Excel обычно требует отдельного конвейера извлечения и реконструкции, который вам придется строить самостоятельно.
  2. Отсутствие гарантии форматирования. Отчеты по счетам содержат заголовки столбцов, форматы чисел и условное форматирование, которые важны для бухгалтерии. Raw LLM возвращает текст, и потеря форматирования — это именно то, что критично для отделов расчетов с поставщиками.
  3. Необходимость реализации всей оркестрации. Дизайн промптов, сопоставление полей, обработка ошибок, ввод-вывод файлов и проверка вывода становятся вашим кодом, который нужно поддерживать.

ИИ-агент для документов сочетает языковое понимание модели с детерминированными API документов: модель решает, что извлечь или сверить, а уровень документов гарантирует, что файл будет реальным и корректно сформированным. В этом разница между демо-версией и рабочим процессом, который можно внедрить.


5. Пример работы: извлечение, проверка и отчетность на C#

Ниже приведена задача, которую бухгалтерия повторяет каждый месяц: обработка входящих счетов, извлечение данных из форматов, сверка с заказами на поставку и создание структурированной книги. Реализация использует Spire.Agent.Office для .NET — ИИ-агента, который обрабатывает документы Word, Excel, PowerPoint и PDF с помощью инструкций на естественном языке. Пример сфокусирован на этом рабочем процессе. Официальные руководства Getting Started и AI Contract Review in C# описывают настройку API пошагово, а этот раздел фокусируется на шаблонах интеграции C#.

Конвейер обработки счетов Spire.Agent.Office: счета от разных поставщиков проходят через агента, создавая консолидированную книгу с извлеченными данными, результатами проверки и сводным листом

1. Извлечение данных из каждого счета во входящих. Настройте агента один раз, затем прочитайте папку входящих, чтобы каждый счет был разобран в единую объединенную таблицу:

using System.IO;
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Doc;
using Spire.Pdf;
using Spire.Xls;

AIOptions agentOptions = new AIOptions();
agentOptions.WorkDir = @"C:\ap-invoices\output";
agentOptions.SpireToken = spireToken;

string extractPrompt =
    "Прочитай каждый файл счета поставщика во входящих (PDF, Word, Excel или изображения) и извлеки " +
    "информацию: название компании, номер счета, дату выпуска, срок оплаты, позиции " +
    "(описание, количество, цена за единицу, сумма), промежуточный итог, налог и общую сумму. Объедини " +
    "результаты в один лист со столбцами: Supplier, InvoiceNumber, IssueDate, DueDate, " +
    "Description, Quantity, UnitPrice, LineAmount, Subtotal, Tax, Total. Пропускай дублирующиеся заголовки " +
    "и сохрани как книгу.";

Directory.CreateDirectory(@"C:\ap-invoices\output");

string[] invoiceFiles = Directory.GetFiles(@"C:\ap-invoices\inbox", "*.*");

Агент справляется с задачей работы с разными форматами — PDF, сканы, Word и Excel проходят через одну и ту же инструкцию без специфического кода для каждого формата:

using (Workbook extracted = new Workbook())
{
    AIResult result = extracted.AI(agentOptions).ExecuteInstruction(
        extracted,
        extractPrompt,
        @"C:\ap-invoices\output\extracted.xlsx",
        invoiceFiles);

    if (result == null || !result.Success)
        throw new InvalidOperationException(
            $"Ошибка извлечения: {result?.ErrorMessage}");
}

Ключевые вызовы API

  • Workbook.AI(agentOptions) — прикрепляет ИИ-процессор документов к объекту книги
  • ExecuteInstruction(doc, instruction, savePath, attachments) — запускает извлечение и записывает объединенную книгу
  • AIResult.Success / AIResult.ErrorMessage — проверяет результат и выводит ошибки

Результат

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

2. Проверка по заказам на поставку (PO). Загрузите извлеченный файл и укажите правило сверки на простом языке. Агент добавит лист Validation, оставив исходные данные нетронутыми:

using (Workbook validation = new Workbook())
{
    validation.LoadFromFile(@"C:\ap-invoices\output\extracted.xlsx");

    string[] poFiles = { @"C:\ap-invoices\data\purchase-orders.xlsx" };

    AIResult result = validation.AI(agentOptions).ExecuteInstruction(
        validation,
        "Добавь лист 'Validation'. Сравни каждую позицию счета с заказами на поставку " +
        "в вложениях, отметь счета, где общая сумма отличается от PO более чем на 5%, " +
        "отметь позиции, описание которых не совпадает с PO. Выдели расхождения красным " +
        "и добавь столбец 'Reason' с объяснением каждого расхождения. Оставь исходные листы данных без изменений.",
        @"C:\ap-invoices\output\validated.xlsx",
        poFiles);

    if (result == null || !result.Success)
        throw new InvalidOperationException(
            $"Ошибка проверки: {result?.ErrorMessage}");
}

Лист Validation появляется рядом с исходными данными, с отмеченными строками, красной заливкой и столбцом Reason, примененными согласно инструкции:

Пример результата: лист проверки с отмеченными расхождениями, красной заливкой и столбцом Reason

3. Отчетность. Составьте сводку из раздела 5 и экспортируйте её. Параметр savePath определяет формат — .xlsx для редактирования или .pdf для распространения:

using (Workbook report = new Workbook())
{
    report.LoadFromFile(@"C:\ap-invoices\output\validated.xlsx");

    AIResult result = report.AI(agentOptions).ExecuteInstruction(
        report,
        "Создай отчет об обработке. Добавь лист 'Summary' в начало с блоком KPI " +
        "(всего обработано счетов, общая сумма, количество расхождений, топ-поставщик по " +
        "объему), детальной таблицей по поставщикам и сводкой расхождений. Отформатируй для печати " +
        "и сохрани готовую книгу.",
        @"C:\ap-invoices\output\monthly-report.xlsx");

    if (result == null || !result.Success)
        throw new InvalidOperationException(
            $"Ошибка генерации отчета: {result?.ErrorMessage}");
}

Лист Summary размещается в начале книги, готовый к печати или экспорту в PDF:

Пример результата: готовый отчет об обработке счетов с листом Summary, детальной таблицей и сводкой расхождений

В чем разница: традиционный SDK против ИИ-агента

Ценность агента наиболее очевидна при сравнении. С традиционным SDK вы ищете каждое поле по заголовку, жестко прописываете каждый порог проверки и пишете данные ячейка за ячейкой — и перенастраиваете всё это, когда поставщик меняет макет или меняется правило. Скетч ниже (упрощенно) показывает масштаб этой работы:

// Традиционный SDK (иллюстрация): каждое поле находится и извлекается
// по строке заголовка, пороги жестко закодированы, вывод пишется по ячейкам
foreach (string file in invoiceFiles)
{
    Workbook wb = new Workbook();
    wb.LoadFromFile(file);
    Worksheet sheet = wb.Worksheets[0];

    // Ломается, как только поставщик меняет "Total Due" на "Amount Payable".
    int totalCol = FindColumnByHeader(sheet, "Total Due");
    int vendorCol = FindColumnByHeader(sheet, "Vendor Name");

    for (int r = sheet.LastRow; r >= 2; r--)
    {
        double invoiceTotal = double.Parse(sheet.Range[r, totalCol].Text);
        double poTotal = GetPoTotal(sheet.Range[r, 1].Text);
        double diff = Math.Abs(invoiceTotal - poTotal) / poTotal;

        // Один жесткий порог; поставщик стройматериалов вызывает ложные срабатывания.
        if (diff > 0.05) sheet.Range[r, totalCol].Style.Color = Color.Red;
    }
    // ... затем объединение, затем проверка, затем сводка — сотни строк на поставщика и месяц.
}

ИИ-агент заменяет эту оркестрацию одной инструкцией:

validation.AI(agentOptions).ExecuteInstruction(
    validation,
    "Добавь лист 'Validation'. Сравни каждую позицию счета с заказами на поставку " +
    "в вложениях, отметь счета, где общая сумма отличается от PO более чем на 5%, " +
    "отметь позиции, описание которых не совпадает с PO. Выдели расхождения красным " +
    "и добавь столбец 'Reason' с объяснением каждого расхождения. Оставь исходные листы данных без изменений.",
    @"C:\ap-invoices\output\validated.xlsx",
    poFiles);

Оба подхода дают одну и ту же книгу проверки. Там, где SDK требует вызова FindColumnByHeader для каждого поля, сравнения порогов для каждого правила и записи ячеек, агент поглощает эту работу в одну инструкцию. Когда поставщик меняет макет или финансовый отдел меняет порог допустимых отклонений, вы редактируете инструкцию, а не код.


6. Почему стоит использовать Spire.Agent.Office для обработки счетов

Сравнение выше нейтрально; тот же паттерн работает с любой способной LLM. Spire.Agent.Office выигрывает для .NET-команд в трех областях:

  1. Нативная обработка счетов в разных форматах. PDF, Word, Excel и сканированные изображения — это первоклассные граждане, а не форматы, которые нужно "прикручивать". Агент читает и извлекает данные из всех четырех форматов одной инструкцией.
  2. Сохранение форматирования. Отчеты по счетам содержат заголовки, форматы чисел и условное форматирование, которые должны пережить обработку. Уровень документов агента сохраняет их в целости. Добавьте "сохранить исходный макет и стиль документа" в инструкцию, и результат останется верным шаблону.
  3. Нативная интеграция с .NET. Это C# SDK, который встраивается в существующее приложение .NET. Никаких отдельных сервисов обработки документов, никакой сложной "сантехники" между сервисами. Пример выше — это вся поверхность интеграции.

Если вы уже используете Spire.Office для обработки документов, агент станет естественным следующим слоем: тот же объект Workbook получает процессор AI(), который превращает инструкции в исполняемые рабочие процессы.


7. Часто задаваемые вопросы (FAQ)

Может ли ИИ обрабатывать сканированные изображения?

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

Могут ли данные счетов оставаться внутри моего окружения?

Да, с одним важным нюансом. Spire.Agent.Office работает из вашего приложения, поэтому SDK, шаблоны и обработка документов остаются в вашем контуре. Файлы счетов не загружаются в сторонний сервис для хранения или конвертации. Для анализа содержимого ИИ нужны соответствующие текстовые данные, которые передаются модели — это неотъемлемый шаг любого ИИ-процесса. Если вы развернете свою модель в локальной сети, контент останется полностью внутри вашей инфраструктуры. Если вы подключаетесь через API (например, OpenAI или Azure OpenAI), данные передаются провайдеру согласно вашей конфигурации.

Могу ли я использовать свою модель с Spire.Agent.Office?

Да. Spire.Agent.Office поддерживает гибкую интеграцию моделей и совместим с основной ИИ-инфраструктурой, включая API и частные модели. Вы можете направить агента на свой эндпоинт. Подробности см. в руководстве по интеграции; по вопросам поддержки конкретных провайдеров обращайтесь в отдел продаж по адресу sales@e-iceblue.com.

Какую модель использует Spire.Agent.Office?

Spire.Agent.Office подключается к большой языковой модели через ключ SpireToken. Вы описываете задачу на естественном языке, а агент оркестрирует инструменты обработки документов. Модель отвечает за понимание, а уровень документов гарантирует форматирование и точность файла.

Можно ли обрабатывать счета пакетно?

Да. Одна инструкция применяется к папке с файлами, и агент создает одну консолидированную книгу со всеми данными. Поддерживается как извлечение полей, так и сверка между документами.

Изменит ли ИИ форматирование моей книги?

Не если вы этого не захотите. Добавьте фразу вроде "сохранить исходный макет, стили и шрифты" в инструкцию; официальное руководство документирует это решение.

Чем это отличается от использования Raw LLM API?

Raw LLM не может надежно читать, редактировать или писать файлы Word и Excel самостоятельно; ему нужен уровень обработки документов. ИИ-агент для документов объединяет понимание языка LLM с детерминированными API документов, поэтому на выходе вы получаете реальный, корректный файл.

Готовы автоматизировать обработку счетов?

Извлечение, проверка и составление отчетов — это самые быстрые способы получить пользу: направьте агента на папку входящих, опишите правила обработки и получите структурированную книгу или PDF. Следуйте руководству Getting Started, чтобы запустить свой первый рабочий процесс в .NET.

Дополнительное чтение