MarkItDown – Conversion de fichiers en Markdown
Présentation
MarkItDown est un outil Python développé par Microsoft pour convertir divers formats de fichiers en Markdown. Il est particulièrement utile pour convertir des documents dans un format texte adapté aux LLM (grands modèles de langage), car le Markdown est efficace en termes de tokens et bien compris par les modèles de langage modernes.
Avantages clés :
- Convertir des documents en Markdown propre et structuré
- Format efficace en tokens pour le traitement par LLM
- Prend en charge plus de 15 formats de fichiers
- Descriptions d'images améliorées par IA (optionnel)
- OCR pour les images et documents scannés
- Transcription de la parole pour les fichiers audio
Amélioration visuelle avec des schémas scientifiques
Lors de la création de documents avec ce skill, pensez toujours à ajouter des diagrammes et schémas scientifiques pour améliorer la communication visuelle.
Si votre document ne contient pas déjà de schémas ou diagrammes :
- Utilisez le skill scientific-schematics pour générer des diagrammes de qualité publication par IA
- Décrivez simplement votre diagramme souhaité en langage naturel
- Nano Banana Pro générera, révisera et affinera automatiquement le schéma
Pour les nouveaux documents : Les schémas scientifiques doivent être générés par défaut pour représenter visuellement les concepts clés, les workflows, les architectures ou les relations décrites dans le texte.
Comment générer des schémas :
python scripts/generate_schematic.py "description de votre diagramme" -o figures/output.png
L'IA effectuera automatiquement :
- La création d'images de qualité publication avec un formatage approprié
- La révision et l'affinage en plusieurs itérations
- L'accessibilité (adapté aux daltoniens, contraste élevé)
- La sauvegarde des sorties dans le répertoire figures/
Quand ajouter des schémas :
- Diagrammes de flux de conversion de documents
- Illustrations d'architecture de formats de fichiers
- Diagrammes de pipeline de traitement OCR
- Illustrations de flux d'intégration
- Diagrammes d'architecture système
- Diagrammes de flux de données
- Tout concept complexe bénéficiant d'une visualisation
Pour des conseils détaillés sur la création de schémas, référez-vous à la documentation du skill scientific-schematics.
Formats pris en charge
| Format | Description | Notes |
|---|---|---|
| Portable Document Format | Extraction complète du texte | |
| DOCX | Microsoft Word | Tableaux, mise en forme conservée |
| PPTX | PowerPoint | Diapositives avec notes |
| XLSX | Classeurs Excel | Tableaux et données |
| Images | JPEG, PNG, GIF, WebP | Métadonnées EXIF + OCR |
| Audio | WAV, MP3 | Métadonnées + transcription |
| HTML | Pages web | Conversion propre |
| CSV | Valeurs séparées par des virgules | Format tableau |
| JSON | Données JSON | Représentation structurée |
| XML | Documents XML | Format structuré |
| ZIP | Fichiers d'archive | Parcourt le contenu |
| EPUB | Livres numériques | Extraction complète du texte |
| YouTube | URLs vidéo | Récupération des transcriptions |
Démarrage rapide
Installation
# Installation avec toutes les fonctionnalités
pip install 'markitdown[all]'
# Ou à partir des sources
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
Utilisation en ligne de commande
# Conversion de base
markitdown document.pdf > output.md
# Spécifier le fichier de sortie
markitdown document.pdf -o output.md
# Rediriger le contenu
cat document.pdf | markitdown > output.md
# Activer les plugins
markitdown --list-plugins # Lister les plugins disponibles
markitdown --use-plugins document.pdf -o output.md
API Python
from markitdown import MarkItDown
# Utilisation de base
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)
# Conversion à partir d'un flux
with open("document.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
print(result.text_content)
Fonctionnalités avancées
1. Descriptions d'images améliorées par IA
Utilisez les LLM via OpenRouter pour générer des descriptions d'images détaillées (pour les fichiers PPTX et images) :
from markitdown import MarkItDown
from openai import OpenAI
# Initialiser le client OpenRouter (API compatible OpenAI)
client = OpenAI(
api_key="votre-clé-api-openrouter",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # recommandé pour la vision scientifique
llm_prompt="Décrivez cette image en détail pour une documentation scientifique"
)
result = md.convert("presentation.pptx")
print(result.text_content)
2. Azure Document Intelligence
Pour une conversion PDF améliorée avec Microsoft Document Intelligence :
# Ligne de commande
markitdown document.pdf -o output.md -d -e "<endpoint_document_intelligence>"
# API Python
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<endpoint_document_intelligence>")
result = md.convert("document_complexe.pdf")
print(result.text_content)
3. Système de plugins
MarkItDown prend en charge les plugins tiers pour étendre les fonctionnalités :
# Lister les plugins installés
markitdown --list-plugins
# Activer les plugins
markitdown --use-plugins file.pdf -o output.md
Trouvez des plugins sur GitHub avec le hashtag : #markitdown-plugin
Dépendances optionnelles
Contrôlez les formats de fichiers que vous prenez en charge :
# Installer des formats spécifiques
pip install 'markitdown[pdf, docx, pptx]'
# Toutes les options disponibles :
# [all] - Toutes les dépendances optionnelles
# [pptx] - Fichiers PowerPoint
# [docx] - Documents Word
# [xlsx] - Classeurs Excel
# [xls] - Anciens fichiers Excel
# [pdf] - Documents PDF
# [outlook] - Messages Outlook
# [az-doc-intel] - Azure Document Intelligence
# [audio-transcription] - Transcription WAV et MP3
# [youtube-transcription] - Transcription vidéo YouTube
Cas d'utilisation courants
1. Convertir des articles scientifiques en Markdown
from markitdown import MarkItDown
md = MarkItDown()
# Convertir un article PDF
result = md.convert("article_recherche.pdf")
with open("article.md", "w") as f:
f.write(result.text_content)
2. Extraire des données d'Excel pour analyse
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("donnees.xlsx")
# Le résultat sera au format tableau Markdown
print(result.text_content)
3. Traiter plusieurs documents
from markitdown import MarkItDown
import os
from pathlib import Path
md = MarkItDown()
# Traiter tous les PDF d'un répertoire
pdf_dir = Path("articles/")
output_dir = Path("sortie_markdown/")
output_dir.mkdir(exist_ok=True)
for pdf_file in pdf_dir.glob("*.pdf"):
result = md.convert(str(pdf_file))
output_file = output_dir / f"{pdf_file.stem}.md"
output_file.write_text(result.text_content)
print(f"Converti : {pdf_file.name}")
4. Convertir PowerPoint avec descriptions IA
from markitdown import MarkItDown
from openai import OpenAI
# Utiliser OpenRouter pour accéder à plusieurs modèles IA
client = OpenAI(
api_key="votre-clé-api-openrouter",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5", # recommandé pour les présentations
llm_prompt="Décrivez cette image de diapositive en détail, en vous concentrant sur les éléments visuels et les données clés"
)
result = md.convert("presentation.pptx")
with open("presentation.md", "w") as f:
f.write(result.text_content)
5. Conversion par lots avec différents formats
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Fichiers à convertir
files = [
"document.pdf",
"tableur.xlsx",
"presentation.pptx",
"notes.docx"
]
for file in files:
try:
result = md.convert(file)
output = Path(file).stem + ".md"
with open(output, "w") as f:
f.write(result.text_content)
print(f"✓ Converti {file}")
except Exception as e:
print(f"✗ Erreur lors de la conversion de {file} : {e}")
6. Extraire la transcription d'une vidéo YouTube
from markitdown import MarkItDown
md = MarkItDown()
# Convertir une vidéo YouTube en transcription
result = md.convert("https://www.youtube.com/watch?v=ID_VIDEO")
print(result.text_content)
Utilisation avec Docker
# Construire l'image
docker build -t markitdown:latest .
# Lancer la conversion
docker run --rm -i markitdown:latest < ~/document.pdf > output.md
Bonnes pratiques
1. Choisir la bonne méthode de conversion
- Documents simples : Utiliser
MarkItDown()de base - PDF complexes : Utiliser Azure Document Intelligence
- Contenu visuel : Activer les descriptions d'images par IA
- Documents scannés : S'assurer que les dépendances OCR sont installées
2. Gérer les erreurs avec élégance
from markitdown import MarkItDown
md = MarkItDown()
try:
result = md.convert("document.pdf")
print(result.text_content)
except FileNotFoundError:
print("Fichier introuvable")
except Exception as e:
print(f"Erreur de conversion : {e}")
3. Traiter efficacement les gros fichiers
from markitdown import MarkItDown
md = MarkItDown()
# Pour les gros fichiers, utiliser le streaming
with open("gros_fichier.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
# Traiter par morceaux ou sauvegarder directement
with open("output.md", "w") as out:
out.write(result.text_content)
4. Optimiser l'efficacité en tokens
La sortie Markdown est déjà efficace en tokens, mais vous pouvez :
- Supprimer les espaces blancs excessifs
- Consolider les sections similaires
- Supprimer les métadonnées si nécessaire
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("document.pdf")
# Nettoyer les espaces blancs supplémentaires
clean_text = re.sub(r'\n{3,}', '\n\n', result.text_content)
clean_text = clean_text.strip()
print(clean_text)
Intégration avec les workflows scientifiques
Convertir la littérature pour révision
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Convertir tous les articles du dossier littérature
articles_dir = Path("litterature/pdfs")
output_dir = Path("litterature/markdown")
output_dir.mkdir(exist_ok=True)
for article in articles_dir.glob("*.pdf"):
result = md.convert(str(article))
# Sauvegarder avec métadonnées
output_file = output_dir / f"{article.stem}.md"
content = f"# {article.stem}\n\n"
content += f"**Source** : {article.name}\n\n"
content += "---\n\n"
content += result.text_content
output_file.write_text(content)
# Pour une conversion améliorée par IA avec figures
from openai import OpenAI
client = OpenAI(
api_key="votre-clé-api-openrouter",
base_url="https://openrouter.ai/api/v1"
)
md_ai = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-sonnet-4.5",
llm_prompt="Décrivez les figures scientifiques avec une précision technique"
)
Extraire des tableaux pour analyse
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("tableaux_donnees.xlsx")
# Les tableaux Markdown peuvent être analysés ou utilisés directement
print(result.text_content)
Dépannage
Problèmes courants
-
Dépendances manquantes : Installer les packages spécifiques aux fonctionnalités
pip install 'markitdown[pdf]' # Pour le support PDF -
Erreurs de fichier binaire : S'assurer que les fichiers sont ouverts en mode binaire
with open("fichier.pdf", "rb") as f: # Notez le "rb" result = md.convert_stream(f, file_extension=".pdf") -
OCR ne fonctionne pas : Installer Tesseract
# macOS brew install tesseract # Ubuntu sudo apt-get install tesseract-ocr
Considérations de performance
- Fichiers PDF : Les gros PDF peuvent prendre du temps ; envisagez des plages de pages si supportées
- OCR d'images : Le traitement OCR est intensif en CPU
- Transcription audio : Nécessite des ressources de calcul supplémentaires
- Descriptions d'images par IA : Nécessite des appels API (des coûts peuvent s'appliquer)
Prochaines étapes
- Consultez
references/api_reference.mdpour la documentation complète de l'API - Vérifiez
references/file_formats.mdpour les détails spécifiques aux formats - Examinez
scripts/batch_convert.pypour des exemples d'automatisation - Explorez
scripts/convert_with_ai.pypour les conversions améliorées par IA
Ressources
- MarkItDown GitHub : https://github.com/microsoft/markitdown
- PyPI : https://pypi.org/project/markitdown/
- OpenRouter : https://openrouter.ai (pour les conversions améliorées par IA)
- Clés API OpenRouter : https://openrouter.ai/keys
- Modèles OpenRouter : https://openrouter.ai/models
- Serveur MCP : markitdown-mcp (pour l'intégration avec Claude Desktop)
- Développement de plugins : Voir
packages/markitdown-sample-plugin