PyMuPDF4LLM vs pdfplumber vs Marker, testados em PDFs reais

Por Equipe pdftomd.tools · Atualizado em · 8 min de leitura

A resposta curta dos nossos testes: pymupdf4llm é a melhor escolha padrão, rápida e com os títulos mais limpos, se a licença AGPL servir para você. pdfplumber, sob MIT, é o mais preciso em tabelas com bordas, mas não gera nenhum título. marker lida melhor com tabelas sem bordas e tira o que sobra das páginas, mas em CPU é várias vezes mais lento e estragou nosso texto em chinês. Para um arquivo só, nosso guia de PDF para Markdown com Python também mostra um caminho sem instalar nada.

Ilustração: três tubos de ensaio etiquetados com Markdown despejado de um PDF

PyMuPDF4LLM vs pdfplumber vs Marker: o veredito

Qual biblioteca escolher, segundo nossos testes
Se você precisa de…EscolhaPor quê
Bom Markdown, rápido e com títulospymupdf4llmTodos os títulos esperados no nível certo nos três documentos
Células exatas em tabelas com bordas, licença permissivapdfplumberExato em grades com bordas e células mescladas; licença MIT
Tabelas sem bordas, sem cabeçalhos repetidosmarkerAchou os dois exemplos simples sem bordas; removeu cabeçalhos e números de página
Texto em chinês ou japonêspymupdf4llmManteve todos os caracteres e a pontuação; marker perdeu caracteres

Nenhuma biblioteca venceu todos os testes. O resto do artigo mostra os números por trás de cada linha, para você decidir entre pymupdf4llm vs pdfplumber vs marker com os PDFs que você realmente tem.

Como testamos: hardware, versões e documentos

Para uma comparação justa, cada biblioteca recebeu os mesmos arquivos na mesma máquina. Todas as execuções foram pura análise de PDF em CPU: Intel(R) Xeon(R) Processor, 8 vCPU, 16 GB de RAM, sem GPU, Linux 6.12.94+ x86_64, Python 3.13.5. Versões: 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 os tokens com tiktoken 0.14.0 e a codificação o200k_base. O teste foi feito em 19 de outubro de 2026.

Ilustração: uma máquina com CPU roda três bibliotecas Python nos mesmos três PDFs e numa série de exemplos de tabelas
Mesmos arquivos, mesma máquina e mesma pontuação para as três bibliotecas.
  • Documentos: um guia em inglês de 5 páginas com 13 títulos e uma tabela; um relatório em chinês de 11 páginas com 29 títulos e 4 tabelas; um relatório em inglês de 4 páginas com cabeçalho e número de página repetidos em todas as páginas.
  • Exemplos de tabelas: 11 PDFs de uma página cujas tabelas corretas conhecemos célula por célula, dois deles sem nenhuma tabela.
  • Configuração: os padrões de cada biblioteca. pdfplumber não tem saída em Markdown, então escrevemos umas vinte linhas que colocam as linhas de texto e os resultados de find_tables() na ordem de leitura. marker rodou uma vez com a configuração padrão (modo rápido, o padrão em CPU) e outra com --disable_ocr.
  • Tempo: a mediana de três execuções. Os modelos do marker foram carregados uma vez antes (4,79 segundos) e uma execução de aquecimento foi descartada.
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"))
A chamada principal de cada biblioteca. Nosso script completo, com a pontuação, tem cerca de 220 linhas.

Em CPU, o marker 2.0 também precisa de um binário llama-server do llama.cpp, instalado à parte conforme o README, e na primeira execução baixou cerca de 1,8 GB de arquivos de modelo na nossa máquina. As duas primeiras tentativas falharam: uma por versões incompatíveis de torch e torchvision, outra porque faltava o llama-server. Foram problemas de instalação, não bugs da biblioteca, mas reserve um tempo para isso.

Velocidade e número de tokens

