Django REST API для обработки аудио и документов с интеграцией gRPC сервисов
API Processor — это мощное решение для автоматической обработки мультимедийного контента. Система выполняет транскрибацию аудиофайлов в текст и извлечение данных из PDF/DOCX документов с последующей отправкой результатов на внешний gRPC сервер для дополнительной обработки.
- Аудио транскрипция: Преобразование аудиофайлов в текст с использованием модели Vosk
- Обработка документов: Извлечение текста, таблиц и изображений из PDF и DOCX файлов
- gRPC интеграция: Автоматическая отправка обработанного текста на внешний сервер
- RESTful API: Простой и понятный интерфейс для взаимодействия
- Поддержка форматов: Audio (WAV, OGG и др.), PDF, DOCX
- 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 для русского языка
pip install -r requirements.txt
- Скачайте модель
vosk-model-small-ru-0.22
- Разместите в папке
models/vosk-model-small-ru-0.22
- Скачайте FFmpeg
- Разместите в
models/ffmpeg/bin/ffmpeg.exe
python manage.py migrate
python manage.py runserver
POST /api/audio-to-text/
Content-Type: multipart/form-data
audio: <audio_file>
Ответ:
{
"text": "Распознанный текст из аудио",
"grpc_response": {
"processed_text": "Обработанный текст",
"success": true,
"error": null
}
}
POST /api/document-to-text/
Content-Type: multipart/form-data
document: <pdf_or_docx_file>
Ответ:
{
"text": "<p>Извлеченный текст</p><pre>таблица,данные</pre>",
"grpc_response": {
"processed_text": "Обработанный текст",
"success": true,
"error": null
}
}
Транскрипция аудио:
curl -X POST -F "audio=@audio.ogg" http://localhost:8000/api/audio-to-text/
Обработка документа:
curl -X POST -F "document=@document.pdf" http://localhost:8000/api/document-to-text/
По умолчанию система подключается к gRPC серверу на localhost:50051
. Для изменения адреса отредактируйте api_app/grpc_client/client.py
.
Пути к моделям и исполняемым файлам настраиваются в api_app/services/vosk_recognizer.py
:
MODEL_PATH
- путь к модели VoskFFMPEG_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
- Email: egor@deev.space
- Telegram: @Egor_Deev
Создано с ❤️ от вашего дорогого - deev.space ©