microsoft/markitdown de Microsoft es una herramienta de Python para convertir muchos tipos de archivos a Markdown. Su objetivo no es conservar el diseño con alta fidelidad, sino transformar documentos, hojas de cálculo, páginas web, imágenes, audio y otros materiales en Markdown más fácil de usar en flujos con LLM, RAG, índices de búsqueda y procesamiento de texto.
Repositorio del proyecto:
https://github.com/microsoft/markitdown
Si necesitas enviar a un modelo de IA PDFs, archivos de Word, hojas de Excel, presentaciones de PowerPoint, páginas web, imágenes o archivos comprimidos para analizarlos, MarkItDown encaja bien como paso de preprocesamiento. Su salida es Markdown en texto plano, más fácil de depurar, dividir, buscar y archivar que los archivos binarios originales.
Qué soporta MarkItDown
Según el README oficial, MarkItDown soporta tipos de entrada como:
- PowerPoint
- Word
- Excel
- Imágenes, incluyendo metadatos EXIF y OCR
- Audio, incluyendo metadatos EXIF y transcripción de voz
- HTML
- CSV, JSON, XML
- Archivos ZIP, recorriendo su contenido
- URLs de YouTube
- EPUB
Su enfoque es claro: convertir archivos a Markdown para usarlos después en flujos con LLM y procesamiento de texto. No conviene tratarlo como un conversor que conserva estrictamente el diseño. Para currículos, contratos, documentos escaneados, materiales de producto, grabaciones de reuniones o capturas de páginas web, lo importante normalmente no es reproducir cada píxel, sino extraer una estructura textual que el modelo pueda entender de forma estable.
Comandos de instalación
La forma más sencilla de instalarlo es usar pip:
|
|
Si necesitas todas las funciones opcionales, instala el extra all:
|
|
Si solo necesitas formatos concretos, puedes instalar extras específicos. Por ejemplo, PDF, DOCX y PPTX:
|
|
Para instalar desde el código fuente:
|
|
Uso en línea de comandos
Después de instalarlo, puedes usar directamente el comando markitdown. El uso más básico convierte un archivo a la salida estándar:
|
|
Guardar el resultado como un archivo Markdown:
|
|
Convertir documentos de Office:
|
|
Convertir una página web:
|
|
Convertir una URL de YouTube:
|
|
Procesar un archivo ZIP:
|
|
Estos comandos son útiles para validar primero el resultado a mano. Cuando la estructura de salida sea la esperada, puedes poner MarkItDown en scripts de automatización, flujos de importación a una base de conocimiento o un RAG pipeline.
Uso de la API de Python
MarkItDown también se puede usar como biblioteca de Python. El README oficial muestra el patrón básico: crear una instancia de MarkItDown y llamar a convert:
|
|
Si quieres conectar un cliente de OpenAI para describir imágenes, puedes pasar el cliente a MarkItDown:
|
|
Esta capacidad sirve para materiales basados en imágenes, como capturas de pantalla, imágenes escaneadas o páginas con gráficos. En uso real, conviene vigilar coste, privacidad y llamadas de red, especialmente al procesar documentos internos.
Uso con Docker
Si no quieres modificar tu entorno local de Python, puedes ejecutarlo con Docker. El README oficial ofrece este comando para construir la imagen:
|
|
Luego monta el directorio actual en el contenedor y ejecuta la conversión:
|
|
Este enfoque encaja bien en servidores, CI o procesamiento temporal por lotes. La desventaja es que depurar dependencias puede ser un poco más lento que en un entorno local de Python.
Sistema de plugins
MarkItDown soporta plugins, pero los plugins de terceros no se activan por defecto. Ver plugins:
|
|
Activar plugins:
|
|
Activar plugins en Python:
|
|
Los plugins son útiles para ampliar formatos privados, formatos internos de documentos o archivos exportados por sistemas empresariales concretos. Ten en cuenta que los plugins ejecutan código adicional, así que no conviene activarlos si la fuente no es confiable.
Dónde encaja mejor
Yo usaría MarkItDown en escenarios como estos:
- Convertir PDF, DOCX, PPTX y XLSX a Markdown antes de importarlos a una base de conocimiento.
- Convertir páginas web, YouTube y EPUB en texto que se pueda buscar.
- Preprocesar documentos antes de RAG para obtener Markdown más fácil de dividir en fragmentos.
- Enviar materiales convertidos a Codex, Claude Code, Cursor u otras herramientas similares para que los lean.
- Ordenar documentos históricos por lotes y generar un formato intermedio
.mdunificado.
Un flujo simple puede ser:
|
|
Para procesamiento por lotes, puedes enumerar archivos con un script y llamar a markitdown para cada uno. Después de convertir, conviene revisar manualmente varias salidas, sobre todo tablas, documentos escaneados, PDFs con diseño complejo y archivos con varias columnas.
Límites de uso
MarkItDown es útil, pero hay algunos límites que conviene recordar:
- El orden de lectura de PDFs complejos puede no ser perfecto, especialmente con varias columnas, notas al pie, encabezados y pies de página.
- OCR y descripciones de imágenes dependen de componentes adicionales o LLMs, por lo que calidad y coste deben evaluarse por separado.
- Markdown es bueno para expresar estructura textual, pero no para conservar diseño exacto.
- Al procesar archivos internos con plugins o LLMs, hay que cuidar la seguridad de los datos.
- La salida convertida debería tratarse como un artefacto intermedio, no como un equivalente garantizado del archivo original.
Si el objetivo es que un modelo entienda tus materiales, MarkItDown va en la dirección correcta: primero convierte muchos tipos de archivos a Markdown, y después puedes limpiar, dividir, indexar y consultar. No es un conversor universal, pero como puerta de entrada documental para LLMs es claro, ligero y fácil de integrar en flujos de Python existentes.