--- code: DOC-221275 title: "FNR02 Модуль передачи PDF файлов в ИС Сканирование" --- # FNR02 Модуль передачи PDF файлов в ИС Сканирование Ссылка на описание требований смежной системы: [Постановка. Новый проект OCR фин. отчетность](project/Document/DOC-111205) # Глоссарий | Термин | **Определение** | | --- | --- | | ИС Сканирования, СС | Система сканирования, распознавания, хранения и классификации документов на базе Content AI | | Форма-1 (Баланс) | Тип документа "Бухгалтерский баланс". Форма отчетности, содержащая активы и пассивы организации на определенную дату | | Форма-2 (ОФР) | Тип документа  "Отчет о финансовых результатах". Форма отчетности, содержащая данные о доходах, расходах и финансовом результате за период | | Горячая папка | Механизм интеграции, при котором обмен данными между системами осуществляется через отслеживаемые сетевые папки "Входящие" (для отправки) и "Исходящие" (для получения результатов) | | UID (Уникальный идентификатор) | Имя исходного файла, используемое для связывания результата распознавания (JSON) с исходным документом | | Уверенность | Способ представления степени достоверности распознанного текста по каждому символу. Может быть реализован как побитовая маска или в виде процентного соотношения для всего поля | **1.** Текущий модуль берет подгруженные и сохраненные pdf файлы, присваивает им имена по маске: UUID+текущее имя файла **2** . Перекладывает файлы в горячую папку "Входящие" **3** . СС каждые 10 секунд проверяет папку Входящие, видит в ней новый файл UUID.pdf. **4.** СС начинает обработку файла: 1. 1. Создается пакет в проекте FINANCE\_STATEMENT. 2. Выполняется предобработка пакета. 3. Выполняется классификация пакета - определяется первые страницы каждого документа. 4. Происходит сборка пакета по документам. 5. Выполняется подбор шаблона документов для распознавания, выбранные шаблоны накладываются на документы. 6. Выполняется распознавание документов согласно шаблонам, извлекаются нужные атрибуты, по каждому полю рассчитывается уверенность как среднее арифметическое побитовой маски с округлением до сотых (пример: поле Заявление, его уверенность - 01111101, среднее арифметическое = 0.67) **5.** СС выполняет скрипт преобразований данных для формирования json **6.** В экспортной папке "Исходящие" создается подпапка с  UUID полученным от модуля. **7** Сформированный json с именем вида UUID.json ~~вместе с файлами документов~~ экспортируется в созданную подпапку UUID в родительской папке Исходящие. Для каждого документа - 1 json файл, а о бработанный файл удаляется из папки Входящие. структура json: #### **7.1.** Корневой объект | Параметр | | Тип | Формат | Обязательность | Описание | Правило формирования | Пример | | --- | --- | --- | --- | --- | --- | --- | --- | | `file_uid` | | string | `^[a-zA-Z0-9_-]+$` | да | Уникальный идентификатор исходного файла | Формируется из имени исходного файла без расширения. Допустимы латиница, цифры, символы  `_`  и  `-` . Максимальная длина 255 символов | `"b94d2b95-ab16-4836-86bc-db87c6aaa242"` | | `error` | | object | - | да | Объект с деталями ошибки | Содержит код, сообщение и детали ошибки. При отсутствии ошибок имеет значение  `null` | см. таблицу  `error` | | | `code` | string | | да | Код ошибки. примеры кодов | | | | --- | --- | | `FILE_READ_ERROR` | Ошибка файла (поврежден, отсутствует доступ). Ошибка передается, если файл при обработке OCR не удается прочитать | | `INVALID_FORMAT` | Неподдерживаемый формат файла. Ошибка передается, если формат не соответствует pdf или jpeg | | `INVALID_DOCUMENT` | Не удалось определить тип документа. Ошибка передается, если не удалось наложить шаблон для распознавания | | `RECOGNITION_FAILED` | Ошибка OCR при распознавании текста. Ошибка передается, если более 80% всех полей не удалось распознать | | `UNKNOWN_ERROR` | Непредвиденная ошибка. Ошибка передается, если ни один из вышеперечисленных вариантов ошибки не подходит | | Системный код, однозначно идентифицирующий тип ошибки. Используется для автоматической обработки | `"RECOGNITION_FAILED"` | | | `message` | string | | да | Краткое описание ошибки | Описание ошибки, не более 255 символов | `"Ошибка OCR при распознавании текста "` | | `data_ocr` | | | `label` | object | | да | Тип распознаваемого документа | Описание типа распознаваемого документа (Баланс/Отчет) и уверенности распознавания этого поля | {         "form\_name": "Бухгалтерский баланс",         "confidence": 0.98       } | | | `organization` | object | | да | Имя организации | Описание имени организации и уверенности распознавания этого поля | {         "full\_name": "Акционерное общество \"Объединенная зерновая компания\"",         "confidence": 0.91       } | | | `inn` | object | | да | ИНН организации | Описание ИНН организации и уверенности распознавания этого поля | {         "inn": "7708632345"",         "confidence": 0.91       } | | | `units` | object | | да | Единицы измерения сумм | Описание единиц измерения и уверенности распознавания этого поля | {         "measurement": "в тыс рублей",         "confidence": 0.97       } | | | `table_structure` | object | | да | Описание структуры таблицы | Описание структуры таблицы. Внутри массив rows | "rows": [{...}] см таблицу rows | #### **7.1.1** Массив rows | Поле | Тип | Обязательность | Описание | Формирование | Пример | | --- | --- | --- | --- | --- | --- | | `row_index` | int | да | Порядковый номер строки | Отсчет начинается с 0 | 0 | | `cells` | array | да | Ячейки строки | Описание массива с ячейками | "cells": [{...}] см таблицу cells | #### **7.1.1.1** Массив cells | Поле | Тип | Обязательность | Описание | Формирование | Пример | | --- | --- | --- | --- | --- | --- | | `column_index` | int | да | Порядковый номер ячейки в строке | Отсчет начинается с 0 | 0 | | `value` | string | да | Имя ячейки | Значение ячейки | "Наименование показателя" | | `confidence` | float | да | Уверенность распознавания ячейки. Показатель, насколько OCR уверена в правильности распознанного значения. | Среднее арифметическое побитовой маски поля | "0.67" | **8.** Модуль забирает файлы из экспортной папки, анализирует значение UUID и находит по этому ключу запись в таблице **Consolidation\_package (json.file\_uid=Consolidation\_package .uuid)** и обрабатывает их согласно  процессу маппинга: Шапка таблицы: таблица **Fin\_report\_header** | | | | | | | --- | --- | --- | --- | --- | | Поле | Тип | Описание | Пример из файла | Источник заполнения | | report\_id | BIGINT [pk] | Уникальный идентификатор отчета | 1001 | | | package\_id | BIGINT | ID пакета документов | 500 | | | company\_id | BIGINT | ID компании | 46063520 | | | report\_type | varchar(20) | Тип формы: `BALANCE` / `OFR` | "BALANCE" (Ф1), "OFR" (Ф2) | `data_ocr.form_name` | | reporting\_date | date | Отчетная дата | 2025-09-30 | | | currency | varchar(3) | Код валюты по ISO | "RUB" | | | unit | varchar(20) | Единица измерения | "тыс. руб." | `data_ocr.units` | | okud\_code | varchar(10) | Код формы по ОКУД | "0710001" (Баланс), "0710002" (ОФР) | | | okpo\_code | varchar(10) | Код ОКПО организации | "46063520" | | | audit\_required | boolean | Требуется ли аудит | false | | | created\_at | timestamp | Дата загрузки | 2025-10-29 14:30:00` | | таблица **Company** | | | | | | --- | --- | --- | --- | | Поле | Тип | Описание | Источник заполнения | | company\_id | BIGINT | Уникальный идентификатор компании | | | inn | VARCHAR(12) | ИНН организации | `data_ocr.inn` | | kpp | VARCHAR(9) | КПП организации | | | okpo | VARCHAR(10) | Код ОКПО | | | okopf | VARCHAR(5) | Код ОКОПФ | | | okfs | VARCHAR(2) | Код ОКФС | | | fin\_report\_id | BIGINT | Ссылка на финансовую отчётность | | | name | VARCHAR(300) | Наименование компании | `data_ocr.full_name` | | status | VARCHAR(20) | Статус записи | | | | | | |