Initial commit: Ollama Translator Web App

This commit is contained in:
2026-01-09 18:06:45 +01:00
commit 0460984618
5 changed files with 995 additions and 0 deletions

231
ReadMe.MD Normal file
View File

@@ -0,0 +1,231 @@
# 🌍 Traduttore Ollama
Un'applicazione web moderna per tradurre testi lunghi utilizzando modelli locali di Ollama. Supporta oltre 30 lingue e utilizza chunking intelligente per gestire testi di qualsiasi lunghezza.
## 📋 Caratteristiche
- ✅ **Supporto multi-lingua**: 30+ lingue (cinese, inglese, spagnolo, francese, tedesco, italiano, giapponese, coreano, russo, arabo, e molte altre)
- ✅ **Gestione testi lunghi**: Chunking automatico a 500 token per elaborare documenti estesi
- ✅ **UI moderna e responsiva**: Design elegante con gradient background e animazioni fluide
- ✅ **Barra di progresso**: Visualizzazione in tempo reale dell'elaborazione dei chunk
- ✅ **Ottimizzazione modello**: Parametri `top_p=0.6` e `repeat_penalty=1.1` per miglior qualità
- ✅ **Copia negli appunti**: Pulsante per copiare la traduzione con un click
- ✅ **Gestione errori robusta**: Messaggi di errore chiari e dettagliati
- ✅ **Health check**: Verificare lo stato di Ollama e i modelli disponibili
## 🚀 Installazione Rapida
### Prerequisiti
- **Python 3.8+**
- **Ollama** in esecuzione su `192.168.0.170:11434` con il modello `xieweicong95/HY-MT1.5-1.8B` scaricato
### Step 1: Clona o crea la directory del progetto
mkdir ollama-traduttore
cd ollama-traduttore
### Step 2: Crea l'ambiente virtuale
**Su Windows (CMD o PowerShell):**
python -m venv venv
venv\Scripts\activate
**Su Linux/Mac:**
python3 -m venv venv
source venv/bin/activate
### Step 3: Installa le dipendenze
pip install -r requirements.txt
### Step 4: Assicurati che Ollama sia pronto
# Verifica che Ollama sia in esecuzione
ollama list
# Se il modello non è presente, scaricalo
ollama pull xieweicong95/HY-MT1.5-1.8B
# Avvia Ollama (se non è già running)
ollama serve
### Step 5: Avvia l'applicazione
python app.py
L'applicazione sarà disponibile su: **`http://localhost:5000`**
## 📁 Struttura del Progetto
ollama-traduttore/
├── app.py # Backend Flask
├── requirements.txt # Dipendenze Python
├── templates/
│ └── index.html # Frontend HTML/CSS/JS
└── venv/ # Ambiente virtuale
## 🔧 Configurazione
### Cambiare l'indirizzo di Ollama
Se Ollama è su un indirizzo/porta diverso, modifica `app.py`:
OLLAMA_BASE_URL = "http://192.168.0.170:11434" # Cambia questo
### Cambiare il modello
Per usare un modello diverso, modifica in `app.py`:
OLLAMA_MODEL = "xieweicong95/HY-MT1.5-1.8B" # Cambia questo
### Regolare i parametri di traduzione
I parametri di qualità sono configurabili in `app.py`:
OLLAMA_PARAMS = {
"top_p": 0.6, # Diversità del sampling (0.0-1.0)
"repeat_penalty": 1.1 # Penalità per ripetizioni (1.0-2.0)
}
## 📖 Come Usare
1. **Incolla il testo** da tradurre nella textarea
2. **Seleziona la lingua di destinazione** dal dropdown
3. **Opzionalmente**, specifica la lingua sorgente (default: autodetect)
4. **Clicca "Traduci"** e attendi il completamento
5. **Copia la traduzione** con il pulsante "Copia" o selezionala manualmente
### Lingue Supportate
#### Principali / Molto comuni
- Cinese (mandarino) semplificato
- Cinese tradizionale
- Cantonese (dialetto)
- Inglese
- Spagnolo
- Francese
- Tedesco
- Italiano
- Portoghese
- Giapponese
- Coreano
- Russo
- Arabo
- Turco
#### Europee e minori
- Olandese
- Polacco
- Ceco
- Islandese
- Estone
- Ucraino
#### Asia e Medio Oriente
- Vietnamita
- Tailandese
- Malese
- Indonesiano
- Filippino / Tagalog
- Birmano (Myanmar)
- Khmer / Cambogiano
- Persiano
- Ebraico
- Hindi
- Marathi
- Bengali
- Tamil
- Gujarati
## 🔌 API Endpoints
### POST `/api/translate`
Traduce un testo usando Ollama.
**Request:**
{
"prompt": "Translate the following text into [Language]...",
"model": "xieweicong95/HY-MT1.5-1.8B",
"stream": false
}
**Response:**
{
"success": true,
"translation": "Testo tradotto...",
"response": "Testo tradotto...",
"model": "xieweicong95/HY-MT1.5-1.8B"
}
### GET `/api/health`
Verifica lo stato di Ollama e i modelli disponibili.
**Response:**
{
"status": "healthy",
"ollama_url": "http://192.168.0.170:11434",
"available_models": ["xieweicong95/HY-MT1.5-1.8B", "..."],
"target_model": "xieweicong95/HY-MT1.5-1.8B",
"model_available": true
}
## 🛠️ Troubleshooting
### Errore: "Impossibile connettersi a Ollama"
1. Verifica che Ollama sia in esecuzione: `ollama serve`
2. Controlla l'indirizzo IP e la porta in `app.py`
3. Assicurati che il firewall non blocchi la connessione
### Errore: "Modello non trovato"
Scarica il modello:
ollama pull xieweicong95/HY-MT1.5-1.8B
### Timeout della richiesta
Aumenta il timeout in `app.py`:
timeout=300 # Aumenta da 300 secondi (5 minuti)
### Traduzione lenta
- Riduci il numero di chunk aumentando `maxTokens` in `index.html`
- Aumenta le risorse assegnate a Ollama
- Considera l'uso di un modello più piccolo
## 📊 Performance
- **Tempo di risposta**: Dipende dal modello e dalla lunghezza del testo
- **Limite chunk**: 500 token (configurabile)
- **Timeout**: 5 minuti per chunk
- **RAM consigliata**: Almeno 8GB per il modello HY-MT1.5-1.8B
## 🔐 Sicurezza
- L'applicazione è accessibile solo in locale per impostazione predefinita
- I dati non vengono salvati, solo elaborati in tempo reale
- Usa HTTPS in produzione
## 📝 Licenza
Questo progetto utilizza Ollama (Open Source) e Flask (BSD License).
## 🤝 Contributi
Suggerimenti e miglioramenti sono benvenuti!
## 📧 Supporto
Per problemi o domande:
1. Verifica il section Troubleshooting
2. Controlla i log di Flask per errori
3. Assicurati che Ollama sia configurato correttamente
---
**Versione**: 1.0.0
**Ultima modifica**: Gennaio 2026
**Modello**: xieweicong95/HY-MT1.5-1.8B