-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Промышленная MLOps-платформа для автоматизированного распознавания и классификации документов
MLOps Docflow — это полнофункциональная платформа машинного обучения, предназначенная для автоматической обработки, распознавания и классификации документов в промышленных масштабах.
📄 Обработка документов
- Загрузка изображений и PDF файлов
- Автоматическая валидация и предобработка
- Хранение в S3-совместимом хранилище (MinIO)
🔍 OCR (Распознавание текста)
- Поддержка двух движков: Tesseract и EasyOCR
- Многоязычное распознавание (английский, русский)
- Высокая точность через ансамблевый подход
🤖 Машинное обучение
- Автоматическое обучение моделей классификации
- Версионирование моделей через MLflow
- Continuous training pipeline
⚡ Inference API
- REST API на FastAPI
- Real-time предсказания
- Batch processing
- Swagger документация
📊 MLOps Infrastructure
- Трекинг экспериментов (MLflow)
- Оркестрация пайплайнов (Apache Airflow)
- Мониторинг и метрики (Prometheus + Grafana)
- Контейнеризация (Docker)
MLOps Docflow построен на микросервисной архитектуре с пятью основными компонентами:
┌─────────────────────────────────────────────────────────┐
│ FastAPI REST API │
│ (http://localhost:8000/docs) │
└────────────────────┬────────────────────────────────────┘
│
┌────────────┴────────────┐
│ Apache Airflow DAG │
│ (Orchestration) │
└────────┬────────────────┘
│
┌────────────┼────────────┬───────────┬─────────────┐
│ │ │ │ │
┌───▼───┐ ┌────▼───┐ ┌─────▼────┐ ┌──▼──────┐ ┌───▼──────┐
│Ingestion│ │ OCR │ │ Training │ │Inference│ │Monitoring│
│Service │ │Service │ │ Service │ │ Service │ │ Service │
└───┬───┘ └────┬───┘ └─────┬────┘ └──┬──────┘ └───┬──────┘
│ │ │ │ │
└───────────┴────────────┴───────────┴─────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌───▼────┐ ┌────▼────┐ ┌────▼────┐
│PostgreSQL│ │ MinIO │ │ MLflow │
│ (DB) │ │ (S3) │ │(Tracking)│
└─────────┘ └─────────┘ └─────────┘
| Модуль | Назначение | Технологии |
|---|---|---|
| Ingestion | Загрузка и валидация документов | Python, MinIO, PostgreSQL |
| OCR | Извлечение текста из изображений | Tesseract, EasyOCR, OpenCV |
| Training | Обучение ML моделей | PyTorch, Scikit-learn, MLflow |
| Inference | Предсказание классов документов | FastAPI, PyTorch |
| Monitoring | Сбор метрик и мониторинг | Prometheus, Grafana |
# 1. Клонировать репозиторий
git clone https://github.com/shuldeshoff/doc-mlops-pipeline.git
cd doc-mlops-pipeline
# 2. Запустить все сервисы
docker-compose up -d
# 3. Проверить статус
curl http://localhost:8000/health| Сервис | URL | Credentials |
|---|---|---|
| 🌐 API Docs | http://localhost:8000/docs | - |
| 🔄 Airflow | http://localhost:8080 | admin / admin |
| 📊 MLflow | http://localhost:5000 | - |
| 📦 MinIO Console | http://localhost:9001 | minioadmin / minioadmin123 |
| 📈 Prometheus | http://localhost:9090 | - |
| 📉 Grafana | http://localhost:3000 | admin / admin |
import requests
# Загрузка файла
with open('invoice.jpg', 'rb') as f:
response = requests.post(
'http://localhost:8000/upload-and-predict',
files={'file': f},
params={'ocr_language': 'eng'}
)
result = response.json()
print(f"Класс: {result['prediction']['predicted_class']}")
print(f"Уверенность: {result['prediction']['confidence_score']:.2%}")response = requests.post(
'http://localhost:8000/predict/text',
json={
'text': 'Invoice #12345 Total: $500.00',
'return_all_scores': True
}
)# Загрузка нескольких документов
document_ids = []
for file_path in ['doc1.jpg', 'doc2.jpg', 'doc3.jpg']:
with open(file_path, 'rb') as f:
result = requests.post('http://localhost:8000/upload', files={'file': f})
document_ids.append(result.json()['document_id'])
# Обработка через Airflow DAG автоматически- Python 3.11 - Основной язык программирования
- FastAPI - Современный web framework для API
- PyTorch - Deep Learning framework
- Scikit-learn - Machine Learning библиотека
- Tesseract & EasyOCR - OCR движки
- Apache Airflow 2.8 - Оркестрация ML пайплайнов
- MLflow 2.9 - Experiment tracking и model registry
- Prometheus - Сбор метрик и мониторинг
- Grafana - Визуализация метрик и dashboards
- Docker & Docker Compose - Контейнеризация
- PostgreSQL 15 - Основная реляционная БД
- MinIO - S3-совместимое object storage
- Nginx - Reverse proxy (опционально)
Загрузка счета → OCR → Извлечение суммы → Классификация типа → Валидация
PDF контракт → Извлечение текста → Определение типа контракта → Поиск ключевых пунктов
Фото чека → OCR → Распознавание товаров → Суммирование → Сохранение в БД
Скан письма → OCR → Определение отправителя → Классификация темы → Routing
| Метрика | Значение |
|---|---|
| OCR скорость | ~2-5 сек на документ |
| Inference латентность | <100ms |
| Throughput | 100+ документов/мин |
| Model accuracy | 85-95% (зависит от данных) |
| API availability | 99.9% (при правильном деплое) |
- 📖 Прочитайте Contributing Guide
- 🐛 Найдите good first issue
- 🍴 Форкните репозиторий
- 🌿 Создайте feature branch
- 💻 Внесите изменения
- ✅ Создайте Pull Request
# Форматирование
black services/
# Линтинг
flake8 services/ --max-line-length=100
# Тесты
pytest tests/ --cov=services- 🏠 Home - Эта страница
- 🏗️ Architecture - Детальная архитектура
- 📡 API Documentation - Полное описание API
- 🚀 Deployment - Production deployment
- 🔧 Configuration - Настройка системы
- 🧪 Development Guide - Гайд для разработчиков
- ❓ FAQ - Часто задаваемые вопросы
- 🐛 Troubleshooting - Решение проблем
- 📝 README.md - Основная документация
- ⚡ QUICKSTART.md - Быстрый старт
- 🤝 CONTRIBUTING.md - Гайд для контрибьюторов
- 🔒 SECURITY.md - Политика безопасности
- 💭 GitHub Discussions - Вопросы и обсуждения
- 🐛 GitHub Issues - Баги и предложения
- 📱 Telegram - Прямая связь с автором
Шульдешов Юрий Леонидович
- GitHub: @shuldeshoff
- Telegram: @shuldeshoff
- Базовая обработка документов
- OCR с двумя движками
- ML классификация
- REST API
- Airflow оркестрация
- MLflow tracking
- Prometheus мониторинг
- Kubernetes deployment
- PDF multi-page support
- Advanced authentication
- Rate limiting
- Grafana dashboards
- Model A/B testing
- Multi-tenancy support
- Advanced NLP features
- Document comparison
- Automated data labeling
- GraphQL API
- Web UI for management
Проект распространяется под MIT License.
Свободен для использования в коммерческих и некоммерческих проектах.
Если проект вам понравился, поставьте ⭐ на GitHub!
Проект использует следующие open-source библиотеки:
- Apache Airflow
- MLflow
- FastAPI
- PyTorch
- Tesseract OCR
- EasyOCR
- И многие другие...
Последнее обновление: 29 октября 2024
Версия документации: 1.0
Автор: Шульдешов Юрий Леонидович
Made with ❤️ for the MLOps community