|
|
4 weeks ago | |
|---|---|---|
| .vscode | 1 month ago | |
| Finetunning | 4 weeks ago | |
| Traduction | 4 weeks ago | |
| .gitignore | 1 month ago | |
| README.md | 4 weeks ago | |
| requirements.txt | 4 weeks ago | |
| run.bat | 1 month ago | |
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
-
Cloner ou télécharger le projet
cd chemin/vers/votre/projet git pull https://git.alex-design.fr/Alex/python.traduction -
Installer les dépendances Python
pip install -r requirements.txt
Puis faire :
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- Placer votre fichier PDF dans le répertoire
Traductiondu projet avec le nom configuré dansmain.py(par défaut :TaniaBorecMemoir(Ukr).pdf)
Mode opératoire
Préparation
- Démarrer Ollama en mode serveur sur votre machine (port 11434 par défaut)
ollama serve
Exécution
- Lancer le script de traduction
python main.py
-
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
-
Le résultat final sera généré dans un fichier PDF nommé
[nom_original](FR).pdf- Exemple :
TaniaBorecMemoir(Ukr)(FR).pdf
- Exemple :
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 à traduireOLLAMA_MODEL: Nom du modèle Ollama à utiliserOLLAMA_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.
"""