Aller au contenu
Outils medium

LanguageTool en local : VS Code + Docker (sans cloud)

20 min de lecture

LanguageTool est un correcteur grammatical open source qui détecte les fautes d'orthographe, de grammaire et de style dans plus de 20 langues. Contrairement aux correcteurs cloud (Grammarly, ProWritingAid), vous pouvez l'installer localement avec Docker et l'utiliser dans VS Code, votre navigateur ou via API sans envoyer vos textes à un tiers. Idéal pour la confidentialité des documents techniques, rapports ou documentation produit.

Ce guide vous permet d'installer LanguageTool en local (version 6.7, sortie octobre 2025) et de le configurer dans VS Code en 15 minutes. Prérequis : Docker installé + VS Code.

  • Installer LanguageTool 6.7 en local avec Docker Compose
  • Configurer l'extension VS Code pour corriger en temps réel
  • Utiliser l'API REST pour intégrer dans vos outils
  • Comparer gratuit vs Premium (4,99€/mois pour reformulation IA)

Vous vous demandez peut-être : pourquoi installer LanguageTool en local alors que les extensions navigateur cloud sont si simples ? La réponse dépend de vos besoins en confidentialité, coût et autonomie.

Avec une solution cloud (Grammarly, ProWritingAid...), chaque texte que vous corrigez est envoyé sur les serveurs de l'entreprise. Pour des emails personnels, ce n'est pas un problème. Mais pour de la documentation technique confidentielle, des rapports d'audit ou des contrats clients, c'est une fuite de données potentielle.

L'installation locale résout ce problème : vos textes ne quittent jamais votre machine. Vous gardez le contrôle total, sans limite de caractères, et gratuitement.

Le tableau ci-dessous met en regard les deux approches sur cinq critères. Lisez la dernière ligne en premier : c'est le seul point où le local perd, et c'est un coût ponctuel de mise en place, pas une contrainte quotidienne. Les quatre autres lignes décrivent des avantages permanents. Gardez en tête que le comparatif porte sur le serveur LanguageTool auto-hébergé, pas sur l'extension navigateur officielle qui, elle, reste connectée au cloud par défaut.

CritèreLanguageTool localCloud (Grammarly, etc.)
Confidentialité✅ Vos textes restent sur votre machine❌ Textes envoyés au cloud
Coût✅ Gratuit (version open source)⚠️ 12-30€/mois pour fonctions avancées
Limite d'usage✅ Illimité❌ Quotas de caractères
Langues✅ 20+ langues (français, anglais, allemand...)✅ Multilingue
Complexité⚠️ Installation Docker requise✅ Extension navigateur immédiate

Détails des avantages :

  • Confidentialité : avec LanguageTool local, vos textes ne sont jamais transmis sur internet. Le serveur tourne sur votre machine (localhost). Idéal pour les environnements réglementés (santé, finance, défense).

  • Coût : la version open source de LanguageTool est 100% gratuite. Les solutions cloud (Grammarly Premium, ProWritingAid) coûtent entre 12 et 30€/mois pour débloquer la détection avancée.

  • Limite d'usage : pas de quota. Vous pouvez corriger un rapport de 100 000 mots sans abonnement. Les versions cloud gratuites limitent souvent à 400-500 caractères par vérification.

  • Complexité : le seul inconvénient : vous devez installer Docker et lancer un conteneur. Mais une fois configuré (15 minutes), c'est aussi simple qu'une extension navigateur.

