diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a5cc17 --- /dev/null +++ b/README.md @@ -0,0 +1,171 @@ +# API Processor + +**Django REST API для обработки аудио и документов с интеграцией gRPC сервисов** + +API Processor — это мощное решение для автоматической обработки мультимедийного контента. Система выполняет транскрибацию аудиофайлов в текст и извлечение данных из PDF/DOCX документов с последующей отправкой результатов на внешний gRPC сервер для дополнительной обработки. + +## 🚀 Возможности + +- **Аудио транскрипция**: Преобразование аудиофайлов в текст с использованием модели Vosk +- **Обработка документов**: Извлечение текста, таблиц и изображений из PDF и DOCX файлов +- **gRPC интеграция**: Автоматическая отправка обработанного текста на внешний сервер +- **RESTful API**: Простой и понятный интерфейс для взаимодействия +- **Поддержка форматов**: Audio (WAV, OGG и др.), PDF, DOCX + +## 🛠 Технологический стек + +### Backend +- **Django 4.2.6** - веб-фреймворк +- **Django REST Framework 3.14.0** - API framework +- **Python** - основной язык разработки + +### Обработка контента +- **Vosk 0.3.45** - распознавание речи +- **FFmpeg Python 0.2.0** - конвертация аудио +- **pdfplumber 0.10.2** - извлечение данных из PDF +- **python-docx 0.8.11** - работа с DOCX файлами +- **Pillow 10.0.1** - обработка изображений + +### Коммуникация +- **gRPC 1.58.0** - межсервисное взаимодействие +- **Protocol Buffers** - сериализация данных + +### База данных +- **SQLite** - локальное хранение метаданных файлов + +## 📋 Требования + +- Python 3.8+ +- FFmpeg (для конвертации аудио) +- Модель Vosk для русского языка + +## ⚡ Быстрый старт + +### Установка зависимостей + +```bash +pip install -r requirements.txt +``` + +### Настройка модели Vosk + +1. Скачайте модель `vosk-model-small-ru-0.22` +2. Разместите в папке `models/vosk-model-small-ru-0.22` + +### Настройка FFmpeg + +1. Скачайте FFmpeg +2. Разместите в `models/ffmpeg/bin/ffmpeg.exe` + +### Запуск сервера + +```bash +python manage.py migrate +python manage.py runserver +``` + +## 📖 API Endpoints + +### Транскрипция аудио +```http +POST /api/audio-to-text/ +Content-Type: multipart/form-data + +audio: +``` + +**Ответ:** +```json +{ + "text": "Распознанный текст из аудио", + "grpc_response": { + "processed_text": "Обработанный текст", + "success": true, + "error": null + } +} +``` + +### Обработка документов +```http +POST /api/document-to-text/ +Content-Type: multipart/form-data + +document: +``` + +**Ответ:** +```json +{ + "text": "

Извлеченный текст

таблица,данные
", + "grpc_response": { + "processed_text": "Обработанный текст", + "success": true, + "error": null + } +} +``` + +## 🧪 Примеры использования + +### cURL команды + +**Транскрипция аудио:** +```bash +curl -X POST -F "audio=@audio.ogg" http://localhost:8000/api/audio-to-text/ +``` + +**Обработка документа:** +```bash +curl -X POST -F "document=@document.pdf" http://localhost:8000/api/document-to-text/ +``` + +## ⚙️ Конфигурация + +### gRPC настройки +По умолчанию система подключается к gRPC серверу на `localhost:50051`. Для изменения адреса отредактируйте `api_app/grpc_client/client.py`. + +### Модели и пути +Пути к моделям и исполняемым файлам настраиваются в `api_app/services/vosk_recognizer.py`: +- `MODEL_PATH` - путь к модели Vosk +- `FFMPEG_PATH` - путь к исполняемому файлу FFmpeg + +## 📁 Структура проекта + +``` +api_processor/ +├── api_app/ # Основное приложение +│ ├── grpc_client/ # gRPC клиент +│ ├── services/ # Сервисы обработки +│ ├── migrations/ # Миграции БД +│ ├── models.py # Модели данных +│ └── views.py # API эндпоинты +├── api_project/ # Настройки Django +├── proto/ # Protocol Buffers схемы +├── models/ # Модели и исполняемые файлы +└── requirements.txt # Зависимости +``` + +## 🔧 Особенности реализации + +- **Автоматическая конвертация**: Аудиофайлы автоматически конвертируются в формат WAV 16kHz +- **Извлечение изображений**: Из документов извлекаются изображения в формате base64 +- **Обработка таблиц**: Таблицы сохраняются в CSV формате +- **Fallback система**: При недоступности gRPC сервера используются заглушки + +## 📄 Лицензия + +Этот проект разработан для образовательных и исследовательских целей. + +## 🤝 Разработчик + +**Деев Егор Викторович** - Backend Developer +- GitHub: [@EDeev](https://github.com/EDeev) +- Email: egor@deev.space +- Telegram: [@Egor_Deev](https://t.me/Egor_Deev) + +--- + +
+

Создано с ❤️ от вашего дорогого - deev.space ©

+