mirror of
https://github.com/EDeev/api_processor.git
synced 2026-06-15 19:11:01 +03:00
README.md
This commit is contained in:
parent
0810f20173
commit
e4ad5ec4ad
1 changed files with 171 additions and 0 deletions
171
README.md
Normal file
171
README.md
Normal file
|
|
@ -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: <audio_file>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ответ:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"text": "Распознанный текст из аудио",
|
||||||
|
"grpc_response": {
|
||||||
|
"processed_text": "Обработанный текст",
|
||||||
|
"success": true,
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обработка документов
|
||||||
|
```http
|
||||||
|
POST /api/document-to-text/
|
||||||
|
Content-Type: multipart/form-data
|
||||||
|
|
||||||
|
document: <pdf_or_docx_file>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ответ:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"text": "<p>Извлеченный текст</p><pre>таблица,данные</pre>",
|
||||||
|
"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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
|
||||||
|
</div>
|
||||||
Loading…
Add table
Reference in a new issue