Skip to content

Django REST API для транскрипции аудио и извлечения данных из документов с gRPC интеграцией

Notifications You must be signed in to change notification settings

EDeev/api_processor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 для русского языка

⚡ Быстрый старт

Установка зависимостей

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

Запуск сервера

python manage.py migrate
python manage.py runserver

📖 API Endpoints

Транскрипция аудио

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 команды

Транскрипция аудио:

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 настройки

По умолчанию система подключается к 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


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

About

Django REST API для транскрипции аудио и извлечения данных из документов с gRPC интеграцией

Topics

Resources

Stars

Watchers

Forks

Languages