# System Definition: RMSER OCR Service (v2.0) ## 1. Роль и Назначение **RMSER OCR Service** — микросервис для интеллектуального извлечения товарных позиций из финансовых документов (чеки, счета, накладные). Использует гибридный подход: QR-коды, Computer Vision и LLM (Large Language Models). ## 2. Логика Обработки (Pipeline) ### Этап А: Поиск QR-кода (Gold Standard) 1. Поиск QR-кода (`pyzbar`). 2. Валидация фискальных признаков (`t=`, `s=`, `fn=`). 3. Запрос к API ФНС (`proverkacheka.com`). 4. **Результат:** `source: "qr_api"`. 100% точность. ### Этап Б: Yandex Cloud AI (Silver Standard) *Запускается, если QR не найден.* 1. **OCR:** Отправка изображения в Yandex Vision OCR. Получение сырого текста. 2. **Primary Parsing:** Попытка извлечь данные регулярными выражениями. 3. **Semantic Parsing (LLM):** Если Regex не нашел позиций, текст отправляется в **YandexGPT**. * Модель структурирует разрозненный текст в JSON. * Исправляет опечатки, связывает количество и цену, разбросанные по документу. 4. **Результат:** `source: "yandex_vision"`. Высокая точность для любой верстки. ### Этап В: Локальный OCR (Bronze Fallback) *Запускается при недоступности облака.* 1. Препроцессинг (OpenCV: Binarization, Deskew). 2. OCR (Tesseract). 3. Парсинг (Regex). 4. **Результат:** `source: "tesseract_ocr"`. Базовая точность. ## 3. Контракт API **POST /recognize** (`multipart/form-data`) **Response (JSON):** ```json { "source": "yandex_vision", "items": [ { "raw_name": "Маракуйя - пюре, 250 гр", "amount": 5.0, "price": 282.00, "sum": 1410.00 } ], "raw_text": "..." }