Traduction automatique du turc (Cloudflare Workers AI), non relue par l'auteur. Lire l'original en turc

← Articles

PolyCodex : un traducteur PDF open source d'une capacité de 5000 pages, offrant une mise en page 1:1 et l'inviolabilité visuelle

Note —

Un moteur de traduction de codex nouvelle génération basé sur Rust et Quickshell, qui extrait avec une précision chirurgicale les blocs de texte du flux de contenu PDF, préserve les images et les tableaux jusqu'au pixel près, évite les débordements grâce à la compression horizontale microtypographique Tz et fonctionne entièrement hors ligne avec l'intelligence artificielle locale Ollama.

· 6 min de lecture
Sommaire

Résumé : PolyCodex est un outil open source qui traduit les PDF sans altérer la mise en page ni les images. Le texte explique uniquement l'approche qui modifie les blocs de texte, l'ajustement du texte traduit allongé par une mise à l'échelle horizontale Tz, la structure de mémoire en flux pour les documents de plus de 5000 pages, la traduction hors ligne avec Ollama, l'interface Quickshell avec le mode CLI et les quatre méthodes d'installation.

Tous ceux qui travaillent dans la recherche académique, une vaste littérature médicale, des manuels techniques militaires et des documentations d'ingénierie de milliers de pages font face à un dilemme commun et chronique : l'impossibilité de traduire les PDF.

Lorsque les outils traditionnels (le module PDF de Google Translate, Adobe Acrobat, Calibre ou les logiciels OCR courants) tentent de transposer un document dans une autre langue, les scénarios catastrophes deviennent inévitables : les pages à plusieurs colonnes s'emmêlent, les dessins techniques et les schémas vectoriels débordent de la page, les tableaux se fragmentent, les notes de bas de page s'insèrent au milieu du texte principal et, finalement, le processus s'interrompt en butant sur des limites arbitraires de serveur comme 10 Mo ou 300 pages.

Plus grave encore ; le transfert incontrôlé de documents institutionnels, de projets de brevets et de recherches confidentielles vers des serveurs cloud tiers constitue une vulnérabilité inacceptable en matière de souveraineté des données et de cybersécurité.

Afin de résoudre ces problèmes structurels à la racine, de rendre la mise en page et les images intouchables et de pouvoir convertir fluidement, entièrement sur du matériel local, des codex de plus de 5000 pages, PolyCodex, que j'ai développé, est aujourd'hui publié en tant que projet open source indépendant.

Philosophie fondamentale : « La mise en page est sacrée, l'image est intouchable »

Le PDF (ISO 32000) n'est pas constitué de paragraphes de texte fluides comme un document Word. Le PDF est une toile d'impression numérique où chaque lettre, chaque ligne et chaque image sont définies par des positions absolues dans un plan de coordonnées bidimensionnel (x, y).

La raison principale de l'échec des outils de traduction existants est qu'ils convertissent le PDF en un document basé sur du texte, puis tentent de le recompiler (re-render). Cette approche détruit toute la géométrie typographique du document original.

PolyCodex adopte un paradigme différent : la manipulation chirurgicale du flux de contenu.

  • Pipeline d'analyse du flux de contenu (Content Stream) de PolyCodex : lopdf & Rust Engine

1. BLOCS DE TEXTE (BT / ET)

Seuls les opérateurs Tj, TJ entre BT (Begin Text) et ET (End Text) sont lus. Les positions matricielles (Tm) sont conservées, les textes sont transmis au pool de traduction.

2. INTANGIBILITÉ DES IMAGES (Do)

Les commandes Do (appel de XObject), les tracés vectoriels (re, m, l, c, f, S) et les états de couleur sont préservés jusqu'au pixel. Pas un seul octet n'est supprimé.

3. MICROTYPOGRAPHIE Tz

Une mise à l'échelle horizontale dynamique (Tz) est calculée pour le texte de la langue cible qui s'allonge. La boîte englobante (bounding box) d'origine est conservée au millimètre près.

