PyMuPDF4LLM vs pdfplumber vs Marker, probados con PDF reales

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

La respuesta corta de nuestras pruebas: pymupdf4llm es la mejor opción por defecto, rápida y con los títulos más limpios, si la licencia AGPL te sirve. pdfplumber, con licencia MIT, es el más preciso en tablas con bordes, pero no genera ningún título. marker es el que mejor maneja las tablas sin bordes y limpia lo que sobra en las páginas, pero en CPU es varias veces más lento y estropeó nuestro texto chino. Para un solo archivo, nuestra guía de PDF a Markdown con Python también ofrece una vía sin instalar nada.

Ilustración: tres probetas etiquetadas con Markdown vertido desde un PDF

PyMuPDF4LLM vs pdfplumber vs Marker: el veredicto

Qué biblioteca elegir, según nuestras pruebas
Si necesitas…EligePor qué
Buen Markdown, rápido y con títulospymupdf4llmTodos los títulos esperados en el nivel correcto en los tres documentos
Celdas exactas en tablas con bordes y licencia permisivapdfplumberExacto en cuadrículas con bordes y celdas combinadas; licencia MIT
Tablas sin bordes y sin encabezados repetidosmarkerEncontró los dos ejemplos sencillos sin bordes; quitó encabezados y números de página
Texto en chino o japonéspymupdf4llmConservó todos los caracteres y la puntuación; marker perdió caracteres

Ninguna biblioteca ganó todas las pruebas. El resto del artículo muestra las cifras detrás de cada fila, para que puedas decidir entre pymupdf4llm vs pdfplumber vs marker con los PDF que de verdad tienes.

Cómo probamos: equipo, versiones y documentos

Para que la comparación fuera justa, cada biblioteca recibió los mismos archivos en la misma máquina. Todas las ejecuciones fueron análisis de PDF puro en CPU: Intel(R) Xeon(R) Processor, 8 vCPU, 16 GB de RAM, sin GPU, Linux 6.12.94+ x86_64, Python 3.13.5. Versiones: pymupdf4llm 1.28.2 (PyMuPDF 1.28.2), pdfplumber 0.11.9 (pdfminer.six 20251230), marker-pdf 2.0.0 (surya-ocr 0.22.1, torch 2.14.1+cpu). Contamos los tokens con tiktoken 0.14.0 y la codificación o200k_base. La prueba se hizo el 19 de octubre de 2026.

Ilustración: una máquina con CPU ejecuta tres bibliotecas de Python sobre los mismos tres PDF y una serie de ejemplos de tablas
Mismos archivos, misma máquina y misma puntuación para las tres bibliotecas.
  • Documentos: una guía en inglés de 5 páginas con 13 títulos y una tabla; un informe en chino de 11 páginas con 29 títulos y 4 tablas; un informe en inglés de 4 páginas con un encabezado y un número de página repetidos en cada página.
  • Ejemplos de tablas: 11 PDF de una página cuyas tablas correctas conocemos celda por celda, dos de ellos sin ninguna tabla.
  • Configuración: los valores por defecto de cada biblioteca. pdfplumber no tiene salida en Markdown, así que escribimos unas veinte líneas que colocan sus líneas de texto y los resultados de find_tables() en orden de lectura. marker se ejecutó una vez con su configuración por defecto (modo rápido, el predeterminado en CPU) y otra con --disable_ocr.
  • Cronometraje: la mediana de tres ejecuciones. Los modelos de marker se cargaron una vez antes (4,79 segundos) y se descartó una ejecución de calentamiento.
import pymupdf4llm
md = pymupdf4llm.to_markdown("report.pdf")

import pdfplumber
with pdfplumber.open("report.pdf") as pdf:
    for page in pdf.pages:
        lines = page.extract_text_lines()
        tables = page.find_tables()

from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_rendered
converter = PdfConverter(artifact_dict=create_model_dict())
md, _, _ = text_from_rendered(converter("report.pdf"))
La llamada principal de cada biblioteca. Nuestro script completo, con la puntuación, tiene unas 220 líneas.

En CPU, marker 2.0 también necesita un binario llama-server de llama.cpp, que se instala aparte según su README, y en el primer arranque descargó unos 1,8 GB de archivos de modelo en nuestra máquina. Nuestros dos primeros intentos fallaron: una vez por versiones incompatibles de torch y torchvision, otra porque faltaba llama-server. Fueron problemas de instalación, no fallos de la biblioteca, pero conviene reservar tiempo para ello.

