markitdown

Par mkurman · zorai

npx skills add https://github.com/mkurman/zorai --skill markitdown

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

  1. Dépendances manquantes : Installer les paquets spécifiques aux fonctionnalités

    pip install 'markitdown[pdf]'  # Pour le support PDF
  2. 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")
  3. 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.md pour la documentation API complète
  • Consulter references/file_formats.md pour les détails spécifiques aux formats
  • Examiner scripts/batch_convert.py pour des exemples d'automatisation
  • Explorer scripts/convert_with_ai.py pour les conversions améliorées par IA

Ressources

Skills similaires