Convertir un PDF en Markdown pour économiser des tokens : le guide MarkItDown

Envoyer un PDF directement à Claude ou à n'importe quel LLM brûle des tokens en silence : chaque page est aussi transformée en image. Convertissez le fichier en Markdown d'abord avec MarkItDown, l'outil open source gratuit de Microsoft, et réduisez votre facture de tokens jusqu'à 80 %. Guide complet : CLI, Python et serveur MCP.

Vous déposez un PDF de 20 pages dans Claude, vous posez une question, la réponse arrive sans problème. Ce que vous ne voyez pas, c'est la facture. Avant même que votre question ne soit lue, ce document peut engloutir des dizaines de milliers de tokens. Faites-le quelques fois par jour à l'échelle d'une équipe, et vous payez de l'argent bien réel pour déverser des PDF bruts dans un modèle qui se serait tout aussi bien contenté de texte propre.

Il existe une solution gratuite, et elle est à portée de main depuis le début. Convertissez le fichier en Markdown d'abord. Ce guide explique précisément pourquoi les PDF coûtent si cher, combien vous économisez, et comment faire la conversion en une seule commande avec MarkItDown, le convertisseur open source de Microsoft.

Pourquoi un PDF coûte autant de tokens

Voici ce que personne ne vous dit. Quand vous donnez un PDF à un LLM, il n'est pas lu comme vous le lisez. D'après la documentation PDF d'Anthropic, le système fait deux choses pour chaque page :

  1. Il extrait le texte de la page.
  2. Il convertit la page entière en image, puis envoie cette image en plus du texte.

Cette deuxième étape est le gouffre à tokens silencieux. Le modèle ne lit pas seulement des mots, il regarde aussi une photo de chaque page pour pouvoir comprendre graphiques, tableaux et mise en page. Vous payez les deux.

Les chiffres d'Anthropic rendent le coût concret. Le texte extrait seul représente 1 500 à 3 000 tokens par page selon la densité. À cela s'ajoute le coût d'une image par page. Une donnée parlante issue de l'intégration Amazon Bedrock : le mode PDF visuel complet utilise environ 7 000 tokens pour un PDF de 3 pages, là où la simple extraction de texte des trois mêmes pages utilise environ 1 000 tokens. C'est un facteur 7, et il vient entièrement des images page par page.

Ramenez ça à un vrai document. Un rapport dense de 20 pages peut osciller entre 40 000 et 70 000 tokens une fois chaque page transformée en image. Vous n'avez encore rien demandé. Vous avez juste ouvert le fichier.

Graphique en barres comparant le coût en tokens d'un document de 20 pages envoyé en PDF par rapport au même document converti en Markdown. Le PDF empile les tokens de texte extrait plus les tokens d'image par page pour environ 48 000 tokens, alors que la version Markdown n'utilise que des tokens de texte pour environ 11 000 tokens, soit environ 77 % de moins.

Le bloc orange-rouge est du pur surcoût : une image pour chaque page, qu'il y ait ou non quelque chose de visuel à y voir.

La solution : envoyer du Markdown propre à la place

La plupart des documents n'ont pas besoin d'être vus. Un contrat, une spec, un article de recherche, un jeu de slides plein de puces : tout ça, c'est du texte habillé d'une mise en page. Si vous retirez la mise en page et gardez la structure, le modèle ne perd rien dont il avait réellement besoin.

C'est exactement ce que donne le Markdown. C'est à peu près aussi proche du texte brut qu'un format peut l'être, mais il encode quand même la structure qui compte : titres, listes, tableaux, liens, blocs de code, gras et emphase. Les LLM grand public sont entraînés sur d'énormes quantités de Markdown : ils le lisent nativement et sans effort. Microsoft, qui développe MarkItDown, le dit simplement : le Markdown est « extrêmement proche du texte brut, avec un balisage ou une mise en forme minimes, tout en offrant un moyen de représenter la structure importante d'un document ».

Convertissez votre PDF en Markdown et vous supprimez entièrement les images page par page. Plus de pages transformées en image, plus de surcoût de vision, juste le texte structuré que le modèle allait lire de toute façon. C'est de là que viennent les économies.

Voici MarkItDown, le convertisseur gratuit de Microsoft

MarkItDown est un utilitaire Python léger de Microsoft, publié sous la licence permissive MIT et l'un des outils pour développeurs les plus étoilés de GitHub, avec plus de 135 000 étoiles. Son unique mission : transformer des fichiers du monde réel, brouillons et lourds, en Markdown propre qu'un LLM peut lire à bas coût.

