PyMuPDF4LLM vs pdfplumber vs Marker, provati su PDF veri

Di Team di pdftomd.tools · Aggiornato il · 8 min di lettura

La risposta breve dei nostri test: pymupdf4llm è la scelta migliore di partenza, veloce e con i titoli più puliti, se la licenza AGPL va bene per te. pdfplumber, con licenza MIT, è il più preciso sulle tabelle con bordi ma non produce nessun titolo. marker gestisce meglio le tabelle senza bordi e toglie il superfluo dalle pagine, ma su CPU è parecchie volte più lento e ha rovinato il nostro testo cinese. Per un singolo file, la nostra guida PDF in Markdown con Python offre anche una strada senza installare nulla.

Illustrazione: tre provette etichettate con Markdown versato da un PDF

PyMuPDF4LLM vs pdfplumber vs Marker: il verdetto

Quale libreria scegliere, secondo i nostri test
Se ti serve…ScegliPerché
Buon Markdown, veloce e con i titolipymupdf4llmTutti i titoli attesi al livello giusto nei tre documenti
Celle esatte nelle tabelle con bordi, licenza permissivapdfplumberEsatto su griglie con bordi e celle unite; licenza MIT
Tabelle senza bordi, niente intestazioni ripetutemarkerHa trovato i due esempi semplici senza bordi; ha tolto intestazioni e numeri di pagina
Testo cinese o giapponesepymupdf4llmTutti i caratteri e la punteggiatura conservati; marker ha perso caratteri

Nessuna libreria ha vinto tutti i test. Il resto dell'articolo riporta i numeri dietro ogni riga, così puoi scegliere tra pymupdf4llm vs pdfplumber vs marker con i PDF che hai davvero.

Come abbiamo testato: hardware, versioni, documenti

Per un confronto equo, ogni libreria ha ricevuto gli stessi file sulla stessa macchina. Tutte le esecuzioni erano pura analisi di PDF su CPU: Intel(R) Xeon(R) Processor, 8 vCPU, 16 GB di RAM, nessuna GPU, Linux 6.12.94+ x86_64, Python 3.13.5. Versioni: 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). Abbiamo contato i token con tiktoken 0.14.0 e la codifica o200k_base. Il test è del 19 ottobre 2026.

Illustrazione: una macchina CPU esegue tre librerie Python sugli stessi tre PDF e su una serie di esempi di tabelle
Stessi file, stessa macchina, stesso punteggio per le tre librerie.
  • Documenti: una guida inglese di 5 pagine con 13 titoli e una tabella; un report cinese di 11 pagine con 29 titoli e 4 tabelle; un report inglese di 4 pagine con intestazione e numero di pagina ripetuti su ogni pagina.
  • Esempi di tabelle: 11 PDF di una pagina di cui conosciamo le tabelle corrette cella per cella, due dei quali senza alcuna tabella.
  • Impostazioni: i valori predefiniti di ogni libreria. pdfplumber non ha un output Markdown, quindi abbiamo scritto una ventina di righe che rimettono le sue righe di testo e i risultati di find_tables() in ordine di lettura. marker è stato eseguito una volta con le impostazioni predefinite (modalità veloce, la predefinita su CPU) e una volta con --disable_ocr.
  • Tempi: la mediana di tre esecuzioni. I modelli di marker sono stati caricati una volta prima (4,79 secondi) e un'esecuzione di riscaldamento è stata scartata.
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 chiamata principale di ogni libreria. Il nostro script completo, con il punteggio, è di circa 220 righe.

Su CPU, marker 2.0 richiede anche un binario llama-server di llama.cpp, da installare a parte come indica il suo README, e al primo avvio ha scaricato circa 1,8 GB di file di modello sulla nostra macchina. I primi due tentativi sono falliti: una volta per versioni incompatibili di torch e torchvision, una volta perché mancava llama-server. Erano problemi di installazione, non bug della libreria, ma mettici in conto del tempo.

Velocità e numero di token

