Script python permettant de traduire un long texte
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Alex d5313fb143 version fonctionnelle 6 일 전
.vscode config vscode 2 주 전
Finetunning version fonctionnelle 6 일 전
Traduction optimisation 1 주 전
.gitignore update 2 주 전
README.md version fonctionnelle 6 일 전
requirements.txt validation du modele 1 주 전
run.bat optimisation 1 주 전

README.md

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

    cd chemin/vers/votre/projet
    git pull https://git.alex-design.fr/Alex/python.traduction
    
  2. Installer les dépendances Python

    pip install -r requirements.txt
    

Puis faire :

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  1. 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

    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)
      ↓
1️⃣ Dataset nettoyé ( cleanDataSet.py -> pairs_clean.json)
      ↓
2️⃣ Fine-tuning LoRA (finetuning.py)
      ↓
3️⃣ Validation / Évaluation BLEU (validation.py)
      ↓
4️⃣ Merge LoRA + modèle de base (mergeLora.py)
      ↓
5️⃣ Conversion en GGUF ()
      ↓
6️⃣ Ollama (inférence finale)

Nettoyage du dataset

Executer le script python cleanDataSet.py

Validation

Executer le script python validation.py

Le script tests plusieurs prompts et renvoie celui avec le meilleur score BLEU.

Il faut ensuite copier ce prompt dans le fichier ModelFile.

Merge

Executer le script python mergeLora.py

Conversion en GGUF

En étant à la racine du projet (et toujours dans le venv), cloner le projet llama.cpp

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
pip install -r requirements.txt

Et lancer la commande (/!\ ca prend eviron 10 minutes):

python convert_hf_to_gguf.py ../Finetunning/qwen2.5-7b-uk-fr-merged --outfile qwen2.5-7b-uk-fr.gguf --outtype q8_0

Vérification :

./main -m qwen2.5-7b-uk-fr.gguf -p "Translate into French: Привіт світ"

Pour que ce nouveau modèle soit exploitable par ollama, il faut TODO

Utilisation du modèle fine-tunné pour la traduction

Créer un Modelfile :

FROM ./qwen2.5-7b-uk-fr.gguf

PARAMETER temperature 0.1
PARAMETER top_p 0.95
PARAMETER num_ctx 4096

SYSTEM """
You are a professional Ukrainian to French translator.
Produce faithful, literal translations.
"""