Dans l’article précédent, on a vu pourquoi les IA préfèrent le Markdown au Word. Reste la question pratique : comment tu passes de l’un à l’autre sans y perdre ta soirée. Surtout quand tu as une cinquantaine de documents Words. Voici la méthode, en deux commandes et un script.
Word en Markdown en 30 secondes, sans rien installer
Si tu as un seul fichier à convertir ponctuellement, des outils en ligne comme word2md.com ou CloudConvert font le travail correctement directement dans ton navigateur. Pratique, zéro installation. Aussi, il existe une version en ligne de Pandoc qui est assez efficace.

Mais dès que tu sors de ce cas simple, à savoir plusieurs fichiers par semaine, des documents de 100+ pages, un historique de versions (suivi de modifications Word) à gérer, ou l’envie d’automatiser tout ça depuis n8n : l’outil en ligne montre ses limites : un fichier à la fois, pas de script possible, et tes documents transitent par un serveur tiers.
| Scénario | Outil en ligne | Pandoc (script) |
|---|---|---|
| Conversion ponctuelle d’un seul fichier | Instantané, rien à installer | Nécessite une installation |
| Conversion en série (plusieurs fichiers) | Un par un, manuel | Scriptable, automatisable |
| Documents volumineux / suivi de modifications | Support limité | Options dédiées |
| Confidentialité (docs sensibles) | Dépend de l’outil | 100 % local |
| Intégration dans un pipeline (n8n, CI/CD) | Non | Oui |
Pour un usage régulier ou dans un pipeline RAG, Pandoc reste le meilleur compromis.
Pandoc : l’outil de référence
Pandoc est le convertisseur de référence entre formats de documents, écrit en 2006 et devenu un standard en écriture technique et en édition. Il lit et écrit une cinquantaine de formats, et il gère la structure d’un Word mieux que la plupart des convertisseurs en ligne (mammoth compris, qui passe par une étape HTML intermédiaire et perd de la structure au passage).
Le principe : on installe Pandoc une fois, puis on l’appelle avec un petit script Python qui range tout proprement (dossier de sortie, images extraites à part).
Étape 1 — Installer Pandoc
Une seule commande selon ton système.
Windows (avec winget, déjà présent sur Windows 10/11) :
winget install --id JohnMacFarlane.PandocSi tu es plutôt Chocolatey : choco install pandoc.
macOS (avec Homebrew) :
brew install pandocLinux (Debian/Ubuntu) :
sudo apt install pandocRemarque pour Linux : la version des dépôts est parfois un peu ancienne. Si tu veux la dernière, prends le .deb sur la page de téléchargement de Pandoc. Prends une version récente dans tous les cas (les vieilles versions (avant la 3.1.6) ont eu une faille sur l’extraction d’images, corrigée depuis).
Enfin, on vérifie que tout est en place :
pandoc --versionSi tu vois un numéro de version s’afficher, tu es bon.
Étape 2 — Le script de conversion
Voici le script. Il valide le fichier d’entrée, lance Pandoc, range le .md dans un dossier output/ et extrait les images dans un sous-dossier dédié par document, pour éviter que deux conversions écrasent leurs images.
import sys
import os
import subprocess
import shutil
def check_pandoc():
"""Vérifie si Pandoc est installé et accessible dans le PATH."""
if not shutil.which("pandoc"):
print("ERREUR: Pandoc n'est pas installé ou n'est pas dans le PATH.")
print("Veuillez l'installer depuis https://pandoc.org/installing.html")
sys.exit(1)
def convert_docx_to_md(input_path):
"""
Convertit un fichier .docx en .md en utilisant Pandoc.
"""
if not os.path.exists(input_path):
print(f"ERREUR: Le fichier '{input_path}' n'a pas été trouvé.")
sys.exit(1)
if not input_path.lower().endswith('.docx'):
print(f"ERREUR: Le fichier '{input_path}' n'est pas un document Word (.docx).")
sys.exit(1)
output_dir = "output"
base_name = os.path.basename(input_path)
file_name_without_ext = os.path.splitext(base_name)[0]
output_path = os.path.join(output_dir, f"{file_name_without_ext}.md")
media_path = os.path.join(output_dir, "media", file_name_without_ext)
os.makedirs(media_path, exist_ok=True)
print(f"Conversion de '{input_path}' en cours...")
try:
command = [
"pandoc",
input_path,
"-o",
output_path,
"--extract-media",
media_path
]
result = subprocess.run(command, check=True, capture_output=True, text=True, encoding='utf-8')
if result.returncode == 0:
print(f"Succès ! Fichier converti : '{output_path}'")
print(f" Images extraites dans : '{media_path}'")
except FileNotFoundError:
print("ERREUR: La commande 'pandoc' est introuvable.")
sys.exit(1)
except subprocess.CalledProcessError as e:
print(f"ERREUR lors de la conversion avec Pandoc pour le fichier '{input_path}':")
print(e.stderr)
sys.exit(1)
except Exception as e:
print(f"Une erreur inattendue est survenue : {e}")
sys.exit(1)
def main():
"""Fonction principale du script."""
check_pandoc()
if len(sys.argv) != 2:
print("Usage: python converter.py <chemin_vers_le_fichier.docx>")
sys.exit(1)
input_file = sys.argv[1]
convert_docx_to_md(input_file)
if __name__ == "__main__":
main()Enregistre ça dans un fichier converter.py.
Étape 3 — L’utiliser
Depuis ton terminal, tu passes le chemin de ton Word en argument :
python converter.py "mes_documents/rapport_hebdomadaire.docx"Le script te sort output/rapport_hebdomadaire.md, et si ton document contenait des images, elles atterrissent dans output/media/rapport_hebdomadaire/. Il ne te reste plus qu’à ouvrir le .md et le donner à ton IA.
Alors, pourquoi passer par un script plutôt que la commande Pandoc brute ? Pour trois raisons : il te prévient si Pandoc n’est pas installé, il refuse les fichiers qui ne sont pas des .docx, et il range la sortie toujours au même endroit. Quand tu convertis dix documents dans la semaine, ces trois détails t’évitent des bêtises.
Cas particulier : convertir un vieux fichier .doc
Pandoc ne lit pas directement l’ancien format .doc (pré-2007). Si tu as des archives dans ce format, passe par LibreOffice en ligne de commande pour le convertir d’abord en .docx :
libreoffice --headless --convert-to docx document.docUne fois le .docx obtenu, le script converter.py fonctionne normalement dessus.
Convertir plusieurs fichiers d’un coup
Cela peut être utile, pour traiter un dossier entier plutôt qu’un fichier à la fois, une petite boucle suffit :
for file in *.docx; do
python converter.py "$file"
doneSous Windows (PowerShell), l’équivalent :
Get-ChildItem -Filter "*.docx" | ForEach-Object { python converter.py $_.FullName }Gérer le suivi des modifications Word
Si tes documents contiennent des track changes (suivi de modifications) ou un historique de versions, Pandoc propose l’option --track-changes pour décider quoi faire de ces révisions : les accepter, les rejeter, ou toutes les conserver dans le Markdown de sortie.
pandoc document.docx --track-changes=accept -o output.mdRemplace accept par reject pour ignorer les modifications en attente, ou par all pour tout garder visible dans le Markdown. Un point à cadrer avant de lancer une conversion en masse sur des documents collaboratifs.
Options avancées
Une fois le réflexe pris, quelques options valent le détour :
- -t gfm : sort du GitHub Flavored Markdown, la variante la plus compatible (GitHub, Obsidian, GitBook, Notion).
- –toc : génère une table des matières en tête de fichier, utile sur les documents longs.
- –metadata-file=metadata.yaml : injecte un bloc de métadonnées (titre, date, auteur) en en-tête, pratique si le Markdown est destiné à un CMS ou un générateur de site statique.
L’alternative orientée IA : MarkItDown
Si ton but c’est vraiment de nourrir des LLM en série, jette un œil à MarkItDown, l’utilitaire Python de Microsoft (plus de 130 000 étoiles sur GitHub). En effet, il convertit en Markdown non seulement le Word, mais aussi PDF, PowerPoint, Excel, images et audio, et il est pensé pour les pipelines RAG.
pip install 'markitdown[all]'
markitdown mon-document.docx -o sortie.mdPandoc reste plus fidèle sur la mise en forme (tableaux, notes de bas de page, suivi de modifications) ; MarkItDown ratisse plus large côté formats d’entrée. Donc à toi de voir selon ce que tu convertis le plus.
Questions fréquentes
Mes documents sont-ils envoyés quelque part avec cette méthode ?
Non. Le script tourne entièrement en local sur ta machine, contrairement aux outils de conversion en ligne qui font transiter le fichier par leur serveur.
Puis-je automatiser ça depuis n8n ?
Oui : héberge le script derrière un petit service HTTP (FastAPI ou Express) sur ton VPS, et appelle-le depuis un workflow n8n via un node HTTP Request.
Et pour convertir l’inverse, du Markdown vers Word ?
Pandoc fait aussi ce sens : pandoc document.md -o document.docx.
Ça marche aussi pour convertir un PDF ?
Pas directement avec ce script (pensé pour le .docx), mais si ton besoin de départ est un PDF scanné à rendre modifiable, commence par cette étape avant d’enchaîner sur la conversion Markdown.
Une fois le script en place, convertir un Word devient un réflexe de trente secondes, pas une corvée. Le vrai gain se voit à partir du dixième document, quand la conversion tourne en arrière-plan sans que tu y penses.
Pour comprendre pourquoi ce détour par le Markdown change vraiment la donne avec l’IA, direction l’article Pourquoi les IA préfèrent le Markdown au Word.


