docs: update README with bilingual documentation
- Add English and Spanish sections - Improve project description and features - Add professional formatting
This commit is contained in:
271
README.md
271
README.md
@@ -1,220 +1,89 @@
|
|||||||
# 🎵 CBCFacil v9
|
# 🎵 CBC Fácil - Document Processing Platform
|
||||||
|
|
||||||
Sistema de IA para procesamiento inteligente de documentos (audio, PDF, texto) con integración a Nextcloud y dashboard web interactivo.
|
## 📝 Description / Descripción
|
||||||
|
|
||||||
## ✨ Características Principales
|
**English:**
|
||||||
|
An intelligent document processing platform that uses AI (Gemini/Claude) to analyze, summarize, and convert various document formats (PDF, audio, text) into structured knowledge bases. Integrates with Notion for knowledge management.
|
||||||
|
|
||||||
- 🎙️ **Transcripción de Audio** - Whisper con soporte GPU/CPU
|
**Español:**
|
||||||
- 📝 **Generación de Resúmenes** - Claude AI o Gemini
|
Una plataforma inteligente de procesamiento de documentos que utiliza IA (Gemini/Claude) para analizar, resumir y convertir varios formatos de documentos (PDF, audio, texto) en bases de conocimiento estructuradas. Se integra con Notion para gestión del conocimiento.
|
||||||
- 📄 **Múltiples Formatos** - Genera TXT, MD, DOCX, PDF
|
|
||||||
- ☁️ **Sincronización Nextcloud** - Descarga y sube automáticamente
|
|
||||||
- 🖥️ **Dashboard Web** - Monitoreo y regeneración de resúmenes
|
|
||||||
- 📱 **Notificaciones Telegram** - Alertas en tiempo real
|
|
||||||
- 🔄 **Reprocesamiento** - Regenera resúmenes sin re-transcribir
|
|
||||||
|
|
||||||
## 🏗️ Arquitectura
|
## 🚀 Features / Características
|
||||||
|
|
||||||
|
**English:**
|
||||||
|
- Multi-format document processing (PDF, MP3, WAV, TXT)
|
||||||
|
- AI-powered content analysis and summarization
|
||||||
|
- Automatic LaTeX generation from processed content
|
||||||
|
- Notion integration for knowledge base creation
|
||||||
|
- GPU acceleration support (ROCm/AMD)
|
||||||
|
- Parallel AI provider processing (Gemini + Claude)
|
||||||
|
- Telegram notifications for processing status
|
||||||
|
- WebDAV file management
|
||||||
|
|
||||||
|
**Español:**
|
||||||
|
- Procesamiento de documentos multi-formato (PDF, MP3, WAV, TXT)
|
||||||
|
- Análisis y resumen de contenido con IA
|
||||||
|
- Generación automática de LaTeX desde contenido procesado
|
||||||
|
- Integración con Notion para creación de bases de conocimiento
|
||||||
|
- Soporte de aceleración GPU (ROCm/AMD)
|
||||||
|
- Procesamiento paralelo de proveedores de IA (Gemini + Claude)
|
||||||
|
- Notificaciones Telegram para estado de procesamiento
|
||||||
|
- Gestión de archivos WebDAV
|
||||||
|
|
||||||
|
## 🛠️ Tech Stack / Stack Tecnológico
|
||||||
|
|
||||||
|
- **Language:** Python 3.11+
|
||||||
|
- **AI Providers:** Google Gemini, Anthropic Claude
|
||||||
|
- **Document Processing:** PyPDF2, SpeechRecognition, pydub
|
||||||
|
- **LaTeX Generation:** Custom templates
|
||||||
|
- **Storage:** Notion API, WebDAV
|
||||||
|
- **Notifications:** Telegram Bot API
|
||||||
|
- **GPU:** ROCm/HIP (AMD GPU support)
|
||||||
|
|
||||||
|
## 📋 Architecture / Arquitectura
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────────────────────────────┐
|
cbcren2026/
|
||||||
│ CBCFacil v9 │
|
├── api/ # REST API routes
|
||||||
├─────────────────────────────────────────────────────────────────────────┤
|
├── core/ # Core business logic
|
||||||
│ │
|
├── document/ # Document generation (LaTeX)
|
||||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
├── processors/ # File processors (PDF, audio, text)
|
||||||
│ │ Nextcloud │────▶│ Processor │────▶│ AI Service │ │
|
├── services/ # External service integrations
|
||||||
│ │ (WebDAV) │ │Audio/PDF/TXT│ │Claude/Gemini│ │
|
│ ├── ai/ # AI providers (Claude, Gemini)
|
||||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
│ └── notion/ # Notion integration
|
||||||
│ │ │ │ │
|
├── storage/ # Data persistence
|
||||||
│ │ ▼ ▼ │
|
└── config/ # Configuration management
|
||||||
│ │ ┌─────────────┐ ┌─────────────┐ │
|
|
||||||
│ │ │ Whisper │ │ Document │ │
|
|
||||||
│ │ │ (GPU) │ │ Generator │ │
|
|
||||||
│ │ └─────────────┘ └─────────────┘ │
|
|
||||||
│ │ │ │
|
|
||||||
│ ▼ ▼ │
|
|
||||||
│ ┌─────────────────────────────────────────────────────┐ │
|
|
||||||
│ │ Dashboard Web (Flask) │ │
|
|
||||||
│ │ • Vista de archivos • Regenerar resúmenes │ │
|
|
||||||
│ │ • Panel de versiones • Previsualización │ │
|
|
||||||
│ └─────────────────────────────────────────────────────┘ │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ ┌─────────────┐ │
|
|
||||||
│ │ Telegram │ │
|
|
||||||
│ │ (Notifica) │ │
|
|
||||||
│ └─────────────┘ │
|
|
||||||
│ │
|
|
||||||
└─────────────────────────────────────────────────────────────────────────┘
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📁 Estructura del Proyecto
|
## 🔧 Setup / Configuración
|
||||||
|
|
||||||
```
|
**English:**
|
||||||
cbcfacil/
|
1. Clone the repository
|
||||||
├── main.py # Punto de entrada principal
|
2. Install dependencies: `pip install -r requirements.txt`
|
||||||
├── config/
|
3. Create `.env` file with API keys (Gemini, Claude, Notion, Telegram)
|
||||||
│ └── settings.py # Configuración centralizada
|
4. Run: `python main.py`
|
||||||
├── services/
|
|
||||||
│ ├── webdav_service.py # Cliente WebDAV/Nextcloud
|
|
||||||
│ ├── vram_manager.py # Gestión memoria GPU
|
|
||||||
│ ├── telegram_service.py # Notificaciones
|
|
||||||
│ └── ai/
|
|
||||||
│ ├── claude_provider.py # Provider Claude (Z.ai)
|
|
||||||
│ ├── gemini_provider.py # Provider Gemini
|
|
||||||
│ └── provider_factory.py
|
|
||||||
├── processors/
|
|
||||||
│ ├── audio_processor.py # Transcripción Whisper
|
|
||||||
│ ├── pdf_processor.py # OCR y extracción
|
|
||||||
│ └── text_processor.py # Clasificación
|
|
||||||
├── document/
|
|
||||||
│ └── generators.py # Genera DOCX, PDF, Markdown
|
|
||||||
├── storage/
|
|
||||||
│ └── processed_registry.py # Registro de procesados
|
|
||||||
├── api/
|
|
||||||
│ └── routes.py # API REST + Dashboard
|
|
||||||
├── templates/
|
|
||||||
│ └── index.html # Dashboard UI
|
|
||||||
└── downloads/ # Archivos descargados
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Instalación
|
**Español:**
|
||||||
|
1. Clona el repositorio
|
||||||
|
2. Instala dependencias: `pip install -r requirements.txt`
|
||||||
|
3. Crea archivo `.env` con claves API (Gemini, Claude, Notion, Telegram)
|
||||||
|
4. Ejecuta: `python main.py`
|
||||||
|
|
||||||
### Requisitos
|
## 🔌 API Endpoints
|
||||||
- Python 3.10+
|
|
||||||
- NVIDIA GPU + CUDA 12.1+ (opcional, fallback a CPU)
|
|
||||||
- Nextcloud con WebDAV habilitado
|
|
||||||
|
|
||||||
### Instalación Rápida
|
- `POST /api/process` - Process new documents
|
||||||
|
- `GET /api/status` - Check processing status
|
||||||
|
- `GET /api/health` - Health check
|
||||||
|
|
||||||
```bash
|
## 👨💻 Author / Autor
|
||||||
# Clonar repositorio
|
|
||||||
git clone https://gitea.cbcren.online/renato97/cbcren2026.git
|
|
||||||
cd cbcren2026
|
|
||||||
|
|
||||||
# Crear entorno virtual
|
**Renato CBC**
|
||||||
python3 -m venv .venv
|
- GitHub: [renato97](https://gitea.cbcren.online/renato97)
|
||||||
source .venv/bin/activate
|
|
||||||
|
|
||||||
# Instalar dependencias
|
## 📄 License / Licencia
|
||||||
pip install -r requirements.txt
|
|
||||||
|
|
||||||
# Configurar
|
Private project / Proyecto privado
|
||||||
cp .env.example .env
|
|
||||||
nano .env # Editar con tus credenciales
|
|
||||||
|
|
||||||
# Ejecutar
|
|
||||||
python3 main.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## ⚙️ Configuración
|
|
||||||
|
|
||||||
### Variables de Entorno (.env)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# === NEXTCLOUD/WEBDAV ===
|
|
||||||
NEXTCLOUD_URL=https://tu-nextcloud.com/remote.php/webdav
|
|
||||||
NEXTCLOUD_USER=usuario
|
|
||||||
NEXTCLOUD_PASSWORD=contraseña
|
|
||||||
|
|
||||||
# === AI PROVIDERS ===
|
|
||||||
GEMINI_API_KEY=AIza... # Para resúmenes con Gemini
|
|
||||||
# o
|
|
||||||
ANTHROPIC_AUTH_TOKEN=sk-ant-... # Para resúmenes con Claude
|
|
||||||
|
|
||||||
# === TELEGRAM (Opcional) ===
|
|
||||||
TELEGRAM_TOKEN=bot_token
|
|
||||||
TELEGRAM_CHAT_ID=chat_id
|
|
||||||
|
|
||||||
# === DASHBOARD ===
|
|
||||||
DASHBOARD_HOST=0.0.0.0
|
|
||||||
DASHBOARD_PORT=5000
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🖥️ Dashboard Web
|
|
||||||
|
|
||||||
El dashboard se ejecuta en `http://localhost:5000` junto con el servicio principal.
|
|
||||||
|
|
||||||
### Funcionalidades
|
|
||||||
|
|
||||||
| Característica | Descripción |
|
|
||||||
|----------------|-------------|
|
|
||||||
| 📊 **Vista de Archivos** | Lista todos los archivos de audio con estado |
|
|
||||||
| 🔍 **Búsqueda y Filtros** | Filtra por local/WebDAV, ordena por fecha/nombre |
|
|
||||||
| 👁️ **Panel de Preview** | Visualiza transcripciones y resúmenes |
|
|
||||||
| 📁 **Tab Versiones** | Lista todos los formatos generados (TXT, MD, DOCX, PDF) |
|
|
||||||
| ✨ **Regenerar Resumen** | Genera nueva versión del resumen con IA |
|
|
||||||
| 🔄 **Resetear Estado** | Marca archivo como no procesado |
|
|
||||||
|
|
||||||
### API REST Endpoints
|
|
||||||
|
|
||||||
```
|
|
||||||
GET /api/files # Lista archivos
|
|
||||||
GET /api/files-detailed # Lista con info de transcripciones
|
|
||||||
GET /api/transcription/<f> # Obtiene transcripción
|
|
||||||
GET /api/summary/<f> # Obtiene resumen
|
|
||||||
GET /api/versions/<f> # Lista versiones generadas
|
|
||||||
POST /api/regenerate-summary # Regenera resumen desde transcripción
|
|
||||||
POST /api/mark-unprocessed # Resetea estado de archivo
|
|
||||||
GET /health # Estado del servicio
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔄 Flujo de Procesamiento
|
|
||||||
|
|
||||||
1. **Detección** - El servicio monitorea Nextcloud cada 5 segundos
|
|
||||||
2. **Descarga** - Archivos nuevos se descargan localmente
|
|
||||||
3. **Transcripción** - Whisper convierte audio a texto (.txt)
|
|
||||||
4. **Resumen** - Claude/Gemini genera resumen estructurado
|
|
||||||
5. **Documentos** - Se generan .md, .docx, .pdf
|
|
||||||
6. **Subida** - Documentos se suben a Nextcloud
|
|
||||||
7. **Notificación** - Telegram notifica finalización
|
|
||||||
|
|
||||||
## 📱 Regenerar Resúmenes
|
|
||||||
|
|
||||||
Cuando un resumen no es satisfactorio, puedes regenerarlo:
|
|
||||||
|
|
||||||
### Desde el Dashboard
|
|
||||||
1. Clic en el archivo procesado
|
|
||||||
2. Panel lateral se abre con transcripción/resumen
|
|
||||||
3. Clic en "✨ Regenerar" o tab "📁 Versiones"
|
|
||||||
4. Nueva versión se genera y reemplaza la anterior
|
|
||||||
|
|
||||||
### Desde la Lista
|
|
||||||
- Archivos procesados muestran botón "✨ Regenerar"
|
|
||||||
- Clic directo sin abrir panel lateral
|
|
||||||
|
|
||||||
## 🛠️ Uso CLI
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Ejecutar servicio completo
|
|
||||||
python3 main.py
|
|
||||||
|
|
||||||
# Transcribir audio específico
|
|
||||||
python3 main.py whisper archivo.mp3 ./output/
|
|
||||||
|
|
||||||
# Procesar PDF específico
|
|
||||||
python3 main.py pdf documento.pdf ./output/
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📊 Métricas
|
|
||||||
|
|
||||||
| Componente | Performance |
|
|
||||||
|------------|-------------|
|
|
||||||
| Transcripción Whisper | ~1x duración audio (GPU) |
|
|
||||||
| Resumen Gemini | ~5-15s por documento |
|
|
||||||
| OCR PDF | ~2-5s por página |
|
|
||||||
| Inicio del servicio | ~5-10s |
|
|
||||||
|
|
||||||
## 🔧 Tecnologías
|
|
||||||
|
|
||||||
- **Backend**: Python 3.10+, Flask
|
|
||||||
- **IA**: OpenAI Whisper, Google Gemini, Anthropic Claude
|
|
||||||
- **Frontend**: HTML5, CSS3, JavaScript (Vanilla)
|
|
||||||
- **Storage**: Nextcloud (WebDAV)
|
|
||||||
- **GPU**: CUDA, PyTorch
|
|
||||||
|
|
||||||
## 📝 Licencia
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Desarrollado por CBC** | Última actualización: Enero 2026
|
**Tags / Etiquetas:** `python` `ai` `document-processing` `gemini` `claude` `notion` `latex` `automation`
|
||||||
|
|||||||
Reference in New Issue
Block a user