# Traduction PDF avec Ollama Ce projet permet de traduire un document PDF page par page en utilisant un modèle LLM local (Ollama) optimisé pour la traduction. --- ## Prérequis - **Python** (version 3.8 ou supérieure) - **Ollama** installé et en cours d'exécution sur ta machine (en mode "serveur") - Un **document PDF** à traduire ## Installation ### Étapes d'installation 1. **Cloner ou télécharger le projet** ```bash cd chemin/vers/votre/projet git pull https://git.alex-design.fr/Alex/python.traduction ``` 2. **Installer les dépendances Python** ```bash pip install -r requirements.txt ``` Puis faire : ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` 3. **Placer votre fichier PDF** dans le répertoire `Traduction` du projet avec le nom configuré dans `main.py` (par défaut : `TaniaBorecMemoir(Ukr).pdf`) --- ## Mode opératoire ### Préparation 1. **Démarrer Ollama en mode serveur** sur votre machine (port 11434 par défaut) ```bash ollama serve ``` ### Exécution 1. **Lancer le script de traduction** ```bash python main.py ``` 2. **Le programme va :** - Extraire le texte de toutes les pages du PDF - Supprimer les numéros de pages - Regrouper les paragraphes qui s'étendent sur plusieurs pages - Diviser le texte en chunks raisonnables (environ 1500 caractères) - Envoyer chaque chunk au LLM pour traduction - Afficher la progression dans le terminal 3. **Le résultat final** sera généré dans un fichier PDF nommé `[nom_original](FR).pdf` - Exemple : `TaniaBorecMemoir(Ukr)(FR).pdf` ### Fichier de sortie Le PDF généré contient : - **Titre** : "Traduction - Ukrainien vers Français" - **Contenu** : Les traductions de tous les chunks, préservant la mise en page (sauts de ligne, paragraphes) - **Police** : Support complet du cyrilique (déjà testé avec l'ukrainien) --- ## Configuration Vous pouvez modifier les paramètres suivants dans `main.py` : - `PDF_PATH` : Chemin du fichier PDF à traduire - `OLLAMA_MODEL` : Nom du modèle Ollama à utiliser - `OLLAMA_URL` : URL du serveur Ollama (par défaut : `http://localhost:11434/api/generate`) - `OUTPUT_PDF_PATH` : Chemin et nom du fichier PDF de sortie (généré autoamtiquement) --- ## Finnetunning Le finne-tunning permet d'avoir une meilleur traduction. C'est un processus long en temps de calcul, mais permet une traduction plus précise. Le principe est le suivant : ``` 1️⃣ Dataset d’entraînement (pairs.json) ↓ 2️⃣ Fine-tuning LoRA (finetuning.py) ↓ 3️⃣ Validation / Évaluation (validation.py) ↓ 4️⃣ Merge LoRA + modèle de base (mergeLora.py) ↓ 5️⃣ Conversion en GGUF ↓ 6️⃣ Ollama (inférence finale) ``` ### validation e script tests plusieurs prompt et renvoie celui avec le meilleur score BLEU. Il faut ensuite copier ce prompt dans le fichier modelFile.