Velocidad y número de tokens

Mediana en segundos por documento y tokens de tiktoken en la salida, según nuestras pruebas
BibliotecaGuía en inglés (5 p.)Informe en chino (11 p.)Informe en inglés con encabezados repetidos (4 p.)Tokens, informe en chino
pymupdf4llm0,693 s1,419 s0,387 s8908
pdfplumber0,713 s3,579 s0,023 s8782
marker (por defecto)3,354 s4,563 s2,325 s10001
marker (--disable_ocr)1,425 s3,146 s0,447 s10001

En velocidad es donde pymupdf4llm vs pdfplumber vs marker más se diferencian. pdfplumber fue el más rápido con el informe corto (0,023 s), pero el más lento de las herramientas ligeras con el informe en chino. pymupdf4llm se mantuvo estable, entre 0,1 y 0,14 segundos por página. marker fue 5 veces más lento que pymupdf4llm con la guía en inglés, aun con los modelos ya cargados; con --disable_ocr la diferencia se redujo.

Los tokens de las dos bibliotecas ligeras fueron parecidos. marker generó alrededor de un 12 % más de tokens con el informe en chino, en parte por etiquetas <sup> y espacios de más, y menos con el informe corto, porque eliminó los encabezados repetidos.

Títulos y elementos sobrantes de la página

Títulos esperados encontrados y cuántos en el nivel correcto, según nuestras pruebas
BibliotecaGuía en inglés (13)Informe en chino (29)Informe en inglés con encabezados repetidos (4)
pymupdf4llm13 (13 en el nivel correcto)29 (29 en el nivel correcto)4 (4 en el nivel correcto)
pdfplumber0 (0 en el nivel correcto)0 (0 en el nivel correcto)0 (0 en el nivel correcto)
marker (por defecto)11 (4 en el nivel correcto)23 (14 en el nivel correcto)4 (3 en el nivel correcto)
marker (--disable_ocr)11 (4 en el nivel correcto)23 (14 en el nivel correcto)4 (3 en el nivel correcto)

Los títulos son la segunda gran diferencia. pymupdf4llm encontró todos los títulos en el nivel correcto. También marcó como títulos las preguntas frecuentes en negrita de la guía (6 líneas), lo que puede ser útil. pdfplumber no sabe de títulos: obtienes texto plano. marker encontró la mayoría, pero a menudo en un nivel equivocado.

En el informe de 4 páginas, pymupdf4llm y pdfplumber conservaron las 4 copias del encabezado repetido y los 4 números de página; marker quitó ambos. Es el caso más claro de pymupdf4llm vs marker: el modelo de maquetación de marker sabe qué es un encabezado y las bibliotecas ligeras no. pdfplumber también dejó una palabra cortada al final de una línea.

Captura de pantalla: salida Markdown sin editar de pymupdf4llm, pdfplumber y marker para el mismo informe de 4 páginas, en tres columnas
Captura de pantalla: el Markdown sin editar que escribió cada biblioteca para nuestro informe de 4 páginas.

Tablas: con bordes, sin bordes y combinadas

Resultado en cada ejemplo de tabla, según nuestras pruebas
Ejemplopymupdf4llmpdfplumbermarker
Cuadrícula con bordesexactaexactaexacta
Exportación de ofimática81 % de las celdasexacta94 % de las celdas
Sin bordes40 % de las celdasno encontrada90 % de las celdas
Celdas de varias líneasexactaexacta83 % de las celdas
Sin bordes, varias líneasno encontradano encontrada83 % de las celdas
Ofimática, sin bordesno encontradano encontradano encontrada
Tabla dentro del textoexactano encontradaexacta
Dos tablasexacta33 % de las celdasexacta
Celdas combinadas83 % de las celdasexacta42 % de las celdas
Tablas exactas: pymupdf4llm 4, pdfplumber 4, marker 3 de 9. En los dos ejemplos sin tabla, ninguna biblioteca se inventó una. marker con --disable_ocr obtuvo el mismo resultado que marker por defecto en cada ejemplo.

