Quelle est la meilleur IA pour l’orthographe ?

Là est la question qui me turlupine depuis quelques temps.

Je suis nul en orthographe (et en grammaire), surtout à l’ordinateur (à l’écrit, cela va… mieux). Soit je tape trop vite, soit il y a des caractères qui sautent, soit, soit, soit… Et je ne parle pas des règles de grammaire débiles, ou tout simplement de la ponctuation.

Aujourd’hui, quand j’écris un roman, globalement, cela se passe ainsi : j’écris un premier draft, puis je réécris un deuxième draft, puis je réécris le troisième, etc., jusqu’à ce que cela me plaise plus ou moins, car, tel un tailleur de pierre, je vois un roman comme une forme absconse qu’il faut travailler. Et à un moment… entre deux écritures, je vérifie d’abord par moi-même, puis avec le correcteur orthographique intégré (OnlyOffice), puis, je continue de taillader le texte jusqu’à ce qu’il me plaise. Et quand je considère le texte terminé, je passe sur un outil comme QuillBot (sorte d’Antidote)/chatgpt et je choisis au cas par cas les fautes qu’il reste (heureusement plus beaucoup).

Enfin, pour les romans, un humain passe derrière, c’est-à-dire une correctrice professionnelle (et oui, ça a un coût, mais cela les vaut largement).

Voyez-vous où est le problème ? Non ? Je vais vous aider : ChatGPT ou QuillBot ne m’appartiennent pas (sans déconner), et je ne veux pas qu’ils aient accès à mes œuvres gratuitement.

Donc question : comment faire pour avoir ma propre IA (sur mon propre serveur) qui corrige mes textes toute seule, un peu comme Antidote avant, mais basée sur l’IA ? Ne serait-ce que : existe-t-il des benchmarks pour cela ? Eh bien, fun fact… non. Enfin, plus ou moins non. Il existe bien des datasets de phrases (MultiBLiMP-Fr par exemple), justes et fausses, mais c’est tout. Il n’y a pas d’explication de l’erreur grammaticale. Or moi, c’est ce que je veux : une explication de l’erreur grammaticale ou orthographique, et pouvoir choisir.

Donc il faut le faire soi-même… et quand on fait soi-même, autant demander à une IA :-D.

Stratégie


Le principe est simple : je donne un texte à une IA (en local) et elle me sort la liste des erreurs. Ensuite, j’ai plus qu’à compter les points… ou pas, parce que c’est un peu plus compliqué que cela.

À la base, il y a tout simplement un problème de format. Comment me renvoyer les erreurs ? En gras dans le texte ? À côté, dans un tableau ?

Je teste ici deux façons de faire :

  • La version ETS, qui met l’erreur dans le texte directement. En gros, dès qu’il y a une faute, elle met le mot fautif entre accolades ainsi que les explications. Exemple : Le chat {noire|noir|fdkjf}.
  • Un JSON généré à côté. Le gros problème avec ça est qu’après, il faut faire le lien entre le document et les erreurs. L’avantage est que l’IA n’a pas à s’embêter avec le texte.

Puis il y a aussi la stratégie d’envoi. Faut-il demander à l’IA de tout faire d’un coup ou en plusieurs passes ? Il se trouve qu’envoyer un roman de 100 000 mots d’un coup, fun fact, ça ne marche pas… Ah non, mais les IA, ça travaille pour toi, blablabla… tu parles. Donc, dans un premier temps, on le fait phrase par phrase.

Enfin, il y a la stratégie à double passe, qui consiste d’abord à demander au LLM de réécrire la phrase ou le texte sans faute, puis de lui donner les deux phrases (la corrigée et la fautive) et de lui demander d’expliquer toutes les fautes… C’est évidemment deux fois plus long, mais en général, cela donne de meilleurs résultats (plus bas, cela porte le nom de Rewrite ETS et Rewrite JSON).

J’ai trouvé un petit texte sur Internet, j’ai (enfin Claude, mais bref) rajouté des fautes et voilà.

le texte court : L'Univers est nait il y a quatorse miliards d'annees. Un jour, dans plus ou moins cent miliards d'annees, il va disparaitre. Avant cela, dans plus ou moins cinq miliards d'annees, quand il aura brulé toute son energie, le Soleil va mourir.\nSelon la théorie du \"Big Bang\", il y a quatorze milliards d'années, l'Univers est devennu extremement chaut, puis il a explosé. Apres l'explosion, la temperature a lentement baissé et les galaxie ont commencé a se former.\nL'Univers est encore en expension. Il devient de plus en plus grand à chaque instant. Personne ne sait combien il va grandir, ni s'il va un jour cesser de grandir.\nUne etoile est une boule de gaz chaud, principalement de l'hydrogene. Les étoiles brillent parce qu'elles brûlent leur gaz. Il existe plusieurs sortes d'etoiles: petites, grandes, jeune, vieilles, ou mortes.\nLes étoiles naissent dans des nuages de gaz et de pousiere appelés nébuleuses. Quand une nébuleuse devient assez dense, une etoile se forme.\nLe Soleil est une etoile de taille moyen. Il nous donne de la lumiere et de la chaleur. Un jour, il va devenir une étoile rouge geant, puis va rétrécir et devenir une naine blanche, puis va refroidir et s'eteindre.\nCertaines étoiles explosent à la fin de leur vie. Quand une etoile explose, son gaz et sa lumiere sont difusés dans l'espace.\nLe Soleil est l'étoile situé au centre de notre système solaire. Il est tres chaud: quinze millions de degrés en son centre.\nLe Soleil donne a la Terre de la lumiere et de la chaleur. Sans le Soleil, la vie sur Terre seraient impossible.\nLe Système solaire est un groupe d'objets qui se déplace autour du Soleil. Il comprend huit planetes, des lunes, des astéroïdes et des comètes.\nLes quatres petites planètes rocheuses sont Mercure, Venus, la Terre et Mars.\nBeaucoup de planètes ont des lune. Le Système solaire fait parti de la galaxie appelée la Voie lactée.\n.