Ce n'est pas qu'un outil pour PDF. Il convertit une longue liste de formats :

  • PDF
  • Word (.docx)
  • Excel (.xlsx, .xls)
  • PowerPoint (.pptx)
  • Images, avec métadonnées EXIF et OCR pour le texte présent dans l'image
  • Audio, avec métadonnées et transcription de la parole
  • HTML
  • Données CSV, JSON et XML
  • Archives ZIP (il en parcourt le contenu)
  • URL YouTube (il en récupère la transcription)
  • Livres EPub
  • Messages Outlook (.msg)

Un seul outil, un seul format de sortie, pour presque tout ce que vous auriez sinon balancé à un modèle sous forme de binaire lourd.

Installer MarkItDown en 30 secondes

C'est un paquet Python classique. Pour tout récupérer, installez l'extra all :

pip install 'markitdown[all]'

Si seuls quelques formats vous intéressent et que vous voulez une installation plus légère, ne demandez que ces extras :

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

Les options disponibles incluent [all], [pdf], [docx], [pptx], [xlsx], [xls], [outlook], [audio-transcription] et [youtube-transcription], entre autres.

Convertir un PDF en Markdown en ligne de commande

Le chemin le plus rapide, c'est la CLI. Pointez-la vers un fichier et envoyez la sortie où vous voulez :

markitdown report.pdf -o report.md

Ou utilisez une simple redirection, qui fait la même chose :

markitdown report.pdf > report.md

Vous pouvez aussi envoyer un fichier directement dans le pipe :

cat report.pdf | markitdown

Voilà tout le workflow. Vous disposez maintenant d'un report.md que vous pouvez donner à n'importe quel modèle, déposer dans un dépôt ou coller dans une conversation, pour une fraction du coût d'origine.

Schéma de workflow : des fichiers sources comme PDF, DOCX, XLSX et PPTX entrent dans MarkItDown, qui produit un seul fichier Markdown propre, ensuite donné à un grand modèle de langage ou à un agent de code. Un marqueur de token parcourt le chemin pour montrer le document qui traverse le pipeline.

Fichier lourd en entrée, Markdown prêt pour l'agent en sortie, une seule commande entre les deux.

Convertir en Python (et traiter un dossier entier)

Si vous branchez ça dans un pipeline, l'API Python est tout aussi courte :

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)

result.text_content est votre chaîne Markdown, prête à écrire sur disque ou à envoyer à un modèle. Pour convertir un dossier entier de documents en une passe, faites une boucle dessus :

from pathlib import Path
from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
for src in Path("docs").glob("*.pdf"):
    out = src.with_suffix(".md")
    out.write_text(md.convert(str(src)).text_content, encoding="utf-8")

Lancez ça une fois et un répertoire de PDF coûteux devient un répertoire de Markdown propre et structuré, que n'importe quel agent peut lire à chaque tour sans repayer la taxe de vision.

Combien économisez-vous réellement ?

La réponse honnête : ça dépend du document, mais le gain est important et constant. Voici l'allure générale pour un fichier typique, riche en texte.

PDF envoyé au modèleConverti en Markdown
Texte extraitouioui
Une image par pageoui, chaque pagenon
Surcoût de visiontotalaucun
Document de 3 pages (chiffre Bedrock)~7 000 tokens~1 000 tokens
Document de 20 pages (estimation)40 000 à 70 000 tokens10 000 à 15 000 tokens

Pour un document dont la valeur tient dans ses mots, la conversion en Markdown réduit le coût en tokens de bien plus de la moitié, et souvent de 80 % ou plus. Les économies n'ont rien de magique : vous ne payez simplement plus pour envoyer une photo de chaque page quand le modèle n'avait besoin que du texte.

Le Markdown n'est pas littéralement gratuit, bien sûr. Le texte extrait coûte toujours des tokens. Mais ce coût de texte, c'est le plancher que vous alliez payer de toute façon. Ce que vous retirez, c'est la pile d'images page par page posée par-dessus.

Quand garder le PDF (ne pas sur-optimiser)

La conversion est le bon réflexe par défaut, pas une règle universelle. Gardez le PDF d'origine quand la mise en page visuelle est justement le sujet :

  • Graphiques et courbes que le modèle doit réellement lire. Si le sens vit dans un diagramme en barres, l'image fait un vrai travail.
  • Documents scannés qui sont des images de texte. MarkItDown peut les passer à l'OCR, mais si la reconnaissance est hasardeuse, la vision propre du modèle lira parfois la page de façon plus fiable.
  • Tableaux ou formulaires visuels complexes où la position et l'alignement portent un sens qui s'aplatit en Markdown.
  • Infographies et pages très travaillées sur le plan du design où la mise en page est le contenu.

