MarkItDown : Le Convertisseur Universel de Microsoft
Microsoft vient de publier un outil qui va te changer la vie : MarkItDown. Un simple utilitaire Python qui transforme à peu près n'importe quel fichier en Markdown propre.
Pourquoi c'est important ? Parce que les LLMs adorent le Markdown. C'est leur langue maternelle. Et MarkItDown est le traducteur universel qu'il te manquait.
C'est quoi MarkItDown ?
MarkItDown est un outil léger en Python qui convertit les fichiers en Markdown pour les LLMs et les pipelines d'analyse de texte.
Fonctionnement : Tu lui donnes un PDF, un PowerPoint, une image, un fichier audio... et il te rend du Markdown structuré avec titres, listes, tableaux, liens.
Comparaison : C'est comme textract, mais en mieux — MarkItDown préserve la structure du document et produit du Markdown que les LLMs comprennent nativement.
Formats Supportés
MarkItDown gère un impressionnant catalogue de formats :
- Documents : PDF, PowerPoint, Word, Excel
- Images : OCR + métadonnées EXIF
- Audio : Transcription vocale + métadonnées
- Web : HTML
- Données : CSV, JSON, XML
- Archives : ZIP (itération sur le contenu)
- Vidéo : YouTube URLs (transcription)
- Livres : EPubs
Et plus encore via un système de plugins.
Pourquoi le Markdown ?
Le secret des LLMs : Les modèles comme GPT-4o "parlent" naturellement Markdown. Ils ont été entraînés sur des quantités massives de textes formatés en Markdown.
Avantages :
- Token-efficient — Moins de tokens = moins cher
- Structure préservée — Titres, listes, tableaux, liens
- Natif pour les LLMs — Pas besoin de transformation
- Lisible par les humains — Pas du binaire incompréhensible
Installation & Utilisation
Installation 100% Locale (Recommandé Privacy)
Pour les documents bureautiques standards — traitement 100% local, aucune donnée envoyée à l'extérieur :
Ce que tu obtiens : - âś… PDF, PowerPoint, Word, Excel - âś… HTML, CSV, JSON, XML - âś… ZIP, EPubs - âś… Images (OCR basique sans LLM)
Ce que tu perds : - ❌ Transcription audio (Google Speech API) - ❌ YouTube transcription - ❌ Azure Document Intelligence
Installation Complète (avec dépendances externes)
⚠️ Attention : Cette installation inclut des dépendances qui envoient des données à des services tiers (Google pour l'audio, YouTube, etc.)
Utilisation en Ligne de Commande
# Convertir un PDF
markitdown document.pdf > output.md
# Spécifier le fichier de sortie
markitdown document.pdf -o output.md
# Piping
cat document.pdf | markitdown
Utilisation en Python
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
result = md.convert("test.xlsx")
print(result.text_content)
Fonctionnalités Avancées
Azure Document Intelligence
MarkItDown s'intègre avec Azure Document Intelligence pour une conversion encore plus précise :
LLM Integration
Tu peux utiliser des LLMs pour générer des descriptions d'images (pour pptx et images) :
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("example.jpg")
print(result.text_content)
Plugins
MarkItDown supporte les plugins tiers :
# Lister les plugins
markitdown --list-plugins
# Activer les plugins
markitdown document.pdf --use-plugins
Cas d'Usage
RAG (Retrieval-Augmented Generation) : Convertir des documents PDFs en Markdown pour l'indexation vectorielle.
Analyse de texte : Transformer des PowerPoint, Word en texte brut pour l'analyse.
Archivage : Convertir des documents bureautiques en Markdown (format pérenne).
Transcription : Extraire le texte de fichiers audio automatiquement.
Pipeline LLM : Prétraiter des documents pour les passer à un LLM.
Breaking Changes (0.0.1 → 0.1.0)
Attention : Si tu utilisais la version 0.0.1, la 0.1.0 introduit des breaking changes :
- Dependencies organisées en groupes optionnels — Utilise
pip install 'markitdown[all]' - convert_stream() demande maintenant un objet binaire
- DocumentConverter lit depuis des streams, plus de fichiers temporaires
MCP Server
Nouveauté : MarkItDown offre maintenant un serveur MCP (Model Context Protocol) pour l'intégration avec des applications LLM comme Claude Desktop.
Voir markitdown-mcp pour plus d'infos.
Docker
MarkItDown est aussi disponible en Docker :
Privacy : Ce qui est Local vs Externe
⚠️ Important : MarkItDown est hybride — certaines fonctions sont 100% locales, d'autres envoient tes données à des services tiers.
100% LOCAL ✅ (Aucune donnée envoyée)
Documents bureautiques : - PDF (texte extractible) - PowerPoint (PPTX) - Word (DOCX) - Excel (XLSX/XLS) - HTML - CSV, JSON, XML - ZIP - EPubs - Images (OCR basique, sans LLM)
Ces formats = traitement local, aucune donnée envoyée à Microsoft ou des tiers.
EXTERNE ❌ (Données sortent de ta machine)
1. Audio — Google Speech Recognition API 🚨
La librairie speech_recognition utilise l'API Google. Ton fichier audio est envoyé aux serveurs de Google pour transcription.
Solution : Ne pas installer le groupe audio-transcription
2. YouTube — Google/YouTube 🚨
Évident : doit contacter YouTube pour récupérer la transcription.
Solution : Ne pas installer le groupe youtube-transcription
3. Images avec LLM (optionnel) ⚠️
# Si tu passes un client LLM, les images sont envoyées à ce LLM
md = MarkItDown(llm_client=OpenAI(), llm_model="gpt-4o")
result = md.convert("image.jpg")
Sans LLM : Les images utilisent l'OCR local (pas d'envoi) Avec LLM : Les images sont envoyées au LLM choisi (OpenAI, etc.)
Solution : Ne pas passer de llm_client dans le constructeur
4. Azure Document Intelligence (optionnel) ⚠️
Explicitement externe : tu dois fournir un endpoint Azure = envoi Ă Microsoft.
Solution : Ne pas utiliser l'option -d ou ne pas installer az-doc-intel
Verdict Privacy
MarkItDown = outil hybride local/externe
- Documents standards : 100% local, excellent pour la privacy âś…
- Audio/YouTube : Envoi à Google, pas private ❌
- Images avec LLM : Envoi au LLM choisi, dépend de ta config ⚠️
- Azure Doc Intel : Envoi à Microsoft, pas private ❌
Pour un homelab privacy-conscious : Installe-le sans les dépendances audio/YouTube et tu as un convertisseur local très puissant pour PDFs, PowerPoint, Word, Excel.
Le piège : pip install 'markitdown[all]' installe TOUT y compris les dépendances externes. Sois explicite sur ce que tu installes.
Verdict
MarkItDown est simple, efficace et fait exactement ce qu'il promet. Tu as un PDF ? Il devient Markdown. Tu as un PowerPoint ? Markdown. Tu as une image ? OCR + Markdown.
C'est le genre d'outil qui semble basique, mais qui change tout pour les pipelines LLM. Plus besoin de scripts custom pour chaque format. Plus besoin de perdre du temps Ă extraire le texte des PDFs. MarkItDown fait le boulot.
Et c'est Microsoft. Donc ça va probablement être maintenu, documenté, et intégré partout.
À mettre dans ta boîte à outils IA, sans hésitation.
Pour aller plus loin :
- GitHub : microsoft/markitdown
- PyPI : pypi.org/project/markitdown/
- Documentation MCP : markitdown-mcp