Извлечение данных из документов с помощью ИИ
Как модель превращает счета, договоры и бланки в поля: путь от письма до записи, восемь видов документов с проверками, схема и проверка кодом, правила и ошибки.
Коротко
Извлечение данных с помощью ИИ превращает документы любой формы — счета, договоры, акты, заявки, резюме — в поля таблицы без ручного ввода. Языковая модель читает документ, включая сканы и фотографии, и возвращает данные строго по схеме: номер, дата, поставщик, позиции, итоги. Затем код проверяет всё, что можно проверить, — арифметику, даты, контрольные цифры ИНН, есть ли такой поставщик, — и документы без замечаний сразу уходят в 1С или CRM, а остальные — человеку со списком того, что не так. В отличие от старого распознавания по шаблонам, модель не боится нового макета, поэтому одно решение справляется с документами сотен разных поставщиков.
Как это устроено: от письма до записи
-
Документ приходит
Почтой, через форму, в мессенджере или со сканера — в одну очередь.
-
Модель его читает
PDF с текстом, скан или фото — современные модели читают изображение напрямую.
-
Поля по схеме
Ответ — строго поля схемы, ничего лишнего и ничего в свободной форме.
-
Код проверяет
Арифметику, даты, контрольные цифры, известного поставщика, дубль уже загруженного документа.
-
Запись или человек
Нет замечаний — запись уходит в систему; есть — человек видит документ и список.
-
Учёба на исправлениях
Каждое исправление человека становится примером для инструкции и случаем для проверочного набора.
Какие документы и что проверять
Восемь типичных видов документов — с полями, которые обычно берут, и проверками, которые ловят большинство ошибок.
| Документ | Поля | Проверки |
|---|---|---|
| Счёт | номер, дата, поставщик, позиции, итог | арифметика, ИНН, дубль |
| Акт или накладная | позиции, количества, подписи | сверка с заказом |
| Договор | стороны, предмет, сроки, сумма, штрафы | рискованные пункты смотрит юрист |
| Заявка клиента | контакты, товар, количество, адрес | формат телефона и почты, товар в каталоге |
| Резюме | опыт, навыки, контакты | даты работы по порядку |
| Чек или авансовый отчёт | дата, сумма, продавец, категория | лимиты по категориям |
| Прайс поставщика | артикулы, названия, цены | резкое изменение цены |
| Анкета или бланк на бумаге | все поля бланка | обязательные поля заполнены |
Счёт: схема и проверка
Схема говорит модели, что вернуть; проверка говорит системе, можно ли этому верить.
Схема счёта
Все поля обязательные: если модель не нашла поле, документ уходит человеку, а не пустое значение — в учёт.
{
"type": "object",
"properties": {
"number": { "type": "string" },
"date": { "type": "string", "description": "YYYY-MM-DD" },
"supplier": { "type": "string" },
"tax_id": { "type": "string" },
"total": { "type": "number" },
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"qty": { "type": "number" },
"price": { "type": "number" },
"sum": { "type": "number" }
},
"required": ["name", "qty", "price", "sum"],
"additionalProperties": false
}
}
},
"required": ["number", "date", "supplier", "tax_id", "total", "items"],
"additionalProperties": false
}
Проверка кодом
Арифметику и формат проверяет код, а не модель: три проверки ловят большую часть ошибок чтения.
// Модель читает документ; код ей не доверяет и проверяет арифметику
type Invoice = {
number: string;
date: string;
supplier: string;
tax_id: string;
total: number;
items: { name: string; qty: number; price: number; sum: number }[];
};
export function problems(inv: Invoice): string[] {
const out: string[] = [];
inv.items.forEach((it, i) => {
if (Math.abs(it.qty * it.price - it.sum) > 0.01) out.push(`строка ${i + 1}: количество × цена ≠ сумма`);
});
const lines = inv.items.reduce((s, it) => s + it.sum, 0);
if (Math.abs(lines - inv.total) > 0.01) out.push('строки не сходятся с итогом');
if (!/^\d{4}-\d{2}-\d{2}$/.test(inv.date)) out.push('дата не в формате ГГГГ-ММ-ДД');
return out; // пусто — сразу в учёт; иначе — человеку со списком
}
7 правил надёжного извлечения
-
01
Строгая схема
Поля, типы и форматы заданы; модель не может добавить свои.
-
02
Каждое число проверяется
Суммы, количества и даты пересчитываются кодом.
-
03
Сверка с вашими данными
Поставщик — из справочника, заказ — из системы, цена — из договора.
-
04
Исключения — человеку
С документом и списком замечаний рядом.
-
05
Оригинал хранится
Каждая запись ссылается на документ, из которого взята.
-
06
Дубли ловятся
Один и тот же счёт, присланный дважды, не оплачивается дважды.
-
07
Проверочный набор из настоящих документов
Включая плохие сканы, рукописные пометки и необычные макеты.
Частые ошибки в извлечении
-
Доверять итогам модели
Модель может прочитать 8 как 3 — без пересчёта ошибка уходит в учёт.
-
Пусто вместо «не нашёл»
Отсутствующее поле молча превращается в ноль или пустую строку.
-
Шаблоны под каждого поставщика
Старый подход ломается на первом новом макете; схема от макета не зависит.
-
Полная автоматика с первого дня
Сначала человек подтверждает всё, потом — только исключения.
-
Нет ссылки на оригинал
Ошибку в записи невозможно проследить до документа.
-
Проверка на чистых PDF
Настоящие документы — кривые сканы и фото, сделанные на ходу.
Вопросы об извлечении данных из документов
Читает ли ИИ сканы и фотографии?
Да, современные модели читают изображения напрямую; очень плохие сканы всё равно уходят человеку.
Чем это отличается от обычного OCR?
OCR даёт текст; модель понимает, какое число итог, а какое дата, на любом макете.
Насколько это точно?
Это меряют на ваших документах; проверки кодом не дают ошибкам незаметно дойти до учёта.
Можно ли отправлять данные сразу в учёт?
Да, через обмен с 1С или CRM — документы, прошедшие все проверки.
А рукописные документы?
Аккуратный почерк читается; сомнительные поля помечаются для человека.
Безопасно ли отправлять документы модели?
Через деловой доступ данные не идут в обучение; для самых строгих случаев есть локальные модели.
Форма
Документы
без ручного ввода
Делаю извлечение данных из ваших документов с проверками кодом и обменом с учётом или CRM — людям остаются только исключения. Расскажите о задаче — отвечу в течение рабочего дня.