LanguageTool ne fonctionne pas comme un correcteur orthographique classique qui compare chaque mot à un dictionnaire. Il applique des règles de grammaire écrites en XML, complétées par des modèles statistiques, ce qui lui permet de repérer des mots correctement orthographiés mais mal employés. Les cinq familles de détection ci-dessous vont du plus fiable au plus discutable : les deux premières se trompent rarement, la cinquième relève du conseil de style que vous accepterez ou non selon votre registre.

  1. Erreurs grammaticales : accords, conjugaisons, structures de phrases incorrectes

    Exemple : "Les enfant jouent" → Correction : "Les enfants jouent"

  2. Fautes d'orthographe : fautes de frappe, mots mal orthographiés

    Exemple : "Je vais au écolee" → Correction : "Je vais à l'école"

  3. Erreurs contextuelles : mots corrects mais mal employés

    Exemple : "Leurs travaille est terminé" → Correction : "Leur travail est terminé"

  4. Anglicismes et expressions inappropriées

    Exemple : "Je suis confus" → Suggestion : "Je suis désolé" (si contexte d'excuse)

  5. Améliorations stylistiques : phrases trop longues, répétitions, formulations passives

    Exemple : "Le rapport a été rédigé par moi""J'ai rédigé le rapport"

L'installation repose sur un seul conteneur : un serveur Java qui expose une API REST sur le port 8010. Tous les clients (VS Code, navigateur, vos scripts) parlent à cette même API, il n'y a ni base de données ni service annexe à déployer. Le schéma ci-dessous montre cette organisation : retenez surtout que le port 8010 est le seul point d'entrée, c'est lui que vous configurerez partout ensuite.

Architecture LanguageTool avec Docker : conteneur Java (8010) + clients VS Code, navigateur, API

Créez un dossier languagetool et ajoutez-y ce fichier docker-compose.yml :

services:
languagetool:
image: erikvl87/languagetool:6.7@sha256:454acc9b3d232bdf37a0eddb1c8d0e93513ce41b914a8a374e3c44a884122364
container_name: LanguageTool
restart: always
ports:
- 8010:8010
environment:
- Java_Xms=512m # Heap minimum Java
- Java_Xmx=1g # Heap maximum Java

Le premier démarrage télécharge l'image (plusieurs centaines de mégaoctets) puis charge les règles en mémoire, comptez une trentaine de secondes avant que l'API réponde. L'image embarque un HEALTHCHECK qui envoie une vraie requête de correction toutes les 30 secondes : c'est ce qui fait passer le conteneur à l'état healthy. Tant que docker ps affiche starting, le serveur n'est pas prêt et VS Code affichera des erreurs de connexion.

  1. Placer vous dans le dossier contenant docker-compose.yml

  2. Démarrer le conteneur :

    Fenêtre de terminal
    docker compose up -d

    L'option -d lance le conteneur en arrière-plan.

  3. Vérifier que le conteneur est démarré :

    Fenêtre de terminal
    docker ps --filter "name=LanguageTool"

    Résultat attendu :

    NAMES STATUS PORTS
    LanguageTool Up 1 minute (healthy) 0.0.0.0:8010->8010/tcp

Pour vérifier que LanguageTool fonctionne, envoyez une requête de test :

Fenêtre de terminal
curl -X POST \
--data "text=Je vais au écolee demain." \
--data "language=fr" \
http://localhost:8010/v2/check

Résultat attendu (extrait JSON) :

{
"software": {
"name": "LanguageTool",
"version": "6.7",
"buildDate": "2025-10-24 09:23:16 +0000"
},
"matches": [
{
"message": "Faute de frappe possible trouvée.",
"replacements": [
{"value": "école"},
{"value": "écoles"}
],
"offset": 11,
"length": 6
}
]
}

Plusieurs extensions portent un nom voisin dans le Marketplace. Celle utilisée ici est LanguageTool Linter, publiée par davidlday : c'est la seule qui sait pointer vers un serveur externe sans dépendre du service public. Vérifiez le nom de l'éditeur avant d'installer, une extension homonyme d'un autre auteur enverrait vos textes à l'API publique de languagetool.org, ce qui annulerait tout l'intérêt de l'installation locale.

  1. Ouvrez VS Code
  2. Allez dans l'onglet Extensions (Ctrl + Shift + X)
  3. Recherchez "LanguageTool Linter" (éditeur : davidlday)
  4. Cliquez sur Installer

Lien direct : LanguageTool Linter sur le Marketplace

Configurer l'extension pour utiliser le serveur local

Section intitulée « Configurer l'extension pour utiliser le serveur local »

Un réglage mérite votre attention : languageToolLinter.external.url vaut http://localhost:8081 par défaut, parce que c'est le port historique du serveur LanguageTool. L'image Docker utilisée ici écoute sur 8010. Sans cette ligne, l'extension interroge un port où rien ne répond et reste silencieuse, sans message d'erreur visible. Le réglage serviceType vaut déjà external par défaut, mais l'écrire explicitement évite les mauvaises surprises si un paramétrage d'entreprise l'a modifié.

  1. Ouvrir les paramètres JSON de VS Code :

    • Palette de commandes : Ctrl + Shift + P
    • Tapez : Preferences: Open Settings (JSON)
  2. Ajouter la configuration suivante :

    {
    "languageToolLinter.serviceType": "external",
    "languageToolLinter.languageTool.motherTongue": "fr",
    "languageToolLinter.languageTool.language": "fr",
    "languageToolLinter.external.url": "http://localhost:8010"
    }
  3. Redémarrer VS Code pour appliquer les changements

L'extension ne traite que quatre types de documents : texte brut, Markdown, MDX et HTML. Elle n'analyse pas les commentaires d'un fichier Python ou Go, ne vous attendez donc pas à voir des soulignements dans votre code source. Par défaut, l'analyse se déclenche à l'enregistrement du fichier (lintOnSave), pas à la frappe : les options lintOnChange et lintOnOpen existent mais restent désactivées, la première pouvant saturer le serveur sur un gros document.

  • Erreurs surlignées : toutes en jaune par défaut, la sévérité warning s'appliquant à l'ensemble des règles
  • Suggestions au survol : passez la souris sur le texte surligné
  • Correction en un clic : cliquez sur la suggestion pour appliquer

Pour distinguer visuellement les fautes d'orthographe (en rouge) des erreurs de grammaire et de typographie (en jaune), activez "languageToolLinter.diagnosticSeverityAuto": true et passez diagnosticSeverity à information.

Exemple visuel :

LanguageTool dans VS Code détectant "écolee" et proposant "école"

LanguageTool propose des extensions pour tous les navigateurs principaux. Important : ces extensions se connectent par défaut au cloud LanguageTool, pas à votre serveur local.

  1. Ouvrez le Chrome Web Store
  2. Cliquez sur "Ajouter à Chrome" (ou "Ajouter à Edge")
  3. L'icône LanguageTool apparaît dans la barre d'outils

L'extension corrige automatiquement les textes saisis dans :

  • Champs de formulaires web
  • Éditeurs en ligne (Google Docs, Medium, WordPress...)
  • Emails (Gmail, Outlook web)

Affichage des erreurs :

  • Rouge : fautes d'orthographe
  • Jaune : erreurs grammaticales
  • Bleu : suggestions stylistiques

La ligne qui décide, dans la majorité des cas, est celle de la reformulation IA : c'est la seule fonction que le serveur auto-hébergé ne sait pas rendre, parce qu'elle s'appuie sur des modèles propriétaires hébergés chez l'éditeur. Tout le reste (grammaire, orthographe, détection de style de base) tourne à l'identique en local. Les tarifs indiqués sont ceux affichés sur le site de l'éditeur et évoluent régulièrement, vérifiez-les avant tout arbitrage budgétaire.

FonctionnalitéGratuit (local)Premium cloud
Correction grammaire/orthographe✅ Complète✅ Complète
Détection style✅ Basique✅ Avancée
Reformulation IA❌ Non✅ Illimitée
Limite caractères✅ Illimitée✅ 150 000 par champ
Confidentialité✅ 100% local❌ Cloud
Coût✅ Gratuit💰 4,99€/mois (59,89€/an)
Guide de style❌ Non✅ Oui
Support 20+ langues✅ Oui✅ Oui

Le critère de tri n'est pas le budget mais la nature du texte. Si ce que vous rédigez ne doit pas sortir de votre réseau (documentation d'architecture, rapport d'audit, post-mortem d'incident), l'arbitrage est tranché d'avance : le serveur local est la seule option acceptable, quel que soit le confort offert par le cloud. Le Premium ne se justifie que sur du contenu public où la reformulation apporte une vraie valeur éditoriale.