Mediana in secondi per documento e token tiktoken dell'output, secondo i nostri test
LibreriaGuida in inglese (5 pag.)Report in cinese (11 pag.)Report inglese con intestazioni ripetute (4 pag.)Token, report cinese
pymupdf4llm0,693 s1,419 s0,387 s8908
pdfplumber0,713 s3,579 s0,023 s8782
marker (predefinito)3,354 s4,563 s2,325 s10001
marker (--disable_ocr)1,425 s3,146 s0,447 s10001

È sulla velocità che pymupdf4llm vs pdfplumber vs marker si distinguono di più. pdfplumber è stato il più rapido sul report breve (0,023 s), ma il più lento tra gli strumenti leggeri sul report cinese. pymupdf4llm è rimasto costante, tra 0,1 e 0,14 secondi per pagina. marker è stato 5 volte più lento di pymupdf4llm sulla guida inglese, pur con i modelli già caricati; con --disable_ocr il distacco si è ridotto.

I token delle due librerie leggere erano simili. marker ha prodotto circa il 12% di token in più sul report cinese, in parte per tag <sup> e spazi in più, e meno sul report breve, perché ha eliminato le intestazioni ripetute.

Titoli e superfluo delle pagine

Titoli attesi trovati, e quanti al livello giusto, secondo i nostri test
LibreriaGuida in inglese (13)Report in cinese (29)Report inglese con intestazioni ripetute (4)
pymupdf4llm13 (13 al livello giusto)29 (29 al livello giusto)4 (4 al livello giusto)
pdfplumber0 (0 al livello giusto)0 (0 al livello giusto)0 (0 al livello giusto)
marker (predefinito)11 (4 al livello giusto)23 (14 al livello giusto)4 (3 al livello giusto)
marker (--disable_ocr)11 (4 al livello giusto)23 (14 al livello giusto)4 (3 al livello giusto)

I titoli sono la seconda grande differenza. pymupdf4llm ha trovato ogni titolo al livello giusto. Ha anche segnato come titoli le domande delle FAQ in grassetto della guida (6 righe), cosa che può tornare utile. pdfplumber non conosce i titoli: ottieni testo piatto. marker ha trovato quasi tutti i titoli, ma spesso al livello sbagliato.

Nel report di 4 pagine, pymupdf4llm e pdfplumber hanno tenuto tutte le 4 copie dell'intestazione ripetuta e i 4 numeri di pagina; marker li ha tolti entrambi. È il caso più netto di pymupdf4llm vs marker: il modello di layout di marker sa cos'è un'intestazione, le librerie leggere no. pdfplumber ha anche lasciato una parola spezzata a fine riga.

Screenshot: output Markdown grezzo di pymupdf4llm, pdfplumber e marker per lo stesso report di 4 pagine, in tre colonne
Screenshot: il Markdown grezzo scritto da ogni libreria per il nostro report di 4 pagine, senza ritocchi.

Tabelle: con bordi, senza bordi, celle unite

Risultato su ogni esempio di tabella, secondo i nostri test
Esempiopymupdf4llmpdfplumbermarker
Griglia con bordiesattaesattaesatta
Esportazione da Office81% delle celleesatta94% delle celle
Senza bordi40% delle cellenon trovata90% delle celle
Celle su più righeesattaesatta83% delle celle
Senza bordi, più righenon trovatanon trovata83% delle celle
Office, senza bordinon trovatanon trovatanon trovata
Tabella nel testoesattanon trovataesatta
Due tabelleesatta33% delle celleesatta
Celle unite83% delle celleesatta42% delle celle
Tabelle esatte: pymupdf4llm 4, pdfplumber 4, marker 3 su 9. Sui due esempi senza tabella, nessuna libreria ne ha inventata una. marker con --disable_ocr ha dato lo stesso risultato di marker predefinito su ogni esempio.

Per le tabelle, la classifica dipende dalla presenza di linee nel PDF. Le tabelle di pdfplumber sono esatte quando il PDF disegna la griglia, anche con celle unite, perché find_tables() segue i tratti. Senza tratti, non ha trovato nulla. pymupdf4llm è stato esatto sulla maggior parte delle tabelle con bordi, ma ha rotto una tabella da Office in cui una cella conteneva un | non escapato. marker ha trovato i due esempi semplici senza bordi con l'83–90% delle celle, mentre pymupdf4llm ne ha trovato uno con il 40% e pdfplumber nessuno; nell'esempio con celle unite, però, marker ha fuso delle colonne.