Ceci se trouve dans un fichier json (ici) et on y va.

Environment

Vu le nombre de trucs, évidemment, cela va être compliqué de faire ça sur ma petite bécane. Heureusement, j’ai un compte RunPod. Après calcul, faire tout tourner prend une heure avec une bonne carte graphique (ce qui revient à 1 voire 2 euros de l’heure… on en reparlera). Ça va…

Le script teste tout et renvoie les résultats dans un CSV. J’ai juste à attendre.

Resultats

En mode phrase, sachant que le texte comporte 44 erreurs, ce n’est pas terrible. La plupart sont merdiques à souhait. Certaines ne trouvent que dalle (spéciale dédicace à Phi-4-mini, mais à quoi ça peut servir ?). Les deux meilleurs sont Qwen3:14 et Mistral. Et surtout, il y a deux tendances : la première, c’est que le rewrite marche globalement mieux ; la seconde, c’est que le JSON est souvent meilleur. MAIS.

Les faux négatifs et les faux positifs (des hallucinations) : seuls les Qwen s’en sortent. En compilant les deux données, on obtient la précision, et là, seuls les Qwen s’en sortent. Ce qui est marrant pour une IA qui n’est pas française.

Mais ça, c’était sur les phrases. Que valent les IA sur le texte entier ? Eh bien… il semblerait que les IA soient plus performantes sur le texte entier (pour certaines) que sur des phrases. Il y a moins d’erreurs, moins de faux positifs, moins de faux négatifs, et, pour certaines, elles trouvent toutes les erreurs d’un coup. Qwen et Mistral sont les meilleurs. Et, de nouveau, le rewrite est meilleur que le direct.

Conclusion première partie

Eh bien, c’est quand même pas mal. Je ne dis pas que c’est parfait, car il y a un certain nombre de problèmes comme le genre (il n’est écrit nulle part si le sujet est masculin, féminin, etc.), la ponctuation, etc. Mais je suis étonné du résultat. Est-ce qu’on peut se passer des gros modèles, style ChatGPT et autres ? Oui et non, cela mérite d’être creusé, mais ça, c’est pour un autre blog.

Et en plus gros??

Bon, je suis tombé sur un os. Moi naïvement, j’espérais pouvoir donner un roman de 200 000 mots, appuyer sur Enter, attendre, disons… 2 minutes, et voilà : obtenir, d’une façon ou d’une autre, toutes les erreurs de mon roman, un peu comme Antidote ou QuillBot. Tu parles !

C’est simple : aucune IA LLM locale n’accepte 200 000 mots, ni 100 000, ni 50 000, ni même moins. Et ce n’est pas que ça plante, c’est que c’est loooooong… Donc ici, j’ai été obligé de couper en chunks de 2 000, 6 000 et 8 000 tokens (le 4 000 a planté, mais en regardant les résultats intermédiaires, ce n’est pas le mieux).

La grosse surprise, c’est que pour les 8 000 tokens, l’ETS en une passe est la meilleure. J’aurais cru que le rewrite serait au-dessus dans tous les cas… mais non. Aussi, tant mieux que ce soit l’ETS, parce que c’est le plus facile à manipuler par la suite.

L’attribut alt de cette image est vide, son nom de fichier est image-10.png.

Je n’ai lancé que sur 5 LLM parce que… ouh là là, que c’est lent. Voici, en secondes, le temps que cela prend par type pour des chunks de 8 000 tokens. Merde… pour Qwen, ça va lentement. De 45 minutes à 1 h 30 par modèle et par chunk. Quand je lance un batch, j’en ai pour 24 heures… sans déconner, je suis déjà à 115 euros. MAIS…

Conclusion

Baaah… bof. Il y a des trucs bien et des trucs moins bien. Honnêtement, je m’attendais vraiment à pouvoir donner le texte en entier et obtenir directement ce que je veux. En gros, un remplaçant d’Antidote. Eh bien, pas du tout.