ProfilSolution recommandée
Développeur / Ops rédigeant de la doc techniqueGratuit local (confidentialité + illimité)
Rédacteur pro cherchant reformulations IAPremium (4,99€/mois)
Équipe (2-20 personnes)Teams (56,90€/utilisateur/an)
Utilisation occasionnelleExtension navigateur gratuite

Le symptôme le plus déroutant n'est pas une erreur mais un silence : VS Code ne souligne rien et n'affiche aucun message. Dans ce cas, testez toujours l'API au curl avant de toucher aux réglages de l'éditeur. Si curl répond, le problème est côté extension (URL ou port) ; s'il ne répond pas, il est côté conteneur. Cette séparation vous évite de modifier au hasard des paramètres qui n'étaient pas en cause.

SymptômeCause probableSolution
curl: (7) Failed to connectConteneur non démarrédocker compose up -d
docker: command not foundDocker non installéInstaller Docker
Extension VS Code inactiveURL locale non configuréeAjouter "languageToolLinter.external.url": "http://localhost:8010"
Pas de correction dans VS CodeLangue mal configuréeVérifier "languageToolLinter.languageTool.language": "fr"
Conteneur redémarre en boucleMémoire insuffisanteAugmenter RAM Docker ou réduire heap Java

Exécutez ces quatre commandes dans l'ordre, elles vont du plus général au plus précis. Dans les logs, la ligne qui compte est celle du chargement des règles : tant que le serveur n'a pas terminé cette phase, il refuse les requêtes avec un timeout et non un message explicite. Un docker restart suffit à traiter la plupart des blocages, mais s'il faut le répéter plusieurs fois par jour, cherchez du côté de la mémoire allouée à la JVM plutôt que de continuer à redémarrer.

