Я делал разбор входящих счетов и накладных: PDF или скан → поля (контрагент, ИНН, номер, дата, сумма, НДС) → строка в таблице и карточка в CRM. Оператор не перебивает реквизиты руками; спорные поля подсвечиваются на проверку.
Я написал очередь документов: почта, диск, загрузка в кабинете. Сначала текст со страницы (в том числе кривые сканы), затем модель со строгой схемой полей. Проверки после модели: контрольная сумма ИНН, сумма цифрами и прописью, формат даты. Ниже порога уверенности — статус «проверить», в CRM само не уходит.
Я стыковал запись в AmoCRM или Bitrix24: компания по ИНН, сделка или счёт, файл исходника в примечании. Повтор того же PDF не создавал вторую карточку: ключ по ИНН + номер + сумма. Журнал: что извлекли, что отклонили, кто подтвердил руками.
Я сделал кабинет оператора: оригинал слева, поля справа, кнопка «принять / поправить». Без авторазноски в учёт и без обещания «заменит бухгалтера» — это ускорение ввода и меньше опечаток в CRM.
Стек: Python, FastAPI, OCR, LLM (structured output), PostgreSQL, REST CRM, Redis, Docker. Приёмка: эталонные счета, точность полей согласована с заказчиком. NDA: юрлица и документы не публикуются.