Convertir varios PDF a Markdown de una sola vez

Por Equipo de pdftomd.tools · Actualizado el · 8 min de lectura

Para convertir varios PDF a Markdown a la vez, selecciónalos todos en una página por lotes, como nuestro convertidor de varios PDF, y descarga un ZIP. Para cientos de archivos o una tarea que se repite, es mejor un bucle corto de Python, y para maquetaciones difíciles, el comando de carpeta de marker. Elijas el camino que elijas, revisa después que ningún resultado haya salido vacío.

Ilustración: un abanico de archivos PDF que cae dentro de un archivo ZIP con archivos Markdown

Elegir el método según la cantidad

El camino correcto depende menos de los PDF que de cuántos son y de cada cuánto se repite la tarea. A grandes rasgos:

  • De unos pocos a unas decenas, una sola vez: una página por lotes en el navegador. No hay nada que instalar y los archivos se quedan en tu equipo.
  • Cientos, o cada semana: un bucle de Python sobre una carpeta. Puedes programarlo, registrarlo y conservar la estructura de carpetas.
  • Escaneos, formularios, fórmulas, maquetaciones raras: una herramienta basada en modelos como marker. En un portátil normal es bastante más lenta. Está pensada para leer con OCR páginas sin capa de texto, pero en nuestra ejecución en CPU dejó vacía igualmente nuestra página escaneada; prueba primero con unos pocos archivos.
Ilustración: tres tarjetas con montones de PDF cada vez más altos, atendidos por una ventana de navegador, un terminal y un rack de servidores
Montón pequeño: navegador. Montón que se repite: script. Montón enorme o difícil: una herramienta basada en modelos en una máquina potente.

Para comparar los tres caminos de forma justa usamos un conjunto de 20 archivos con 40 páginas: doce ejemplos de tablas y maquetación, una guía en inglés, un informe en chino de 11 páginas, un informe de 4 páginas con encabezados repetidos, una página escaneada sin capa de texto y dos archivos distintos, ambos llamados notes.pdf, en dos carpetas. Todo se ejecutó en nuestra máquina de compilación (Linux x86_64, 8 vCPU, 16 GB RAM, no GPU).

Convertir varios PDF a Markdown en el navegador

Antes de empezar, abre dos o tres de los PDF e intenta seleccionar una frase. Si el texto se selecciona, el archivo tiene capa de texto y cualquiera de los métodos de abajo funciona. Si no se selecciona nada, es un escaneo o una imagen, y solo una herramienta de OCR sacará palabras. Saber de antemano qué mezcla tienes te ahorra una segunda pasada.

Abre la página por lotes, haz clic en Elegir archivos (o suelta una selección en la zona indicada) y elige todos los PDF de una vez. Cada archivo se convierte en la pestaña, uno tras otro, y la página ofrece un único ZIP con un .md por PDF. Como el trabajo es local, la velocidad depende de tu equipo, no de una subida. Es la forma más rápida de convertir varios PDF a Markdown cuando todos están en el mismo ordenador.

Captura de pantalla: convertir varios PDF a Markdown a la vez en nuestra página por lotes, lista de resultados con número de páginas y tablas y el botón Descargar ZIP
Captura de pantalla de nuestra ejecución con 20 archivos: cada archivo tiene una fila con su número de páginas y tablas.

En nuestras pruebas, el conjunto completo, desde elegir los archivos hasta tener el ZIP listo, tardó unos 0,8 segundos en Chrome 155.0.8059.84 (tres ejecuciones, entre 0,8 y 1,0 segundos). El ZIP contenía 20 archivos Markdown. Los dos notes.pdf salieron como notes.md y notes-2.md, ninguno sobrescribió al otro, y la página escaneada quedó marcada en la lista en lugar de fallar en silencio.

Los límites: un navegador no puede leer por sí solo un árbol de carpetas, así que los archivos de varias carpetas acaban uno junto a otro en un mismo ZIP, y las cantidades muy grandes las limita la memoria de la pestaña. Para unos cientos de archivos, divide la selección en tandas o pasa a un script.

Un bucle de Python con pymupdf4llm

Un script de Python para esta tarea ocupa unas pocas líneas. Este convierte una carpeta de PDF a Markdown: recorre la carpeta, mantiene la misma estructura en la salida (así los dos archivos notes siguen separados) y continúa si un archivo falla:

import pathlib, pymupdf4llm

src, out = pathlib.Path("pdfs"), pathlib.Path("markdown")
for pdf in sorted(src.rglob("*.pdf")):
    dest = out / pdf.relative_to(src).with_suffix(".md")
    dest.parent.mkdir(parents=True, exist_ok=True)
    try:
        dest.write_text(pymupdf4llm.to_markdown(str(pdf)), encoding="utf-8")
    except Exception as e:
        print(f"skipped {pdf}: {e}")
Instálalo con pip install pymupdf4llm. La biblioteca tiene licencia AGPL-3.0; Artifex vende una licencia comercial.

Con los mismos 20 archivos, el bucle terminó en 5,3 segundos en nuestras pruebas, incluido el arranque de Python y la importación de la biblioteca. Escribió 20 archivos. Dos salieron vacíos: la página escaneada, que no tiene texto legible, y una página con una tabla girada 90 grados. Para miles de archivos, el mismo bucle puede ejecutarse en un pool de procesos, uno por núcleo de CPU, porque cada archivo es independiente. Nuestra guía de Python cubre las opciones para tablas y rangos de páginas, y nuestra comparativa de bibliotecas muestra cómo queda pymupdf4llm frente a dos alternativas.

El comando de carpeta de marker

