name: markitdown description: Convertir des fichiers et documents Office en Markdown. Supporte PDF, DOCX, PPTX, XLSX, images (avec OCR), audio (avec transcription), HTML, CSV, JSON, XML, ZIP, URLs YouTube, EPub et bien d'autres. allowed-tools: Read Write Edit Bash license: MIT license tags: [scientific-skills, markitdown] metadata: skill-author: K-Dense Inc. --------|-------------|-------| | PDF | Portable Document Format | Extraction complète du texte | | DOCX | Microsoft Word | Tableaux, formatage préservé | | PPTX | PowerPoint | Diapositives avec notes | | XLSX | Feuilles de calcul 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 | Itère le contenu | | EPUB | Livres électroniques | Extraction complète du texte | | YouTube | URLs vidéo | Récupère les transcriptions |
Démarrage rapide
Installation
# Installer avec toutes les fonctionnalités
pip install 'markitdown[all]'
# Ou depuis la source
git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
Utilisation en ligne de commande
# Conversion basique
markitdown document.pdf > output.md
# Spécifier le fichier de sortie
markitdown document.pdf -o output.md
# Piper 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 basique
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)
# Convertir à 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
Utiliser des 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="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-opus-4.5", # recommandé pour la vision scientifique
llm_prompt="Describe this image in detail for scientific documentation"
)
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 "<document_intelligence_endpoint>"
# API Python
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<document_intelligence_endpoint>")
result = md.convert("complex_document.pdf")
print(result.text_content)
3. Système de plugins
MarkItDown supporte 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 les plugins sur GitHub avec le hashtag : #markitdown-plugin
Dépendances optionnelles
Contrôlez les formats de fichiers que vous supportez :
# 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] - Feuilles de calcul Excel
# [xls] - Fichiers Excel plus anciens
# [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'usage courants
1. Convertir des articles scientifiques en Markdown
from markitdown import MarkItDown
md = MarkItDown()
# Convertir un article PDF
result = md.convert("research_paper.pdf")
with open("paper.md", "w") as f:
f.write(result.text_content)
2. Extraire des données d'Excel pour l'analyse
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("data.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 dans un répertoire
pdf_dir = Path("papers/")
output_dir = Path("markdown_output/")
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"Converted: {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="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-opus-4.5", # recommandé pour les présentations
llm_prompt="Describe this slide image in detail, focusing on key visual elements and data"
)
result = md.convert("presentation.pptx")
with open("presentation.md", "w") as f:
f.write(result.text_content)
5. Convertir par lot avec différents formats
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Fichiers à convertir
files = [
"document.pdf",
"spreadsheet.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"✓ Converted {file}")
except Exception as e:
print(f"✗ Error converting {file}: {e}")
6. Extraire la transcription d'une vidéo YouTube
from markitdown import MarkItDown
md = MarkItDown()
# Convertir une vidéo YouTube en transcript
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(result.text_content)
Utilisation Docker
# Construire l'image
docker build -t markitdown:latest .
# Exécuter 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 le
MarkItDown()basique - PDF complexes : Utiliser Azure Document Intelligence
- Contenu visuel : Activer les descriptions d'images IA
- Documents numérisés : S'assurer que les dépendances OCR sont installées
2. Gérer les erreurs avec grâce
from markitdown import MarkItDown
md = MarkItDown()
try:
result = md.convert("document.pdf")
print(result.text_content)
except FileNotFoundError:
print("File not found")
except Exception as e:
print(f"Conversion error: {e}")
3. Traiter les gros fichiers efficacement
from markitdown import MarkItDown
md = MarkItDown()
# Pour les gros fichiers, utiliser le streaming
with open("large_file.pdf", "rb") as f:
result = md.convert_stream(f, file_extension=".pdf")
# Traiter par chunks ou sauvegarder directement
with open("output.md", "w") as out:
out.write(result.text_content)
4. Optimiser pour l'efficacité des tokens
La sortie Markdown est déjà efficace en tokens, mais vous pouvez :
- Supprimer les espaces excessifs
- Consolider les sections similaires
- Supprimer les métadonnées si non nécessaires
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("document.pdf")
# Nettoyer les espaces 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 examen
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
# Convertir tous les articles dans le dossier littérature
papers_dir = Path("literature/pdfs")
output_dir = Path("literature/markdown")
output_dir.mkdir(exist_ok=True)
for paper in papers_dir.glob("*.pdf"):
result = md.convert(str(paper))
# Sauvegarder avec métadonnées
output_file = output_dir / f"{paper.stem}.md"
content = f"# {paper.stem}\n\n"
content += f"**Source**: {paper.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="your-openrouter-api-key",
base_url="https://openrouter.ai/api/v1"
)
md_ai = MarkItDown(
llm_client=client,
llm_model="anthropic/claude-opus-4.5",
llm_prompt="Describe scientific figures with technical precision"
)
Extraire les tableaux pour l'analyse
from markitdown import MarkItDown
import re
md = MarkItDown()
result = md.convert("data_tables.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 paquets 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("file.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 ; considérer les plages de pages si supportées
- OCR d'images : Le traitement OCR consomme beaucoup de ressources CPU
- Transcription audio : Nécessite des ressources de calcul supplémentaires
- Descriptions d'images IA : Nécessite des appels API (des frais peuvent s'appliquer)
Étapes suivantes
- Voir
references/api_reference.mdpour la documentation API complète - Consulter
references/file_formats.mdpour les détails spécifiques aux formats - Examiner
scripts/batch_convert.pypour des exemples d'automatisation - Explorer
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 Claude Desktop)
- Développement de plugins : Voir
packages/markitdown-sample-plugin