Fenêtre de terminal
# Vérifier que le conteneur est en cours d'exécution
docker ps --filter "name=LanguageTool"
# Voir les logs du conteneur
docker logs LanguageTool
# Tester l'API REST
curl -X POST \
--data "text=Test de connexion." \
--data "language=fr" \
http://localhost:8010/v2/check
# Redémarrer le conteneur
docker restart LanguageTool

Le serveur LanguageTool n'a aucune authentification : toute machine capable de joindre le port 8010 peut lui soumettre du texte et consommer la mémoire de la JVM. Dans le docker-compose.yml donné plus haut, la directive ports: - 8010:8010 publie le service sur toutes les interfaces de la machine. Sur un poste connecté à un réseau partagé, remplacez-la par 127.0.0.1:8010:8010 pour restreindre l'écoute au bouclage local.

  • Ne pas exposer le port 8010 sur internet : gardez LanguageTool en local (localhost uniquement)
  • Pas de secrets dans les textes : même en local, évitez de copier des tokens/clés dans vos textes à corriger
  • Pare-feu : si vous partagez sur le réseau local, filtrez l'accès par IP

Un serveur LanguageTool est sans état : il ne stocke ni les textes soumis ni les corrections. Une instance partagée par une équipe entière ne pose donc pas de problème de cloisonnement des données, contrairement à un service cloud. En revanche, le dictionnaire personnalisé vit côté client, dans les réglages de l'extension VS Code, et n'est pas mutualisé : chacun maintient sa propre liste de termes métier.

  • Un conteneur par équipe : déployez sur un serveur interne partagé (changez le port si multi-instances)
  • Dictionnaire personnalisé : ajoutez vos termes techniques dans les paramètres de l'extension
  • Ignorer certains fichiers : configurez VS Code pour exclure les fichiers générés (.min.js, .lock)

Deux leviers seulement, et ils n'agissent pas sur la même chose. Le heap Java conditionne la taille des documents traitables sans erreur mémoire ; les n-grammes améliorent la qualité de détection sur les mots corrects mais mal employés (confusions du type « ces » et « ses »), au prix d'un stockage important. Commencez sans n-grammes : ils n'apportent rien sur les fautes d'orthographe ordinaires et représentent plusieurs gigaoctets à conserver.

  • Heap Java : augmentez Java_Xmx si vous corrigez de très gros documents (> 50 000 mots)

  • Ngrams (optionnel) : activez les modèles de langage pour détecter les confusions de mots. Comptez environ 1,8 Go pour le jeu français et 9 Go pour l'anglais :

    environment:
    - langtool_languageModel=/ngrams
    volumes:
    - ./ngrams:/ngrams:ro

    Décompressez chaque archive dans un sous-dossier portant le code de la langue (./ngrams/fr/, ./ngrams/en/), sinon le serveur ne les charge pas. Téléchargez les jeux depuis LanguageTool.org

  1. LanguageTool local garantit la confidentialité : vos textes ne quittent jamais votre machine
  2. Version 6.7 (octobre 2025) disponible via Docker erikvl87/languagetool:6.7
  3. API REST sur le port 8010 : intégrable dans vos scripts et outils
  4. Extension VS Code : correction en temps réel avec configuration simple
  5. Gratuit vs Premium : version locale gratuite suffisante pour DevOps, Premium (4,99€/mois) pour reformulation IA
  6. 20+ langues supportées : français, anglais, allemand, espagnol, italien...

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn