Веб-сервис для обработки архивных документов с ИИ-распознаванием
Система автоматического извлечения и индексирования информации из образов архивных документов с поддержкой дореволюционной орфографии.
Веб-сервис обеспечивает:
- 📸 Предварительная обработка изображений (выравнивание, контраст, шумы)
- 🤖 OCR распознавание рукописного и печатного текста
- 📜 Поддержка дореволюционной орфографии (ѣ, ѳ, і, ѵ, ъ)
- 🎯 Атрибутивное распознавание (ФИО, даты, адреса, архивные шифры)
- ✏️ Верификация и коррекция результатов пользователем
- 📊 Экспорт данных в различных форматах
- 📈 Статистика и мониторинг качества обработки
- Входные: JPG, JPEG, TIFF, PDF
- Выходные: JSON, CSV, XML
- Максимальный размер файла: 100MB
git clone <repository-url>
cd archive-ocr-servicepip install -r requirements.txtСоздайте файл .env:
# Яндекс API (опционально для расширенных функций)
YANDEX_API_KEY=your_yandex_api_key_here
YANDEX_FOLDER_ID=your_folder_id_here
# Настройки базы данных
DATABASE_URL=sqlite:///./archive_service.db
# Настройки файлов
MAX_FILE_SIZE=104857600
UPLOAD_DIR=uploadspython web_service.pyhttp://localhost:8000
archive-ocr-service/
├── web_service.py # Основной веб-сервис FastAPI
├── integrated_archive_processor.py # OCR процессор
├── requirements.txt # Python зависимости
├── .env # Переменные окружения
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose
├── README.md # Документация
├── docs/ # Документация
│ ├── deployment-guide.pdf # Руководство по развертыванию
│ └── api-docs.md # API документация
├── uploads/ # Загруженные файлы
├── static/ # Статические файлы
└── tests/ # Тесты
# В web_service.py
MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB
LOW_CONFIDENCE_THRESHOLD = 0.75 # Порог низкой уверенности
DATABASE_URL = "sqlite:///./archive_service.db"# В integrated_archive_processor.py
use_angle_cls=True # Классификатор углов поворота
det_db_thresh=0.2 # Порог детекции
det_db_box_thresh=0.3 # Порог боксов
max_side_len=4096 # Максимальное разрешениеdocker build -t archive-ocr-service .docker run -d \
--name archive-ocr \
-p 8000:8000 \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/.env:/app/.env \
archive-ocr-servicedocker-compose up -dGET /- Веб-интерфейсPOST /upload- Загрузка документаGET /status/{task_id}- Статус обработкиGET /results/{task_id}- Результаты OCRGET /stats- Статистика
POST /correct/{task_id}- Коррекция текстаPOST /verify/{task_id}- Верификация сегмента
GET /export/{task_id}- Экспорт документаPOST /export- Расширенный экспорт
GET /health- Проверка здоровья сервисаGET /docs- Swagger документация
- ОС: Linux Ubuntu 20.04+, Windows 10+, macOS 10.15+
- Python: 3.8+
- RAM: 4GB (рекомендуется 8GB)
- Диск: 10GB свободного места
- Интернет: для скачивания OCR моделей при первом запуске
- CPU: 4+ ядер
- RAM: 16GB+
- GPU: NVIDIA GPU с поддержкой CUDA (опционально)
- SSD: для быстрого доступа к файлам
python -m pytest tests/curl http://localhost:8000/health# Загрузка файла
curl -X POST "http://localhost:8000/upload" \
-F "file=@document.jpg"
# Получение статуса
curl "http://localhost:8000/status/{task_id}"
# Получение результатов
curl "http://localhost:8000/results/{task_id}"- ✅ Валидация типов файлов
- ✅ Ограничение размера файлов (100MB)
- ✅ Санитизация входных данных
- ✅ CORS настройки
- ✅ Логирование операций
tail -f web_service.log- Количество обработанных документов
- Средняя уверенность распознавания
- Время обработки
- Статистика ошибок
git pull
pip install -r requirements.txt --upgrade
python web_service.py- Разработчик: Команда CUphoria
- Организатор: Лидеры Цифровой Трансформации
- Год: 2025