marker tiene un comando para una carpeta entera: marker /path/to/pdfs --output_dir out. Solo lee el primer nivel de la carpeta (el script la lista con os.listdir), así que antes copiamos nuestros archivos a una carpeta plana. Opciones útiles: --workers para procesos en paralelo, --skip_existing para retomar una ejecución interrumpida y --max_files para una prueba.

Con la configuración por defecto en nuestra máquina sin GPU, la carpeta tardó 5 min 51 s en nuestras pruebas, carga de modelos incluida, y produjo 20 resultados. Es unas 66 veces más que el bucle de Python. Rescató la tabla girada, aunque la escribió dos veces, y aun así devolvió un archivo vacío para la página escaneada en nuestra ejecución. En una máquina con una GPU compatible la cosa cambia; en un portátil, usa marker solo para los archivos que lo necesitan.

Nombres de archivo, duplicados y estructura de carpetas

Ilustración: dos carpetas con un archivo del mismo nombre cada una, reunidas en un ZIP que conserva dos archivos Markdown distintos
Dos archivos, un solo nombre: el ZIP tiene que conservar ambos.
  • Duplicados: cuando conviertes muchos PDF a la vez, decide qué pasa con un mismo nombre de archivo en dos carpetas. Nuestra página por lotes añade un número; el bucle de arriba conserva las subcarpetas; un script ingenuo sobrescribe el primer archivo sin avisar.
  • Estructura: si el árbol de carpetas significa algo (una carpeta por cliente o por año), consérvalo, ya sea con relative_to como arriba o usando la página por lotes una vez por carpeta.
  • Nombres: conserva el nombre base del PDF para el .md y siempre podrás encontrar la fuente. Si quieres nombres más legibles, cámbialos luego en tu aplicación de notas.
  • Un ZIP de archivos Markdown es lo más fácil de pasar a otra persona; una carpeta es mejor si la salida va a otro script.

Control de calidad: encontrar salidas escaneadas y vacías

Cuando conviertes varios PDF a Markdown en una sola pasada, es fácil pasar por alto problemas que un archivo suelto mostraría enseguida. Todas las herramientas de nuestra prueba produjeron al menos un archivo vacío o casi vacío, y ninguna puede convertir en texto una página ilegible sin OCR. Así que, después de cada ejecución grande, busca los archivos que hayan quedado demasiado cortos:

# Markdown files under 100 bytes are usually scans or image-only pages
find markdown -name '*.md' -size -100c
Ejecútalo en la carpeta de salida (o en el ZIP descomprimido).
Captura de pantalla: lista de resultados del lote con un aviso en un archivo que solo contiene una imagen, parece escaneado y no tiene capa de texto
Captura de pantalla: el archivo que es solo una imagen aparece marcado en la lista; su Markdown indica que no hay texto extraíble.

Después abre algunas salidas al azar y compáralas con los PDF: los títulos, una tabla, el último párrafo. Si los archivos van a ir a un modelo de chat, nuestro artículo sobre el mejor formato de documento para ChatGPT explica por qué merece la pena esta revisión para tener un Markdown limpio.

Nuestros tiempos con 20 archivos

Los mismos 20 PDF (40 páginas) por tres caminos, según nuestras pruebas (19 oct. 2026, solo CPU)
MétodoTiempoSalidasSalidas vacíasNombres duplicados
Nuestra página por lotes (navegador)0,8 s20scanned-sample.mdNumerados (notes, notes-2)
Bucle de Python, pymupdf4llm 1.28.25,3 s20rotated.md, scanned-sample.mdConservados en subcarpetas
Comando de carpeta de marker 2.0.05 min 51 s20scanned-sample.mdSolo carpeta plana (renombrados por nosotros)
El tiempo del navegador va desde elegir los archivos hasta tener el ZIP listo. Los tiempos de Python y marker incluyen el arranque; en marker, también la carga de modelos. Una sola máquina y un conjunto pequeño: tómalos como órdenes de magnitud.

Para la mayoría, la conclusión es sencilla: para convertir varios PDF a Markdown de una tacada, empieza en el navegador, escribe un script cuando la tarea se repita y guarda la herramienta basada en modelos para las páginas que las demás no pueden leer.

Fuentes

  1. PyMuPDF4LLM (README and licence) — Artifex, GitHub
  2. marker (README, licence and model licence) — Datalab, GitHub
  3. pathlib: Path.rglob — Python documentation
  4. find(1) — GNU findutils manual

Preguntas frecuentes

¿Cómo convierto varios PDF a Markdown a la vez?

Selecciona todos los archivos en una página por lotes como la nuestra y descarga el ZIP, o ejecuta un bucle corto de Python sobre la carpeta. Después revisa que ninguna salida esté vacía.

¿Hay un límite de archivos en la página por lotes?

No hay un número fijo; el límite es la memoria de tu navegador. En nuestras pruebas, 20 archivos con 40 páginas tardaron alrededor de un segundo. Para cientos de archivos grandes, trabaja por tandas o usa un script.

¿Qué pasa con los archivos que tienen el mismo nombre?

Nuestra página por lotes numera el segundo (notes.md, notes-2.md). En un script decides tú: conservar subcarpetas, añadir un sufijo u omitirlo.

¿Puedo convertir PDF escaneados por lotes?

No con una herramienta que lee la capa de texto: los escaneos salen vacíos y nuestra herramienta los marca. Necesitas un paso de OCR. marker está pensado para eso, pero en nuestra ejecución sin GPU devolvió un resultado vacío para nuestra página escaneada; prueba con una muestra antes de un trabajo grande.

¿Puedo convertir PDF a MD por lotes de forma programada?

Sí, con un script. Pon el bucle de Python en un cron o una tarea programada y añade una lógica tipo --skip_existing para convertir solo los archivos nuevos.

¿La página por lotes sube mis archivos?

No. La conversión se hace en la pestaña del navegador y el ZIP se crea en tu equipo.