Mediana em segundos por documento e tokens tiktoken da saída, segundo nossos testes
BibliotecaGuia em inglês (5 p.)Relatório em chinês (11 p.)Relatório em inglês com cabeçalhos repetidos (4 p.)Tokens, relatório em chinês
pymupdf4llm0,693 s1,419 s0,387 s8908
pdfplumber0,713 s3,579 s0,023 s8782
marker (padrão)3,354 s4,563 s2,325 s10001
marker (--disable_ocr)1,425 s3,146 s0,447 s10001

É na velocidade que pymupdf4llm vs pdfplumber vs marker mais se diferenciam. pdfplumber foi o mais rápido no relatório curto (0,023 s), mas o mais lento das ferramentas leves no relatório em chinês. pymupdf4llm se manteve estável, entre 0,1 e 0,14 segundo por página. marker foi 5 vezes mais lento que pymupdf4llm no guia em inglês, mesmo com os modelos já carregados; com --disable_ocr, a diferença diminuiu.

Os tokens das duas bibliotecas leves ficaram próximos. marker gerou cerca de 12% mais tokens no relatório em chinês, em parte por tags <sup> e espaços a mais, e menos no relatório curto, porque removeu os cabeçalhos repetidos.

Títulos e sobras da página

Títulos esperados encontrados, e quantos no nível certo, segundo nossos testes
BibliotecaGuia em inglês (13)Relatório em chinês (29)Relatório em inglês com cabeçalhos repetidos (4)
pymupdf4llm13 (13 no nível certo)29 (29 no nível certo)4 (4 no nível certo)
pdfplumber0 (0 no nível certo)0 (0 no nível certo)0 (0 no nível certo)
marker (padrão)11 (4 no nível certo)23 (14 no nível certo)4 (3 no nível certo)
marker (--disable_ocr)11 (4 no nível certo)23 (14 no nível certo)4 (3 no nível certo)

Os títulos são a segunda grande diferença. pymupdf4llm encontrou todos os títulos no nível certo. Também marcou como títulos as perguntas de FAQ em negrito do guia (6 linhas), o que pode ser útil. pdfplumber não conhece títulos: você recebe texto corrido. marker achou a maioria dos títulos, mas muitas vezes no nível errado.

No relatório de 4 páginas, pymupdf4llm e pdfplumber mantiveram as 4 cópias do cabeçalho repetido e os 4 números de página; marker removeu os dois. É o caso mais claro de pymupdf4llm vs marker: o modelo de layout do marker sabe o que é um cabeçalho, as bibliotecas leves não. pdfplumber também deixou uma palavra hifenizada no fim de uma linha.

Captura de tela: saída Markdown bruta de pymupdf4llm, pdfplumber e marker para o mesmo relatório de 4 páginas, em três colunas
Captura de tela: o Markdown bruto que cada biblioteca escreveu para o nosso relatório de 4 páginas, sem edição.

Tabelas: com bordas, sem bordas e mescladas

Resultado em cada exemplo de tabela, segundo nossos testes
Exemplopymupdf4llmpdfplumbermarker
Grade com bordasexataexataexata
Exportação do Office81% das célulasexata94% das células
Sem bordas40% das célulasnão encontrada90% das células
Células com várias linhasexataexata83% das células
Sem bordas, várias linhasnão encontradanão encontrada83% das células
Office, sem bordasnão encontradanão encontradanão encontrada
Tabela no meio do textoexatanão encontradaexata
Duas tabelasexata33% das célulasexata
Células mescladas83% das célulasexata42% das células
Tabelas exatas: pymupdf4llm 4, pdfplumber 4, marker 3 de 9. Nos dois exemplos sem tabela, nenhuma biblioteca inventou uma. marker com --disable_ocr teve o mesmo resultado do marker padrão em todos os exemplos.

Nas tabelas, a classificação depende de o PDF ter linhas desenhadas. As tabelas do pdfplumber saem exatas quando o PDF desenha a grade, inclusive com células mescladas, porque find_tables() segue os traços. Sem traços, ele não achou nada. pymupdf4llm foi exato na maioria das tabelas com bordas, mas quebrou uma tabela do Office em que uma célula tinha um | sem escape. marker achou os dois exemplos simples sem bordas com 83 a 90% das células, enquanto pymupdf4llm achou um com 40% e pdfplumber nenhum; no exemplo de células mescladas, porém, marker juntou colunas.