Déjà, il y a un problème de sortie : les LLM ne savent pas sortir plus de 16 000 tokens. Quand on demande la sortie d’un texte de 50 000 mots, ça pose problème. Donc il faut une stratégie de découpage, et si il y a une stratégie de découpage, il faut du contexte (je est féminin ? masculin ?, etc.).

Deuxièmement, le temps. 45 minutes sur une RTX 5090… euh… ça ne peut pas être la seule stratégie. Il faut autre chose, un tampon, etc.

Enfin, il y a le pourcentage d’erreurs ainsi que les faux positifs. Je trouve qu’il y en a beaucoup… pour une IA. Je m’attendais vraiment à moins, à arriver à du 99 % dans beaucoup de cas.

Mais bref, de nouveau, l’IA, ça doit être un outil dans un pipeline plus qu’une solution miracle. Clairement, on est encore loin de l’AGI.

Annexe

Note :

  • le code du script a été créé par claude (même pas lu).
  • les fautes (dans le json), idem..
  • En gros, j’ai même pas été voir. Est-ce que c’est une source d’erreur possible …. ouiiiii.

🟢 Petits modèles (< 5 GB sur disque / Moins de 10B de paramètres)

Idéaux pour tourner localement sur un smartphone, un PC portable standard ou pour des tâches ultra-rapides.

Nom du modèlePays d’origine (Entreprise)Taille (Paramètres)Fenêtre de contexte (Tokens)Description courte
llama3.2:3b🇺🇸 États-Unis (Meta)3 Milliards128kUn modèle ultra-léger et rapide, idéal pour tourner localement sur smartphone ou PC pour des tâches de texte basiques.
llama3.2🇺🇸 États-Unis (Meta)1 ou 3 Milliards128kVariante de la même famille Meta (souvent associé par défaut à la version 3B), optimisée pour le traitement sur appareil (on-device).
phi3:mini🇺🇸 États-Unis (Microsoft)3,8 Milliards128kConçu avec des données synthétiques de haute qualité pour offrir un excellent raisonnement malgré sa très petite taille.
phi4-mini🇺🇸 États-Unis (Microsoft)3,8 Milliards128kVersion améliorée de la gamme Phi de Microsoft, offrant de meilleures performances en logique, code et capacités multimodales.
gemma3:4b🇺🇸 États-Unis (Google)4 Milliards128kModèle léger de Google supportant nativement les images (multimodal) et plus de 140 langues avec une grande fluidité.
mistral🇫🇷 France (Mistral AI)7 Milliards32kFait généralement référence à Mistral-7B-v0.3, le modèle historique et pionnier de l’écosystème open-source français.
qwen2.5:7b🇨🇳 Chine (Alibaba)7 Milliards128kUn modèle de référence extrêmement performant en code, en mathématiques et très à l’aise en français.
aya-expanse:8b🇨🇦 Canada (Cohere)8 Milliards8kSpécialement entraîné et optimisé pour exceller dans la traduction et la compréhension de dizaines de langues.
qwen3:8b🇨🇳 Chine (Alibaba)8 Milliards128k / 256kÉvolution de la gamme d’Alibaba, poussant encore plus loin les capacités d’agents autonomes et le raisonnement logique.

🟡 Moyens modèles (5 à 15 GB sur disque / 8B à 24B de paramètres)

Le juste milieu pour les configurations grand public avancées (PC avec une bonne carte graphique dédiée comme une RTX 3060/4060 et +).

Nom du modèlePays d’origine (Entreprise)Taille (Paramètres)Fenêtre de contexte (Tokens)Description courte
llama3.1:8b🇺🇸 États-Unis (Meta)8 Milliards128kLe grand classique open-source de Meta, très polyvalent et massivement utilisé comme base pour de nombreux projets.
mistral-nemo🇫🇷 / 🇺🇸 (Mistral AI & NVIDIA)12 Milliards128kDéveloppé conjointement, il brille par sa grande fenêtre de contexte et son efficacité à traiter le français.
gemma3:12b🇺🇸 États-Unis (Google)12 Milliards128kVersion intermédiaire de Google, excellent compromis entre la rapidité d’exécution et la précision du raisonnement multimodal.
phi4🇺🇸 États-Unis (Microsoft)14 Milliards16kModèle de taille moyenne axé sur le raisonnement complexe et scientifique grâce à des techniques d’entraînement avancées.
qwen2.5:14b🇨🇳 Chine (Alibaba)14 Milliards128kTrès puissant pour la génération de code complexe et le suivi d’instructions structurées (comme le JSON).
qwen3:14b🇨🇳 Chine (Alibaba)14 Milliards128k / 256kVersion de troisième génération combinant la puissance de calcul d’Alibaba et une efficacité accrue en mode « réflexion ».
mistral-small:22b🇫🇷 France (Mistral AI)22 Milliards64kConçu spécifiquement pour l’entreprise, parfait pour les tâches de type agent, appels de fonctions (function calling) et raisonnement.
mistral-small3.2:24b🇫🇷 France (Mistral AI)24 Milliards128kVersion mise à jour et plus large, ajoutant des capacités de vision (multimodale) de pointe et un meilleur suivi des instructions.