Convertir un PDF a Markdown para ahorrar tokens en LLM: la guía de MarkItDown
Pasar un PDF directamente a Claude o a cualquier LLM quema tokens en silencio: cada página también se convierte en imagen. Convierte primero el archivo a Markdown con MarkItDown, la herramienta open source gratuita de Microsoft, y recorta tu factura de tokens hasta un 80%. Guía completa: CLI, Python y servidor MCP.
Sueltas un PDF de 20 páginas en Claude, haces una pregunta y la respuesta llega sin problemas. Lo que no ves es la factura. Antes incluso de que tu pregunta se haya leído, ese documento puede tragarse decenas de miles de tokens. Hazlo unas cuantas veces al día a escala de un equipo y estás pagando dinero real por verter PDF en bruto a un modelo que se habría conformado igual de bien con texto limpio.
Existe una solución gratuita, y ha estado a la vista desde el principio. Convierte primero el archivo a Markdown. Esta guía explica con precisión por qué los PDF salen tan caros, cuánto ahorras y cómo hacer la conversión en un solo comando con MarkItDown, el conversor open source de Microsoft.
Por qué un PDF cuesta tantos tokens
Aquí está la parte que nadie te cuenta. Cuando le pasas un PDF a un LLM, no se lee como tú lo lees. Según la propia documentación PDF de Anthropic, el sistema hace dos cosas con cada página:
- Extrae el texto de la página.
- Convierte la página entera en imagen y luego envía esa imagen junto al texto.
Ese segundo paso es el sumidero silencioso de tokens. El modelo no solo lee palabras, también mira una foto de cada página para poder entender gráficas, tablas y maquetación. Pagas por ambas cosas.
Las cifras de Anthropic ponen el coste en blanco y negro. El texto extraído por sí solo supone 1.500 a 3.000 tokens por página según la densidad. A eso se suma el coste de una imagen por página. Un dato revelador de la integración con Amazon Bedrock: el modo PDF visual completo usa unos 7.000 tokens para un PDF de 3 páginas, mientras que la simple extracción de texto de esas tres páginas usa unos 1.000 tokens. Es una diferencia de 7 veces, y se debe por entero a las imágenes página a página.
Llévalo a un documento real. Un informe denso de 20 páginas puede situarse entre 40.000 y 70.000 tokens una vez que cada página se ha rasterizado en imagen. Todavía no has preguntado nada. Solo has abierto el archivo.
El bloque naranja rojizo es puro sobrecoste: una imagen por cada página, haya o no algo visual que merezca la pena ver.
La solución: dar Markdown limpio en su lugar
La mayoría de los documentos no necesitan verse. Un contrato, una especificación, un artículo de investigación, una presentación llena de viñetas: todo eso es texto vestido con una maquetación. Si le quitas la maquetación y conservas la estructura, el modelo no pierde nada que realmente necesitara.
Eso es justo lo que te da el Markdown. Es prácticamente lo más cerca del texto plano que puede estar un formato, pero aun así codifica la estructura que importa: títulos, listas, tablas, enlaces, bloques de código, negritas y énfasis. Los LLM de uso masivo se entrenan con cantidades enormes de Markdown, así que lo interpretan de forma nativa y sin esfuerzo. Microsoft, que desarrolla MarkItDown, lo dice sin rodeos: el Markdown es "extremadamente cercano al texto plano, con un marcado o formato mínimos, y aun así ofrece una forma de representar la estructura importante de un documento".
Convierte tu PDF a Markdown y eliminas por completo las imágenes página a página. Sin páginas rasterizadas, sin sobrecoste de visión, solo el texto estructurado que el modelo iba a leer de todas formas. De ahí vienen los ahorros.
Te presentamos MarkItDown, el conversor gratuito de Microsoft
MarkItDown es una utilidad ligera en Python de Microsoft, publicada bajo la permisiva licencia MIT y una de las herramientas para desarrolladores con más estrellas de GitHub, con más de 135.000 estrellas. Su única misión: convertir archivos del mundo real, caóticos y pesados, en Markdown limpio que un LLM puede leer a bajo coste.
No es solo una herramienta para PDF. Convierte una larga lista de formatos:
- Documentos PDF
- Word (
.docx) - Excel (
.xlsx,.xls) - PowerPoint (
.pptx) - Imágenes, con metadatos EXIF y OCR del texto que haya dentro de la imagen
- Audio, con metadatos y transcripción del habla
- Páginas HTML
- Datos CSV, JSON y XML
- Archivos ZIP (recorre su contenido)
- URL de YouTube (extrae la transcripción)
- Libros electrónicos EPub
- Mensajes de Outlook (
.msg)
Una sola herramienta, un solo formato de salida, para casi todo lo que de otro modo le habrías lanzado a un modelo en forma de binario pesado.
Instalar MarkItDown en 30 segundos
Es un paquete de Python normal y corriente. Para tenerlo todo, instala el extra all:
pip install 'markitdown[all]'
Si solo te interesan unos pocos formatos y quieres una instalación más ligera, pide únicamente esos extras:
pip install 'markitdown[pdf, docx, pptx]'
Las opciones disponibles incluyen [all], [pdf], [docx], [pptx], [xlsx], [xls], [outlook], [audio-transcription] y [youtube-transcription], entre otras.
Convertir un PDF a Markdown desde la línea de comandos
La vía más rápida es la CLI. Apúntala a un archivo y envía la salida a donde quieras:
markitdown report.pdf -o report.md
O usa una simple redirección, que hace lo mismo:
markitdown report.pdf > report.md
También puedes pasar un archivo directamente por la tubería:
cat report.pdf | markitdown
Ese es todo el flujo de trabajo. Ahora tienes un report.md que puedes darle a cualquier modelo, dejar en un repositorio o pegar en una conversación, y cuesta una fracción del original.
Archivo pesado a la entrada, Markdown listo para el agente a la salida, un solo comando en medio.
Convertir en Python (y procesar una carpeta entera)
Si vas a integrar esto en un pipeline, la API de Python es igual de corta:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)
result.text_content es tu cadena de Markdown, lista para escribir en disco o entregar a un modelo. Para convertir una carpeta entera de documentos en una sola pasada, recórrela en un bucle:
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")
Ejecuta eso una vez y un directorio de PDF caros se convierte en un directorio de Markdown limpio y estructurado, que cualquier agente puede leer en cada turno sin volver a pagar el impuesto de la visión.
¿Cuánto ahorras de verdad?
La respuesta honesta: depende del documento, pero la ganancia es grande y constante. Esta es la forma que tiene para un archivo típico, cargado de texto.
| PDF enviado al modelo | Convertido a Markdown | |
|---|---|---|
| Texto extraído | sí | sí |
| Una imagen por página | sí, cada página | no |
| Sobrecoste de visión | total | ninguno |
| Documento de 3 páginas (cifra de Bedrock) | ~7.000 tokens | ~1.000 tokens |
| Documento de 20 páginas (estimación) | 40.000 a 70.000 tokens | 10.000 a 15.000 tokens |
Para un documento cuyo valor está en sus palabras, convertirlo a Markdown recorta de forma habitual el coste en tokens en bastante más de la mitad, y a menudo un 80% o más. El ahorro no tiene nada de mágico: simplemente dejas de pagar por enviar una foto de cada página cuando el modelo solo necesitaba el texto.
El Markdown no es literalmente gratis, claro. El texto extraído sigue costando tokens. Pero ese coste de texto es el suelo que ibas a pagar de todas formas. Lo que eliminas es la pila de imágenes página a página colocada encima.
Cuándo conservar el PDF (no sobreoptimices)
La conversión es el buen criterio por defecto, no una regla universal. Conserva el PDF original cuando la maquetación visual sea precisamente el tema:
- Gráficas y curvas que el modelo realmente tiene que leer. Si el significado vive en un diagrama de barras, la imagen está haciendo un trabajo de verdad.
- Documentos escaneados que son imágenes de texto. MarkItDown puede pasarles OCR, pero si el reconocimiento es dudoso, la propia visión del modelo a veces leerá la página de forma más fiable.
- Tablas o formularios visuales complejos donde la posición y la alineación cargan un sentido que se aplana en Markdown.
- Infografías y páginas con mucho diseño donde la maquetación es el contenido.
Para todo lo demás, que es la mayoría de los documentos, gana el Markdown.
La pregunta nunca es "PDF o Markdown" en abstracto. Es "¿el modelo necesita ver esta página, o solo leerla?".
Más allá de los PDF: Word, Excel, PowerPoint e incluso YouTube
El mismo comando de una línea funciona con el resto de tu pila de documentos. Un documento de Word, una hoja de cálculo, una presentación, una página web e incluso la transcripción de un vídeo de YouTube se reducen todos a Markdown limpio de la misma manera:
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 tu flujo de trabajo consiste en sacar contexto con regularidad de archivos de Office o de la web para entregárselo a un modelo, estandarizarlo todo a Markdown primero es uno de los hábitos más baratos y de mayor retorno que puedes adoptar.
Conéctalo a tus agentes de código con el servidor MCP de MarkItDown
Si trabajas con agentes de código, esto se pone todavía mejor. MarkItDown incluye un servidor MCP (Model Context Protocol) oficial, así que tu agente puede convertir archivos él mismo, en plena tarea, sin que tú ejecutes nada a mano.
Instálalo y lánzalo sobre stdio:
pip install markitdown-mcp
markitdown-mcp
El servidor expone una sola herramienta, convert_to_markdown(uri), donde el uri puede ser cualquier URI http:, https:, file: o data:. Conéctalo una vez a tu agente y podrá recuperar un PDF, una hoja de cálculo o una página web y convertirlo a Markdown bajo demanda, pagando precios de tokens de texto en lugar de precios de visión todo el tiempo.
Esto es exactamente el tipo de cosa que se acumula cuando estás ejecutando más de un agente. En AgentsRoom, la cabina de mando multiagente, configuras un servidor MCP una vez y cada agente de la sala lo hereda. Convierte tus documentos de referencia a .md, súbelos al repositorio, y cada agente lee texto limpio y estructurado en cada turno en lugar de rerasterizar el mismo PDF una y otra vez. La misma disciplina que mantiene ligera una sola sesión mantiene asequible una flota entera, lo cual importa cuando estás ejecutando agentes de código en paralelo y cada uno de ellos lee tu contexto compartido.
También combina de forma natural con la manera en que los buenos montajes de agentes ya gestionan el contexto. Si mantienes un archivo de contexto AGENTS.md, apuntarlo a referencias .md ligeras en vez de a PDF en bruto mantiene la ventana de contexto ceñida, lo cual, como vimos en el truco del canario para detectar la deriva de contexto, es la mitad de la batalla en cualquier sesión larga.
La conclusión
Dar PDF en bruto a un LLM es un impuesto que has estado pagando sin darte cuenta, porque cada página se convierte calladamente en imagen. MarkItDown elimina ese impuesto gratis: un solo comando convierte casi cualquier archivo en Markdown limpio, te quitas de encima hasta el 80% del coste en tokens, y el modelo responde igual de bien, a menudo mejor, porque está leyendo estructura en lugar de entrecerrar los ojos ante fotos de páginas.
Convierte primero, pregunta después. Tu factura de tokens y tu ventana de contexto te lo agradecerán las dos.
¿Listo para ejecutar esto en todo un equipo de agentes en vez de en una sola terminal? Descarga AgentsRoom, mira qué admite cada agente en la matriz de compatibilidad de proveedores, y lee más sobre el soporte multiproveedor.
Descargar AgentsRoom
Ejecuta tus agentes Claude en todos tus proyectos, desde una sola ventana.
App complementaria: supervisa tus agentes en movimiento
Usa Claude, Codex, Gemini CLI u otro proveedor de IA.
Envía bugs y peticiones directamente a tu backlog público.
Un vistazo a AgentsRoom en acción.