Pour tout le reste, c'est-à-dire la plupart des documents, le Markdown gagne.

Schéma de décision : demandez-vous si vous avez vraiment besoin de la mise en page visuelle du document, comme des graphiques, des pages scannées ou des tableaux visuels complexes. Si non, convertissez-le en Markdown pour économiser des tokens, le chemin recommandé. Si oui, gardez le PDF pour que la vision du modèle lise directement les images des pages.

La question n'est jamais « PDF ou Markdown » dans l'absolu. C'est « le modèle a-t-il besoin de voir cette page, ou juste de la lire ? »

Au-delà des PDF : Word, Excel, PowerPoint, et même YouTube

La même commande d'une ligne fonctionne sur le reste de votre pile de documents. Un document Word, un tableur, un jeu de slides, une page web, et même la transcription d'une vidéo YouTube se réduisent tous en Markdown propre de la même façon :

markitdown deck.pptx -o deck.md
markitdown budget.xlsx -o budget.md
markitdown https://www.youtube.com/watch?v=VIDEO_ID -o transcript.md

Si votre workflow consiste à extraire régulièrement du contexte de fichiers Office ou du web pour le donner à un modèle, tout standardiser en Markdown d'abord est l'une des habitudes les moins chères et les plus rentables que vous puissiez prendre.

Le brancher à vos agents de code avec le serveur MCP MarkItDown

Si vous travaillez avec des agents de code, ça devient encore meilleur. MarkItDown fournit un serveur MCP (Model Context Protocol) officiel : votre agent peut convertir des fichiers lui-même, en pleine tâche, sans que vous lanciez quoi que ce soit à la main.

Installez-le et lancez-le sur stdio :

pip install markitdown-mcp
markitdown-mcp

Le serveur expose un seul outil, convert_to_markdown(uri), où l'uri peut être n'importe quelle URI http:, https:, file: ou data:. Branchez-le une fois à votre agent, et il peut récupérer un PDF, un tableur ou une page web et le transformer en Markdown à la demande, en payant des prix de tokens texte plutôt que des prix de vision, tout du long.

C'est exactement le genre de chose qui se cumule quand vous faites tourner plus d'un agent. Dans AgentsRoom, le cockpit multi-agents, vous configurez un serveur MCP une fois et chaque agent de la pièce en hérite. Convertissez vos documents de référence en .md, committez-les dans le dépôt, et chaque agent lit du texte propre et structuré à chaque tour au lieu de re-transformer le même PDF en image encore et encore. La même discipline qui garde une session unique légère garde une flotte entière abordable, ce qui compte quand vous faites tourner des agents de code en parallèle et que chacun lit votre contexte partagé.

Ça se marie aussi naturellement avec la façon dont les bons setups d'agents gèrent déjà le contexte. Si vous tenez un fichier de contexte AGENTS.md, le faire pointer vers des références .md légères plutôt que vers des PDF bruts garde la fenêtre de contexte serrée, ce qui, comme nous l'avons vu dans l'astuce du canari pour repérer la dérive de contexte, représente la moitié de la bataille dans n'importe quelle longue session.

À retenir

Donner des PDF bruts à un LLM est une taxe que vous payez sans le remarquer, parce que chaque page est discrètement transformée en image. MarkItDown supprime cette taxe gratuitement : une commande transforme presque n'importe quel fichier en Markdown propre, vous larguez jusqu'à 80 % du coût en tokens, et le modèle répond tout aussi bien, souvent mieux, parce qu'il lit de la structure au lieu de plisser les yeux sur des photos de pages.

Convertissez d'abord, demandez ensuite. Votre facture de tokens et votre fenêtre de contexte vous diront merci toutes les deux.

Prêt à faire tourner ça sur toute une équipe d'agents plutôt qu'un seul terminal ? Téléchargez AgentsRoom, voyez ce que chaque agent prend en charge dans la matrice de compatibilité des fournisseurs, et lisez-en plus sur le support multi-fournisseur.

Télécharger AgentsRoom

Lancez vos agents Claude sur tous vos projets, depuis une seule fenêtre.

GratuitTélécharger AgentsRoom

App companion : suivez vos agents en déplacement

Utilisez Claude, Codex, Gemini CLI ou un autre fournisseur IA.

Installer l'extension
Chrome Web Store

Remontez bugs et demandes directement dans votre backlog public.

Aperçu d'AgentsRoom en action.

Multi-projets
Multi-provider
Multi-agents
Statut en direct
Diff & commit
App mobile
Aperçu live
Équipes d'agents
Tests navigateur
Dev pilotée par backlog
Bibliothèque de prompts
Bibliothèque de skills
Voir toutes les fonctionnalités