En tablas, el orden depende de si el PDF tiene líneas dibujadas. Las tablas de pdfplumber son exactas cuando el PDF dibuja la cuadrícula, incluso con celdas combinadas, porque find_tables() sigue los trazos. Sin trazos, no encontró nada. pymupdf4llm fue exacto en la mayoría de las tablas con bordes, pero rompió una tabla de ofimática en la que una celda contenía un | sin escapar. marker encontró los dos ejemplos sencillos sin bordes con un 83–90 % de las celdas, mientras que pymupdf4llm encontró uno con un 40 % y pdfplumber ninguno; eso sí, en el ejemplo de celdas combinadas marker fusionó columnas.

Ninguna biblioteca detectó la tabla sin bordes de una exportación de ofimática. Si las tablas son tu prioridad, nuestra guía de tablas en PDF explica por qué las tablas sin bordes son difíciles para cualquier herramienta.

Texto chino: cobertura, espacios y puntuación

Informe en chino de 11 páginas, según nuestras pruebas
BibliotecaCaracteres chinos conservadosEspacios dentro de frasesSaltos de línea dentro de frasesComas de ancho completo conservadas
pymupdf4llm100 %1590100 %
pdfplumber100 %0140100 %
marker (por defecto)98,6 %16600 %

El texto chino vuelve a cambiar el orden. El PDF original no tiene espacios dentro de las frases. pymupdf4llm conservó todos los caracteres y todas las comas de ancho completo, pero insertó 159 espacios dentro de frases. pdfplumber también conservó los caracteres, pero dejó 140 saltos de línea a mitad de frase. marker perdió el 1,4 % de los caracteres, incluidos algunos títulos de sección, cambió cada coma de ancho completo por una coma ASCII y añadió 152 etiquetas <sup>. Con PDF en chino, la salida de marker fue la que más retoques necesitó en nuestras pruebas.

Licencias: AGPL vs MIT vs Apache, más las condiciones de los modelos

Ilustración: tres tarjetas de licencia, una por biblioteca, con una tarjeta aparte para los pesos de los modelos de marker
En marker, la licencia del código no lo cuenta todo: los pesos de los modelos tienen sus propias condiciones.
  • pdfplumber: MIT, según su archivo LICENSE. Puedes usarlo en código propietario y comercial siempre que conserves el aviso de licencia.
  • pymupdf4llm y PyMuPDF: los repositorios incluyen la GNU AGPL 3.0 y los metadatos del paquete dicen «Dual Licensed - GNU AFFERO GPL 3.0 or Artifex Commercial License». En resumen: si distribuyes un programa que se apoya en ellos, o pones una versión modificada a disposición de usuarios a través de una red, la AGPL espera que compartas el código fuente de ese programa con la misma licencia, salvo que compres una licencia comercial a Artifex.
  • marker: el código es Apache-2.0, pero los pesos de los modelos usan una licencia AI Pubs Open RAIL-M modificada. Según MODEL_LICENSE, los pesos son gratuitos para investigación, uso personal y organizaciones con menos de 5 M$ de ingresos brutos o financiación; por encima, hace falta una licencia de Datalab.

Si la licencia decide por ti, AGPL vs MIT es la verdadera elección entre las dos bibliotecas ligeras para la mayoría de los equipos comerciales, y marker añade un umbral de ingresos. Esto es un resumen, no asesoramiento legal; lee los archivos de licencia antes de publicar nada.

Preguntas frecuentes

¿Cuál es mejor: pymupdf4llm vs pdfplumber vs marker?

En nuestras pruebas, pymupdf4llm para documentos normales y texto chino, pdfplumber para tablas con bordes exactas con licencia MIT, y marker para tablas sin bordes y páginas con encabezados repetidos.

¿pymupdf4llm es gratis para uso comercial?

Con la AGPL, sí, si también publicas tu código fuente cuando distribuyes el programa o lo ofreces como servicio. Si no, Artifex vende una licencia comercial.

¿marker necesita GPU?

No. Funcionó en nuestra máquina de 8 vCPU sin GPU, pero necesitó llama-server de llama.cpp y fue varias veces más lento que las bibliotecas ligeras.

¿pdfplumber puede generar Markdown?

No directamente. Devuelve texto, palabras, líneas y tablas; el Markdown lo escribes tú, como hicimos en esta prueba.

¿Qué biblioteca maneja PDF escaneados?

marker está construido alrededor de modelos de OCR. Con su configuración por defecto, pymupdf4llm y pdfplumber leen la capa de texto, así que un escaneo queda vacío.

¿Puedo repetir esta prueba?

Sí. El script, las versiones y el equipo están indicados arriba; los tiempos cambiarán en otra máquina, los resultados de calidad no deberían.