Skip to content

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 :

  1. Token-efficient — Moins de tokens = moins cher
  2. Structure préservée — Titres, listes, tableaux, liens
  3. Natif pour les LLMs — Pas besoin de transformation
  4. 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 :

pip install 'markitdown[pptx,docx,xlsx,pdf]'

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)

pip install 'markitdown[all]'

⚠️ 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 :

markitdown document.pdf -o output.md -d -e "<endpoint>"

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 :

docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < ~/file.pdf > output.md

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 🚨

# Audio transcription = ENVOI À GOOGLE
markitdown fichier_audio.mp3

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 🚨

# YouTube = contacte les serveurs YouTube
markitdown "https://youtube.com/watch?v=..."

É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) ⚠️

markitdown document.pdf -d -e "<azure_endpoint>"

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 :