Microtypographie et solution de mise à l'échelle horizontale Tz

La densité des caractères et la longueur des mots diffèrent radicalement selon les langues. Par exemple, lorsqu'un document technique en anglais est traduit vers le turc ou l'allemand, le volume de texte augmente en moyenne de 25 % à 35 %.

Face à cette expansion, les logiciels traditionnels soit tronquent le texte et le rendent illisible, soit le font déborder sur l'image ou le tableau suivant et perturbent la mise en page.

PolyCodex résout ce problème avec Tz (Horizontal Scaling / mise à l'échelle horizontale), l'opérateur natif de la norme PDF :

  1. La largeur de la phrase traduite dans la langue cible (W_hedef) est comparée à la largeur de la boîte englobante de la phrase originale (W_orijinal).
  2. Si W_hedef > W_orijinal, un facteur de compression dynamique est calculé sans modifier la taille de police ni la hauteur de ligne : Tz = max(75.0, (W_orijinal / W_hedef) * 100.0)
  3. L'opérateur calculé est injecté directement dans le flux de contenu du PDF (par exemple 88.5 Tz). Ainsi, les lettres se rapprochent avec une élégance microtypographique, les limites de la page ne sont pas dépassées et le schéma ou le diagramme voisin ne bouge jamais de sa place.

Capacité de plus de 5000 pages et architecture de mémoire en flux

De nombreux outils PDF du marché sont écrits avec des bibliothèques Python ou Node.js/Electron. Ces outils tentent de charger l'arbre entier du document en RAM simultanément ; après 300 à 500 pages, la consommation mémoire grimpe à 8-16 Go et le système est tué de force par le système d'exploitation via le OOM Killer (Out Of Memory).

Le moteur central de PolyCodex est construit en Rust :

  • Architecture en flux par page (Streaming Architecture) : Les pages du document sont traitées une par une, les tampons temporaires sont nettoyés et le fichier de sortie est écrit en toute sécurité.
  • Empreinte mémoire constante : Qu'il s'agisse d'un article de 10 pages ou d'un manuel de pharmacologie de 5 200 pages, la consommation RAM du moteur PolyCodex reste stable dans une fourchette de 150 Mo à 250 Mo.
  • Bouclier contre les DoS et la consommation de ressources : Afin de prévenir l'épuisement de la mémoire et les attaques par PDF corrompus/malveillants, un contrôle strict de plafond à 2 GiB est appliqué. Les contrôles de taille sont vérifiés avec checked_add et des protections de limites sûres.
  • Permissions de fichiers renforcées : Les fichiers temporaires et finaux générés sont créés avec les permissions 0600 (lecture/écriture) accessibles uniquement au propriétaire du fichier ; les liens symboliques (symlinks) sont catégoriquement refusés.

Souveraineté des données : traduction 100 % hors ligne avec Ollama local

PolyCodex offre une indépendance totale dans le choix du moteur de traduction de l'utilisateur :

                  +-----------------------------------+
                  |             POLYCODEX             |
                  |     (Rust Core / Quickshell)      |
                  +-----------------+-----------------+
                                    |
          +-------------------------+-------------------------+
          |                         |                         |
          v                         v                         v
+-------------------+     +-------------------+     +-------------------+
|    YEREL OLLAMA   |     |  LIBRETRANSLATE   |     |    MOCK / TEST    |
| (Llama 3 / Qwen)  |     |   (Self-Hosted)   |     | (Yerel Simülatör) |
|  TAM ÇEVRİMDIŞI   |     |   AÇIK KAYNAK     |     |   SIFIR DIŞ AĞ    |
+-------------------+     +-------------------+     +-------------------+
  1. Intégration d'Ollama (Llama 3.2, Qwen 2.5, DeepSeek, Mistral) : Une traduction par IA locale qui ne nécessite aucune connexion réseau et fonctionne grâce à la puissance de votre matériel, même dans des environnements isolés (air-gapped) et lors de coupures Internet. Aucun fragment de texte ne quitte votre ordinateur.
  2. Prise en charge de LibreTranslate open source : Compatibilité totale avec les API de traduction open source hébergées sur votre propre serveur ou votre réseau local.
  3. Mode Mock : Simulation instantanée de traduction et vérification de la mise en page dans les environnements de test dépourvus de réseau et de ressource LLM.

Quickshell et l'expérience utilisateur moderne sous Wayland

PolyCodex utilise la technologie Quickshell (Qt 6 / QML), fer de lance du bureau Omarchy, plutôt que les interfaces traditionnelles lourdes et chargées en dépendances :

  • Interface fluide accélérée par GPU : animations fluides à 60+ FPS, palette de thème sombre noir pur et graphite compatible OLED.
  • Police système standard : toute la hiérarchie typographique de l'interface est façonnée selon le standard JetBrainsMono Nerd Font pour la clarté et la lisibilité.
  • Suivi en direct de la progression et des pages : pour les très gros documents, la page en cours, le temps restant et les étapes de traduction instantanées sont rapportés à l'utilisateur avec une précision à la milliseconde.
  • Bouclier de verrouillage à instance unique (Single-Instance Lock) : afin d'empêcher le lancement simultané de plusieurs instances de l'application et la consommation des ressources système, un mécanisme de verrouillage de fichier $XDG_RUNTIME_DIR/polycodex.lock a été mis en place.

Automatisation directe via le terminal (mode CLI)

# Tek komutla PDF çevirisi (Kaynak: Otomatik, Hedef: Türkçe, Sağlayıcı: Ollama)
polycodex --input "/path/to/quantum_physics.pdf" \
          --output "/path/to/kuantum_fizigi.pdf" \
          --target "tr" \
          --provider "ollama"

# 5000 sayfalık teknik el kitabını yerel LibreTranslate ile dönüştürme
polycodex -i handbook.pdf -o el_kitabi.pdf -t tr -p libretranslate

Canaux d'installation et de distribution

PolyCodex est empaqueté pour fonctionner sans effort sur Arch Linux, Fedora, Ubuntu, Debian et toutes les autres distributions Linux modernes.

1. Script d'installation universel en une seule commande

Le script d'installation officiel qui télécharge et configure le binaire le plus adapté à votre système :

curl -sSL https://raw.githubusercontent.com/ozdil/polycodex/main/install.sh | bash

2. Arch Linux / AUR (Arch User Repository)

Le paquet AUR officiel pour les utilisateurs d'Arch Linux et d'Omarchy :

yay -S polycodex-bin
# veya kaynak koddan derlemek için:
yay -S polycodex

3. Distribution universelle Flatpak / Flathub

Avec le paquet (org.ozdil.PolyCodex) en cours de révision officielle sur Flathub, une installation protégée par sandbox en un clic sur toutes les plateformes Linux :

flatpak install flathub org.ozdil.PolyCodex

4. Binaires autonomes GitHub (Releases)

Pour ceux qui souhaitent l'exécuter directement sans installer de dépendance, des binaires x86_64 compilés sont disponibles sur la page GitHub Releases :

Mon avis

Une très grande partie des connaissances scientifiques et techniques produites par l'humanité est enfermée dans des langues étrangères et derrière des formats PDF fermés. Il est inacceptable que les chercheurs, les étudiants et les ingénieurs qui souhaitent accéder à ces connaissances soient condamnés à des traductions à la mise en page déformée, aux schémas effacés ou aux pages tronquées.

PolyCodex protège la confidentialité en exploitant pleinement la puissance du matériel local, tout en respectant absolument l'esthétique et la typographie originales du document.

L'ensemble de son code source, son guide de contribution et sa documentation sont accessibles à la communauté sur GitHub.

Sources