Nenhuma biblioteca detectou a tabela sem bordas de uma exportação do Office. Se tabelas são sua prioridade, nosso guia de tabelas em PDF explica por que layouts sem bordas são difíceis para qualquer ferramenta.

Texto em chinês: cobertura, espaços e pontuação

Relatório em chinês de 11 páginas, segundo nossos testes
BibliotecaCaracteres chineses mantidosEspaços dentro de frasesQuebras de linha dentro de frasesVírgulas de largura total mantidas
pymupdf4llm100%1590100%
pdfplumber100%0140100%
marker (padrão)98,6%16600%

O texto em chinês embaralha a ordem de novo. O PDF de origem não tem espaços dentro das frases. pymupdf4llm manteve todos os caracteres e todas as vírgulas de largura total, mas inseriu 159 espaços dentro de frases. pdfplumber também manteve os caracteres, mas deixou 140 quebras de linha no meio de frases. marker perdeu 1,4% dos caracteres, incluindo alguns títulos de seção, trocou cada vírgula de largura total por uma vírgula ASCII e acrescentou 152 tags <sup>. Em PDFs em chinês, a saída do marker foi a que mais exigiu correções nos nossos testes.

Licenças: AGPL vs MIT vs Apache, mais os termos dos modelos

Ilustração: três cartões de licença, um por biblioteca, com um cartão à parte para os pesos dos modelos do marker
No marker, a licença do código não conta tudo: os pesos dos modelos têm termos próprios.
  • pdfplumber: MIT, segundo o arquivo LICENSE. Você pode usá-lo em código proprietário e comercial, desde que mantenha o aviso de licença.
  • pymupdf4llm e PyMuPDF: os repositórios trazem a GNU AGPL 3.0 e os metadados do pacote dizem "Dual Licensed - GNU AFFERO GPL 3.0 or Artifex Commercial License". Resumindo: se você distribuir um programa que depende deles, ou disponibilizar uma versão modificada para usuários pela rede, a AGPL espera que você compartilhe o código-fonte desse programa sob a mesma licença, a menos que compre uma licença comercial da Artifex.
  • marker: o código é Apache-2.0, mas os pesos dos modelos usam uma licença AI Pubs Open RAIL-M modificada. Segundo o MODEL_LICENSE, os pesos são gratuitos para pesquisa, uso pessoal e organizações com menos de US$ 5 milhões de receita bruta ou investimento; acima disso, é preciso uma licença da Datalab.

Se a licença decide por você, AGPL vs MIT é a escolha real entre as duas bibliotecas leves para a maioria das equipes comerciais, e o marker acrescenta um limite de receita. Isto é um resumo, não aconselhamento jurídico; leia os arquivos de licença antes de lançar qualquer coisa.

Perguntas frequentes

Qual é melhor: pymupdf4llm vs pdfplumber vs marker?

Nos nossos testes, pymupdf4llm para documentos comuns e texto em chinês, pdfplumber para tabelas com bordas exatas sob MIT, e marker para tabelas sem bordas e páginas com cabeçalhos repetidos.

pymupdf4llm é gratuito para uso comercial?

Sob a AGPL, sim, se você também publicar seu código-fonte ao distribuir o programa ou oferecê-lo como serviço. Caso contrário, a Artifex vende uma licença comercial.

O marker precisa de GPU?

Não. Ele rodou na nossa máquina de 8 vCPU sem GPU, mas precisou do llama-server do llama.cpp e foi várias vezes mais lento que as bibliotecas leves.

O pdfplumber consegue gerar Markdown?

Não diretamente. Ele devolve texto, palavras, linhas e tabelas; o Markdown você mesmo monta, como fizemos neste teste.

Qual biblioteca lida com PDFs escaneados?

O marker é construído em torno de modelos de OCR. Na configuração padrão, pymupdf4llm e pdfplumber leem a camada de texto, então um escaneamento sai vazio.

Posso repetir este teste?

Sim. O script, as versões e o hardware estão acima; os tempos vão mudar em outra máquina, os resultados de qualidade não deveriam.