Nessuna libreria ha individuato la tabella senza bordi di un'esportazione da Office. Se le tabelle sono la tua priorità, la nostra guida alle tabelle PDF spiega perché i layout senza bordi sono difficili per qualsiasi strumento.

Testo cinese: copertura, spazi, punteggiatura

Report cinese di 11 pagine, secondo i nostri test
LibreriaCaratteri cinesi conservatiSpazi dentro le frasiA capo dentro le frasiVirgole a larghezza piena conservate
pymupdf4llm100%1590100%
pdfplumber100%0140100%
marker (predefinito)98,6%16600%

Il testo cinese rimescola di nuovo le carte. Il PDF di partenza non ha spazi dentro le frasi. pymupdf4llm ha conservato ogni carattere e ogni virgola a larghezza piena, ma ha inserito 159 spazi dentro le frasi. Anche pdfplumber ha conservato i caratteri, ma ha lasciato 140 a capo a metà frase. marker ha perso il 1,4% dei caratteri, compresi alcuni titoli di sezione, ha sostituito ogni virgola a larghezza piena con una virgola ASCII e ha aggiunto 152 tag <sup>. Sui PDF cinesi, l'output di marker è stato quello che ha richiesto più correzioni nei nostri test.

Licenze: AGPL vs MIT vs Apache, più le condizioni dei modelli

Illustrazione: tre schede di licenza, una per libreria, con una scheda a parte per i pesi dei modelli di marker
Per marker, la licenza del codice non dice tutto: i pesi dei modelli hanno condizioni proprie.
  • pdfplumber: MIT, secondo il suo file LICENSE. Puoi usarlo in codice proprietario e commerciale purché conservi la nota di licenza.
  • pymupdf4llm e PyMuPDF: i repository includono la GNU AGPL 3.0 e i metadati del pacchetto riportano «Dual Licensed - GNU AFFERO GPL 3.0 or Artifex Commercial License». In breve: se distribuisci un programma che li usa, o metti una versione modificata a disposizione di utenti tramite rete, l'AGPL si aspetta che tu condivida il codice sorgente di quel programma con la stessa licenza, a meno che tu non compri una licenza commerciale da Artifex.
  • marker: il codice è Apache-2.0, ma i pesi dei modelli usano una licenza AI Pubs Open RAIL-M modificata. Secondo MODEL_LICENSE, i pesi sono gratuiti per ricerca, uso personale e organizzazioni sotto i 5 M$ di ricavi lordi o finanziamenti; oltre serve una licenza di Datalab.

Se a decidere è la licenza, AGPL vs MIT è la vera scelta tra le due librerie leggere per la maggior parte dei team commerciali, e marker aggiunge una soglia di ricavi. Questo è un riassunto, non una consulenza legale; leggi i file di licenza prima di pubblicare qualcosa.

Domande frequenti

Qual è il migliore: pymupdf4llm vs pdfplumber vs marker?

Nei nostri test, pymupdf4llm per i documenti comuni e il testo cinese, pdfplumber per tabelle con bordi esatte con licenza MIT, e marker per tabelle senza bordi e pagine con intestazioni ripetute.

pymupdf4llm è gratuito per uso commerciale?

Con l'AGPL sì, se pubblichi anche il tuo codice sorgente quando distribuisci il programma o lo offri come servizio. Altrimenti Artifex vende una licenza commerciale.

marker ha bisogno di una GPU?

No. Ha girato sulla nostra macchina da 8 vCPU senza GPU, ma ha richiesto llama-server di llama.cpp ed è stato parecchie volte più lento delle librerie leggere.

pdfplumber può produrre Markdown?

Non direttamente. Restituisce testo, parole, righe e tabelle; il Markdown lo scrivi tu, come abbiamo fatto per questo test.

Quale libreria gestisce i PDF scansionati?

marker è costruito attorno a modelli OCR. Con le impostazioni predefinite, pymupdf4llm e pdfplumber leggono il livello di testo, quindi una scansione resta vuota.

Posso ripetere questo test?

Sì. Script, versioni e hardware sono indicati sopra; i tempi cambieranno su un'altra macchina, i risultati di qualità non dovrebbero.