Интегрированная система обработки документов с модулем заявок на билеты.
- OCR Engine - Адаптивное распознавание текста (Tesseract, PaddleOCR, TrOCR)
- NLP Layer - Извлечение сущностей и классификация (ruBERT, DeepPavlov)
- PostgreSQL - База данных с полнотекстовым поиском
- FastAPI Gateway - REST API для загрузки и обработки
- Обработка PDF-заявок на авиабилеты
- База сотрудников (Excel → PostgreSQL)
- Автозаполнение из базы
- Экспорт в Excel
# 1. Установка зависимостей
pip install -r requirements.txt
# 2. Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env
# 3. Инициализация БД
python infrastructure/postgresql/init_db.py
# 4. Запуск сервисов
# В отдельных терминалах:
# OCR Core
cd ocr_core && python main.py
# NLP Layer
cd nlp_layer && python main.py
# Ingestor
cd ingestor && python main.py
# 5. Запуск Ticket App (GUI)
python ticket_app/main.py# 1. Установка Helm Chart
helm install idps charts/idps -f charts/idps/values.yaml
# 2. Проверка статуса
kubectl get pods -n idps
# 3. Доступ к UI
kubectl port-forward svc/idps-ingestor 8000:8000┌─────────────────────────────────────────────────────────┐
│ IDPS v2.0 Stack │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Ticket App │───▶│ Ingestor │ │
│ │ (tkinter) │ │ (FastAPI) │ │
│ └──────────────┘ └───────┬──────┘ │
│ │ │
│ ┌────────────────────┼────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ OCR Core │ │ NLP │ │PostgreSQL│ │
│ │(Adaptive)│ │ Layer │ │ + Redis │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
idps/
├── config/ # Конфигурация
│ ├── ocr_selector.yaml # Правила выбора OCR-модели
│ └── app_config.yaml # Настройки приложения
├── infrastructure/
│ └── postgresql/
│ ├── schema.sql # Схема БД
│ └── seed.sql # Начальные данные
├── ocr_core/ # OCR-движок
│ ├── ocr_selector.py # Эвристика выбора модели
│ ├── main.py # FastAPI сервис
│ └── requirements.txt
├── nlp_layer/ # NLP-обработка
│ ├── main.py
│ └── requirements.txt
├── ingestor/ # API Gateway
│ ├── main.py
│ └── requirements.txt
├── ticket_app/ # GUI приложение заявок
│ ├── main.py # Главное окно
│ ├── auth.py # Авторизация
│ ├── database.py # Работа с БД
│ ├── pdf_processor.py # Обработка PDF
│ ├── excel_handler.py # Экспорт в Excel
│ ├── dialogs/ # Диалоговые окна
│ │ ├── catalog.py
│ │ ├── wizard.py
│ │ └── pdf_viewer.py
│ └── requirements.txt
├── charts/ # Helm Charts (для production)
│ └── idps/
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
├── Makefile # Вспомогательные команды
└── README.md
- Загрузка PDF - Автоматическое извлечение ФИО, маршрутов, дат
- Поиск в базе - Автоматический поиск сотрудника по ФИО
- Ручная корректировка - Визард с просмотром PDF
- Экспорт - Формирование Excel-файла заявки
- Загрузка из Excel (любая структура)
- Автоматическое сопоставление колонок
- Поиск по ФИО, табельному номеру, паспорту
- Каталог с фильтрацией
- Хэширование паролей (SHA-256)
- Хранение учётных данных в
.env - Разделение прав (Admin / ОП)
POST /documents/upload- Загрузка документаGET /documents/{id}/status- Статус обработкиGET /documents/{id}/result- Результат OCR+NLP
POST /api/tickets/process- Обработка PDF-заявкиGET /api/employees/search- Поиск сотрудникаPOST /api/tickets/export- Экспорт в Excel
# PostgreSQL
DATABASE_URL=postgresql://idps:idps@localhost:5432/idps
# Tesseract
TESSERACT_PATH=C:\Program Files\Tesseract-OCR\tesseract.exe
# Пароли (хэшируются автоматически)
ADMIN_PASSWORD=your_secure_password
OP_KINGISEPP=password123
# OCR
OCR_DEFAULT_MODEL=PaddleOCR-VL-0.9B
OCR_GPU_ENABLED=false- Добавьте в
.env:OP_NEW_BRANCH=password456
- Обновите
config.py:_OP_ENV_MAP = { "ОП Новое подразделение": "OP_NEW_BRANCH", }
# Тест на одном файле
python -m ocr_core.ocr_selector test.pdf --lang ru
# Бенчмарк моделей
python -m ocr_core.benchmark --dataset data/test/- OCR Accuracy (последние 24ч)
- Количество обработанных документов
- Средняя уверенность распознавания
# Просмотр логов OCR
tail -f logs/ocr_core.log
# Логи NLP Layer
tail -f logs/nlp_layer.log
# Логи Ingestor
tail -f logs/ingestor.log
# Логи Ticket App
tail -f logs/ticket_app.logMIT License - свободное использование для коммерческих и некоммерческих целей.
- Документация: docs/
- Issues: GitHub Issues
- Email: support@example.com