UnlimitedOCR v2 di Baidu: il modello OCR 3B per PDF di 300 pagine

300 pagine. Una sola richiesta.

UnlimitedOCR v2 di Baidu: il modello OCR 3B per PDF di 300 pagine
Condividi:

UnlimitedOCR v2, pubblicato da Baidu come Unlimited OCR 2, è un modello OCR da circa 3 miliardi di parametri pensato per estrarre testo, tabelle e struttura da documenti lunghi. Baidu lo ha valutato su documenti da 103 a 300 pagine.

La difficoltà è mantenere il filo: una tabella può continuare nella pagina successiva, così come un paragrafo o una sezione. V2 introduce una nuova gestione dell'attention e della memoria per affrontare questi passaggi.

Vediamo cosa cambia rispetto a UnlimitedOCR v1, come si comporta v2 nei benchmark e come provarlo in locale. Su Mac trovi gli esempi con la mia libreria unlimitedocr.c, scritta in C con kernel Metal e wrapper Python, e le funzioni di ImageXtract per lavorare sui documenti senza scrivere codice.

Dimensione nominale del modello
3B MoE
MPDocBench, misura Baidu
84,59
MarathonDocBench, misura Baidu
77,06
File v2 mixed Q4 in unlimitedocr.c
circa 1,85 GB
In questa guida

UnlimitedOCR v1 e v2: cosa cambia

Baidu ha presentato Unlimited OCR il 22 giugno 2026 e Unlimited OCR 2 il 27 ottobre 2026, secondo il registro delle release ufficiale. Entrambi eseguono document parsing: dalle immagini delle pagine estraggono il testo e identificano elementi come titoli, paragrafi, formule e tabelle, insieme alla loro posizione.

La famiglia deriva da DeepSeek-OCR: conserva il DeepEncoder per rappresentare le immagini e un decoder Mixture-of-Experts (MoE). I paper indicano circa 3B parametri totali e 0,5B attivi per token. Il numero di parametri attivi riguarda il calcolo del decoder e non equivale alla memoria necessaria per caricare il modello.

Specifiche dai paper e dalle model card Baidu. Le lunghezze di training non sono un numero garantito di pagine elaborabili.
AspettoUnlimitedOCR v1UnlimitedOCR v2
Attention del decoderR-SWASR-SWA
Testo già generatoFinestra locale, 128 token di defaultFinestra locale e selezione dei riferimenti visivi
Accesso alle immaginiTutti i token visivi di riferimentoSelezione per pagina e per blocchi di token
Lunghezza massima di training32K token64K token
Obiettivo documentaleDecine di pagineCentinaia di pagine con gestione a finestre
Runtime ufficiali documentatiTransformers, vLLM, SGLangTransformers e SGLang personalizzato
Baidu: release e runtime supportatiPaper v1: architettura e trainingReport v2: architettura e training

UnlimitedOCR v1: leggere più pagine senza accumulare tutto il testo

In un decoder con full attention, ogni nuovo token può consultare tutta la sequenza precedente. Durante una lunga trascrizione, la KV cache cresce insieme al testo prodotto. UnlimitedOCR v1 sostituisce questa attention con la Reference Sliding Window Attention, abbreviata R-SWA.

Il modello conserva due tipi di memoria: i token di riferimento, cioè immagini e prompt, e una finestra degli ultimi token generati. Il testo più vecchio esce dalla finestra; le immagini restano consultabili.

La KV cache resta stabile durante la generazione per un documento già caricato. Se aggiungi pagine, aumentano comunque i token visivi da conservare e consultare: è questo il limite che v2 affronta.

Paper v1: Reference Sliding Window Attention

Benchmark di v1 e confronto con Qwen2.5-VL-72B

Il primo modello era già competitivo nell'OCR di una singola pagina. Nel paper v1 raggiunge 93,23 su OmniDocBench v1.5, contro 87,01 di DeepSeek-OCR. Nella stessa tabella, v1 supera anche Qwen2.5-VL-72B e Qwen3-VL-235B sul punteggio Overall di OmniDocBench v1.5.

OmniDocBench v1.5: risultati riportati nel paper Baidu v1; i punteggi dei concorrenti sono ripresi dal repository del benchmark. Overall, CDM e TEDS: più alto è meglio.
ModelloParametri nominaliOverallFormula CDMTable TEDSNote
DeepSeek-OCR3B, 0,5B attivi87,0183,3784,97Baseline di v1
Qwen2.5-VL-72B72B87,0288,2782,1524 volte i parametri totali nominali
Qwen3-VL-235B235B89,1588,1486,21Variante non ulteriormente specificata nella tabella
UnlimitedOCR v13B, 0,5B attivi93,2392,6190,93Misura Baidu

Rispetto a Qwen2.5-VL-72B, il vantaggio è di 6,21 punti Overall, con un rapporto nominale di 24 a 1 nei parametri totali: calcolo nostro. È un risultato su document parsing, non una classifica delle capacità generali dei modelli. Inoltre OmniDocBench v1.5 e v1.6 sono benchmark diversi: non confrontare direttamente questo 93,23 con i numeri della sezione su v2.

Paper v1, tabella 1: confronto su OmniDocBench

Velocità di v1 e un caso d'uso concreto

Sul carico OmniDocBench in modalità Base, Baidu riporta 5.580 token/s con concorrenza 512, contro 4.951 di DeepSeek-OCR: circa 12,7% in più, ricalcolato dai valori pubblicati. È throughput aggregato del sistema, non la velocità di una singola richiesta e neppure una misura su Mac.

Un caso d'uso locale più semplice è trasformare una cartella di scansioni in testo da indicizzare. Con unlimitedocr.c puoi caricare v1 una volta e riutilizzare l'istanza per più immagini. Trovi il codice nella procedura per Mac. Le chiamate separate dell'esempio elaborano pagine indipendenti: non ricostruiscono automaticamente un contesto documentale condiviso.

Paper v1: throughput e condizioni di concorrenzaunlimitedocr.c 0.5.0: riuso del modello

Come funziona UnlimitedOCR v2: l'attention SR-SWA

La seconda versione introduce Sparse Reference Sliding Window Attention, o SR-SWA. La sua idea centrale è limitare anche i riferimenti visivi consultati durante ogni passo di generazione. Il modello seleziona le parti utili della pagina invece di riconsiderare tutti i token visivi del documento.

Page Gate

Restringe i blocchi visivi candidati in base alla pagina associata alla query. Le posizioni separano la coordinata di pagina da quella interna alla pagina, per gestire meglio documenti lunghi.

Token Sieve

Assegna un punteggio ai blocchi candidati e seleziona quelli più rilevanti, entro un budget fisso. La selezione viene ottimizzata insieme al modello durante il training.

Continuazione tra finestre

Il runtime suddivide il documento in gruppi di pagine sovrapposti, riusa la cache della pagina di confine e una coda del testo, poi libera i riferimenti non più necessari.

Pagine del documentoFinestra attivaPage GateToken SieveTesto e strutturaCache di confineFinestra successiva
Due interventi complementari: attention sparsa e gestione delle pagine nel runtime

SR-SWA riduce il lavoro di attention per token. La gestione a finestre limita invece le pagine residenti in GPU. Servono entrambe per ottenere il comportamento descritto come unlimited-horizon parsing: caricare in anticipo tutte le immagini conserverebbe comunque un costo di memoria proporzionale al documento.

Anche "one-shot" va letto nel senso corretto: una sola richiesta documentale può essere eseguita internamente in più finestre. E una latenza quasi costante per token non rende costante il tempo totale per trascrivere un libro.

Report v2, sezioni 3.3 e 3.4: SR-SWA e riuso della KV cache

Benchmark UnlimitedOCR v2: confronto con v1, Qwen e InternVL

MPDocBench arriva a 30 pagine. MarathonDocBench, introdotto dagli stessi autori di v2, contiene 100 documenti da 103 a 300 pagine, con circa 205.000 elementi di layout annotati. Oltre a testo, formule e tabelle, questi benchmark valutano la continuità tra pagine.

MPDocBench: selezione delle misure Baidu, report v2, tabella 1. Overall e T-Table TEDS: più alto è meglio; T-Text Edit: più basso è meglio.
ModelloOverallT-Text EditT-Table TEDSNote
UnlimitedOCR v161,890,60560,76Predecessore, misura nello stesso report
InternVL-3.5-38B57,010,51551,69Circa 12,7 volte i parametri totali nominali
Qwen3-VL-235B73,980,18761,25Circa 78,3 volte i parametri totali nominali
Qwen3.8-Max78,300,19667,18Miglior Overall concorrente della tabella
Qwen-3.8-Flash-Next77,360,16388,36Vicino a v2 sulle tabelle tra pagine
UnlimitedOCR v284,590,10089,54Miglior Overall nella tabella

V2 guadagna 22,70 punti Overall su v1 e 6,29 sul miglior concorrente riportato, Qwen3.8-Max. Il vantaggio su Qwen3-VL-235B è di 10,61 punti. Sono differenze ricalcolate dai valori Baidu; i rapporti dimensionali usano i parametri totali nominali, non quelli attivi del MoE.

InternVL-3.5-38B ha circa 12,7 volte i parametri totali nominali di UnlimitedOCR v2. Il rapporto descrive la dimensione dei modelli; memoria e velocità dipendono anche dall'architettura, dalla precisione dei pesi e dal runtime.

MarathonDocBench: selezione delle misure Baidu, report v2, tabella 2. Stesse direzioni delle metriche della tabella precedente; benchmark proposto dagli autori del modello.
ModelloOverallT-Text EditT-Table TEDSNote
UnlimitedOCR v1n.d.n.d.n.d.Non valutato: il report cita un limite di input di 40 pagine
Qwen3.8-Max22,930,80413,71Modello generalista
Gemini-3.8-Flash28,610,65819,56Modello generalista
Kimi-K333,740,66426,30Miglior Overall concorrente della tabella
UnlimitedOCR v277,060,12371,11Parsing di centinaia di pagine

Su MarathonDocBench il distacco dal miglior concorrente riportato, Kimi-K3, arriva a 43,32 punti Overall: calcolo nostro. È il risultato più forte della release e riguarda il compito per cui v2 è stato progettato: mantenere la continuità del parsing su centinaia di pagine.

Report v2, tabelle 1 e 2 e grafico riepilogativo

OCR su una singola pagina: v2 migliora rispetto a v1?

OmniDocBench v1.6: valori riportati da Baidu nel report v2, tabella 3. Overall, CDM e TEDS: più alto è meglio; Text Edit: più basso è meglio.
ModelloOverallText EditFormula CDMTable TEDSNote
DeepSeek-OCR 290,250,05091,8483,893B, 0,5B attivi
UnlimitedOCR v193,920,04295,7990,16Predecessore
UnlimitedOCR v294,020,03896,2989,60+0,10 Overall; -0,56 Table TEDS rispetto a v1
OvisOCR296,470,02797,4994,580,8B; superiore a v2 in questa tabella
TeleOCR96,910,02796,6096,821,2B; superiore a v2 in questa tabella

Sulla singola pagina, v1 e v2 restano molto vicini: su OmniDocBench v1.6 il punteggio Overall passa da 93,92 a 94,02, con un guadagno di appena 0,10 punti. Il miglioramento principale di v2 emerge invece nei documenti multipagina.

V2 migliora il riconoscimento di testo e formule, ma il Table TEDS scende di 0,56 punti. Inoltre OvisOCR2 e TeleOCR, entrambi più piccoli, ottengono punteggi superiori nella stessa tabella. Se lavori soprattutto con ricevute o singole pagine, valuta il passaggio a v2 sui tuoi documenti.

Report v2, tabella 3: risultati single-page

Velocità e memoria: cosa significano i numeri di v2

Misure Baidu su MarathonDocBench, report v2, tabella 4. Il confronto riguarda due modalità di esecuzione di v2, non v1 contro v2.
ModalitàPicco KV cache, batch 1Throughput, batch 16Note
Standard decoding47,00 GB360 token/sPagine mantenute insieme
Unlimited-Horizon Decoding1,77 GB1.315 token/sFinestre con riuso della cache di confine

Con la gestione a finestre, il picco della KV cache scende da 47 a 1,77 GB nel test con batch 1, un rapporto di circa 26,6 a 1. Nel test separato con batch 16, il throughput passa da 360 a 1.315 token/s, circa 3,65 volte quello iniziale. I rapporti sono calcoli nostri sui valori Baidu.

1,77 GB riguarda la KV cache, non tutta la memoria dell'applicazione: pesi, immagini e buffer di lavoro sono costi aggiuntivi.

In un esperimento separato, con modalità Gundam, batch 3 e 1.024 token generati per pagina, il paper riporta a 100 pagine un vantaggio per passo di 7 volte rispetto alla full attention e 5,6 volte rispetto a R-SWA. Questi numeri non vanno trasferiti alle prestazioni di unlimitedocr.c su Apple Silicon: runtime, kernel e hardware sono diversi.

Report v2, tabella 4 e figura 6: memoria, throughput e latenza per passo

unlimitedocr.c: inferenza in C e Metal, con wrapper Python

Ho realizzato unlimitedocr.c per eseguire UnlimitedOCR sul Mac attraverso una piccola API Python. Il motore di inferenza è scritto in C e usa kernel Metal sulla GPU, senza richiedere PyTorch. Python gestisce le immagini, il prompt e la conversione tra testo e token.

La versione 0.5.0, pubblicata il 29 ottobre 2026, aggiunge il supporto sperimentale a v2 su una pagina alla volta, nei profili base e gundam. Il modello predefinito resta v1 e la precisione predefinita resta FP16. Negli esempi scegliamo esplicitamente modello e mixed Q4, il profilo principale per v2 nella release.

unlimitedocr.c 0.5.0: release, requisiti e stato di v2Documentazione 0.5.0: divisione tra frontend Python e motore nativo

Quanta memoria serve su Mac: FP16, Q8 e Q4

Dimensioni approssimative documentate da unlimitedocr.c 0.5.0. Sono file del modello, non requisiti di RAM; GB decimali.
Modello e profiloFileSelezione PythonNote
v1 FP166,7 GBmodel="v1"Default se ometti quant
v1 mixed Q83,5 GBmodel="v1", quant="q8"Matrici quantizzate a 8 bit
v1 mixed Q41,8 GBmodel="v1", quant="q4"Mix di Q4, Q8 e FP16
v2 mixed Q41,85 GBmodel="v2", quant="q4"Profilo principale, single-page sperimentale

La parola "mixed" conta: nel profilo Q4 le proiezioni di attention del decoder restano Q8 e alcune parti restano FP16. In v2, per esempio, i 60 tensori dei router DASH sono conservati in FP16. Non si tratta di un GGUF da passare a llama.cpp: la conversione produce il formato nativo .uocr.

Sulle fatture usate nelle verifiche della release, v2 mixed Q4 ha raggiunto picchi di memoria nativa tracciata di 3,33 GB in Base e 4,14 GB in Gundam. Sono misure di quei casi specifici, non limiti garantiti né la memoria totale del processo.

Il primo avvio scarica il checkpoint e lo converte. I due shard ufficiali di v2 occupano complessivamente circa 6,69 GB, calcolati dalle dimensioni dei file Hugging Face: prevedi spazio anche per questi, oltre al modello convertito e alla cache del tokenizer.

unlimitedocr.c: quantizzazione, conversione e picchi osservatiHugging Face: dimensioni dei due shard v2

Come usare UnlimitedOCR su Mac con Python

La wheel 0.5.0 richiede Apple Silicon, macOS 15 o successivo e Python 3.12 o successivo. Include la libreria nativa e i kernel Metal precompilati. I comandi seguenti creano un ambiente separato; richiedono uv già installato.

Gli esempi Mac e CUDA di questa guida sono stati controllati sulla documentazione e sul codice delle versioni indicate, ma non eseguiti per questo articolo.

1. Crea l'ambiente
mkdir unlimitedocr-demo
cd unlimitedocr-demo
uv venv --python 3.12
uv pip install "unlimitedocr-c==0.5.0"
2. Prepara le immagini

Copia nella cartella page-1.png e page-2.png per l'esempio v1, oppure fattura.png per v2. generate() riceve immagini, non direttamente un PDF: renderizza prima le pagine oppure usa un'app che gestisca questo passaggio. Il profilo base usa una vista globale; gundam aggiunge il tiling per le pagine più dense.

v1: una cartella di scansioni

Questo esempio riusa il modello e conserva il markup grezzo in due file distinti. Eseguilo dalla cartella appena creata:

uv run python - <<'PY'
from pathlib import Path
from unlimitedocr_c import UnlimitedOCR

pages = [Path("page-1.png"), Path("page-2.png")]
for page in pages:
    if not page.is_file():
        raise FileNotFoundError(page)

with UnlimitedOCR(model="v1", quant="q4") as ocr:
    for page in pages:
        raw = ocr.generate(page, profile="base")
        page.with_suffix(".ocr.txt").write_text(raw, encoding="utf-8")
PY

Le pagine sono indipendenti. I file .ocr.txt contengono anche i marcatori di layout, non Markdown già ripulito. Il context manager chiude il motore anche in caso di errore.

v2: una fattura con blocchi e coordinate

Questo esempio estrae il contenuto di una fattura e salva sia l'output originale sia i blocchi riconosciuti in JSON. Il parser verifica la struttura del markup; non verifica che importi e codici fiscali siano stati letti correttamente.

uv run python - <<'PY'
import json
from dataclasses import asdict
from pathlib import Path
from unlimitedocr_c import UnlimitedOCR, OCRParseError, parse_ocr

page = Path("fattura.png")
if not page.is_file():
    raise FileNotFoundError(page)

with UnlimitedOCR(model="v2", quant="q4") as ocr:
    raw = ocr.generate(page, profile="base")

Path("fattura.ocr.txt").write_text(raw, encoding="utf-8")
try:
    document = parse_ocr(raw)
except OCRParseError as exc:
    raise SystemExit(f"Markup non valido; conserva il raw: {exc}")

Path("fattura.json").write_text(
    json.dumps(asdict(document), ensure_ascii=False, indent=2),
    encoding="utf-8",
)
PY

Per una pagina densa puoi provare profile="gundam", con un costo di memoria maggiore. parse_ocr() restituisce record Document, Page e Block, con bounding box normalizzate tra 0 e 1 quando presenti. Mantiene le etichette e i collegamenti di merge, ma non fonde automaticamente le tabelle tra pagine.

Il wrapper costruisce il prompt e gestisce la generazione: l'API generate(image, profile) non espone parametri di sampling come quelli di un generico chatbot. Non aggiungere argomenti come temperature presi dagli esempi Transformers.

Dopo aver preparato modello e tokenizer, download=False richiede che entrambi siano già disponibili in locale. Per mantenere privato anche il caricamento delle immagini, usa file locali invece di URL.

API Python, parser e gestione offlineRelease 0.5.0: verifiche effettuate dal progetto e limiti noti

Come eseguire UnlimitedOCR v2 multipagina con Transformers

Per elaborare più pagine nella stessa richiesta, puoi usare il runtime Transformers di Baidu su una GPU NVIDIA. L'esempio riguarda un contratto di tre pagine, fornite come immagini nell'ordine corretto. Non include la gestione a finestre necessaria per documenti molto lunghi, disponibile nell'implementazione SGLang personalizzata descritta più avanti.

La model card documenta un ambiente con Python 3.10 e una NVIDIA A800 da 80 GB. È la configurazione usata da Baidu, non un requisito minimo universale di VRAM.

1. Prepara un ambiente CUDA separato

Queste sono le versioni indicate nella model card. torchvision e alcune dipendenze non sono fissate dalla ricetta ufficiale: verifica la compatibilità con PyTorch e con i driver della tua macchina.

uv venv --python 3.10 .venv-uocr2-cuda
source .venv-uocr2-cuda/bin/activate
uv pip install torch==2.13.0 torchvision pillow \
  transformers==4.52.1 huggingface-hub==0.36.0 \
  tokenizers==0.21.4 addict==2.4.0 einops==0.8.2 easydict==1.13
2. Passa le pagine in un'unica chiamata

Salva questo codice in parse_document.py accanto a page-1.png, page-2.png e page-3.png. Il checkpoint e il codice remoto sono fissati alla revisione usata dal supporto v2 di unlimitedocr.c 0.5.0. trust_remote_code=True esegue codice del repository: esaminalo prima di usarlo in un ambiente sensibile.

from pathlib import Path
import torch
from transformers import AutoModel, AutoTokenizer

repo = "baidu/Unlimited-OCR-2"
revision = "c14071b549f4fcab10909f3c4acc6a2edb366947"
pages = [Path(f"page-{i}.png") for i in range(1, 4)]
for page in pages:
    if not page.is_file():
        raise FileNotFoundError(page)
if not torch.cuda.is_available():
    raise RuntimeError("Questo esempio richiede una GPU NVIDIA CUDA")

tokenizer = AutoTokenizer.from_pretrained(
    repo, revision=revision, trust_remote_code=True,
)
model = AutoModel.from_pretrained(
    repo, revision=revision, trust_remote_code=True,
    use_safetensors=True, torch_dtype=torch.bfloat16,
).eval().cuda()

with torch.inference_mode():
    text, num_tokens = model.infer_multi(
        tokenizer,
        image_files=[str(page) for page in pages],
        output_path="output/contratto",
        save_results=True,
        temperature=0.0,
        no_repeat_ngram_size=35,
        ngram_window=1024,
        max_new_tokens=24000,
    )

Path("contratto.ocr.txt").write_text(text, encoding="utf-8")
if num_tokens >= 24000:
    raise RuntimeError("Budget di output raggiunto: controlla il risultato")

Esegui nell'ambiente CUDA attivato:

python parse_document.py

infer_multi() usa Base di default e costruisce il prompt "<PAGE><image>" * numero_pagine + "Multi page parsing.". Non serve un system prompt aggiuntivo. I parametri anti-ripetizione riprendono la configurazione multipagina documentata; 24.000 token è il budget scelto per questo esempio, non una soglia consigliata da Baidu. Restare sotto il budget non dimostra da solo che la trascrizione sia completa.

Nel codice fissato alla revisione indicata, infer_multi() ha un limite predefinito di 131.072 token tra input e generazione. Per documenti molto lunghi, Baidu raccomanda il proprio SGLang personalizzato, distribuito nella wheel 0.5.20.dev13+g75b9b06b02, che integra la gestione delle finestre e il riuso della cache. Non basta installare una versione qualsiasi di SGLang.

Se parti da un PDF, converti prima le pagine in immagini mantenendo il loro ordine: infer_multi() accetta la lista delle immagini, non il percorso del PDF.

Model card v2: ambiente Transformers e SGLang personalizzatoCodice Transformers alla revisione fissata: firma di infer_multi, prompt e limiti

ImageXtract: usare l'OCR locale in un'app per macOS

Se preferisci lavorare sui documenti senza preparare un ambiente Python, ho sviluppato ImageXtract per macOS. L'app riunisce l'intero flusso di lavoro: importazione dei PDF, OCR locale, verifica dei risultati sulla pagina originale, ricerca nei documenti ed esportazione. Integra un modello Baidu Unlimited OCR quantizzato, un motore C e kernel Metal.

Controllare il risultato sulla pagina

Le regioni riconosciute restano collegate alla pagina originale. Puoi confrontare il testo con la sorgente, verificare le tabelle e recuperare le figure rilevate come immagini.

Ritrovare e riutilizzare i documenti

Progetti persistenti e ricerca full-text rendono consultabili i documenti dopo l'OCR. L'esportazione include Markdown, Word, JSON, HTML e testo spaziale; una cartella osservata può produrre automaticamente file Markdown accanto agli originali.

Come documentato nella pagina del prodotto, la versione App Store di ImageXtract non dispone del permesso di accesso alla rete e disabilita i download di modelli e immagini durante il riconoscimento. Il modello è incluso nell'app e l'OCR viene eseguito sul Mac. I requisiti sono Apple Silicon e macOS 15.5 o successivo; i PDF protetti da password non sono attualmente supportati.

ImageXtract: pipeline locale, funzioni, requisiti e limiti

Come leggere i confronti

Le metriche misurano aspetti diversi. Text Edit e T-Text Edit sono distanze: più basse sono, meglio è. TEDS valuta la somiglianza della struttura delle tabelle; CDM riguarda le formule. Il prefisso T nelle metriche multipagina riguarda gli elementi che attraversano il confine tra pagine. Un Overall di 94 non significa che il 94% dei documenti sia interamente corretto.

Conta anche il post-processing. Lo script ufficiale di v2 interpreta i marcatori di pagina e di blocco, riunisce frammenti di tabelle e rimuove intestazioni ripetute. Il parser di unlimitedocr.c conserva la struttura e i collegamenti senza eseguire quelle fusioni: un JSON esportato dal wrapper non è già l'output Markdown usato nella valutazione Baidu.

Baidu: formato di output e regole di fusione per la valutazioneunlimitedocr.c: contratto di parse_ocr

Un controllo tra fonti: lo stesso v1 non ha numeri identici

UnlimitedOCR v1 su OmniDocBench v1.6: paper Baidu contro leaderboard ufficiale v1.6_full, consultata il 30 ottobre 2026. Differenze calcolate da noi, leaderboard meno paper.
MetricaPaper BaiduLeaderboard OmniDocBenchDifferenzaNote
Overall93,9294,00+0,08Stesso nome del modello; fonti diverse
Text Edit0,0420,0394-0,0026Più basso è meglio
Formula CDM95,7995,7234-0,0666Più alto è meglio
Table TEDS90,1690,21+0,05Più alto è meglio

Non attribuiamo una causa precisa a queste differenze: possono dipendere da dettagli di valutazione, post-processing o aggiornamenti dei risultati, che andrebbero ricostruiti prima di trarre conclusioni. Però il controllo è utile: uno scarto tra fonti di 0,08 punti sullo stesso v1 è vicino al miglioramento di 0,10 punti tra v1 e v2 nel paper.

Questo non annulla il confronto interno al report. Suggerisce di non presentare il piccolo guadagno single-page come una svolta. I distacchi multipagina sono molto più ampi, ma restano da riprodurre; il benchmark MarathonDocBench è stato proposto dagli stessi autori del modello.

Leaderboard ufficiale OmniDocBench, snapshot consultatoReport v2: punteggi v1 e v2 nello stesso confronto

Licenza e limiti da considerare

Licenza dei modelli Baidu

Le model card di v1 e v2 dichiarano MIT; il file LICENSE della repo Baidu contiene il testo MIT, che consente anche l'uso commerciale mantenendo gli avvisi di copyright e licenza. Il software viene fornito senza garanzie. Questo non sostituisce la verifica delle licenze di runtime, dipendenze e altri componenti che distribuisci.

La comprensione globale resta un limite

Gli autori riconoscono che l'attention sparsa di v2 non conserva tutte le informazioni globali del documento. Strutture come la gerarchia dei titoli possono risentirne. Segnalano inoltre una diversità ancora limitata nei dati di training.

Per dati contabili, sanitari o legali, verifica gli elementi critici contro la pagina originale. Il modello può sbagliare testo, ordine di lettura e collegamenti tra blocchi. Anche un parser rigoroso controlla la sintassi, non la fedeltà della trascrizione; eventuale HTML presente nell'output va trattato come contenuto non fidato e sanitizzato prima di mostrarlo sul web.

Testo integrale della licenza MIT BaiduModel card v1: licenza dichiarataModel card v2: licenza dichiarataReport v2, sezione 6: limiti e sviluppi futuri

Domande frequenti su UnlimitedOCR v2

UnlimitedOCR v2 è sempre migliore di v1?

No. Nei risultati Baidu migliora molto il parsing multipagina, ma su OmniDocBench v1.6 guadagna solo 0,10 punti Overall e perde 0,56 punti Table TEDS. Per le singole pagine serve una valutazione sui tuoi documenti.

Posso elaborare un libro intero con unlimitedocr.c?

Puoi costruire un flusso che elabori immagini una alla volta. Nella release 0.5.0, però, v2 supporta solo la pagina singola: le chiamate separate non condividono il contesto e non implementano la continuazione tra finestre del runtime ufficiale.

Bastano 1,85 GB di RAM per v2?

No: circa 1,85 GB è la dimensione del file mixed Q4 di unlimitedocr.c. Servono anche memoria per immagini, attivazioni, KV cache e buffer. I picchi nativi documentati su alcune fatture sono già superiori e non descrivono ogni possibile input.

Funziona con documenti in italiano?

Le model card classificano i modelli come multilingue, ma le fonti qui esaminate non forniscono un benchmark specifico per l'italiano. Verifica accenti, separatori decimali, codici e tabelle su un campione rappresentativo dei tuoi documenti.

L'inferenza sul Mac funziona offline?

Con unlimitedocr.c sì, dopo aver preparato modello e tokenizer in locale e usando immagini locali. ImageXtract include il modello nell'app e la pagina del prodotto documenta un'elaborazione senza servizio OCR cloud. Le condizioni di installazione sono diverse.

Quando scegliere ImageXtract invece della libreria Python?

Scegli la libreria se vuoi integrare l'OCR nei tuoi script e controllare la pipeline. ImageXtract è adatto quando vuoi importare PDF, verificare visivamente i risultati, cercare nei progetti ed esportare senza sviluppare questi strumenti.

Fonti

Dati aggiornati al 30 ottobre 2026. I benchmark sono quelli pubblicati da Baidu e dalla leaderboard OmniDocBench; non li abbiamo riprodotti in modo indipendente. Differenze di punteggio, rapporti dimensionali, rapporti di throughput e memoria e somma delle dimensioni degli shard sono calcoli nostri. I casi d'uso sono illustrativi e gli esempi di inferenza non sono stati eseguiti per questo articolo. Le verifiche descritte nelle note di unlimitedocr.c appartengono alla release del progetto, non a nuovi test svolti per questa guida.

Trasparenza: unlimitedocr.c e ImageXtract sono miei progetti. Le loro funzioni sono descritte separatamente dai risultati del modello Baidu.

References

  1. Baidu Unlimited-OCR: README e registro release
  2. Unlimited OCR Works: paper v1
  3. Unlimited OCR Works 2: report tecnico, tabelle 1-4 e limiti
  4. Model card Baidu Unlimited-OCR v1
  5. Model card Baidu Unlimited-OCR-2
  6. Unlimited-OCR-2: elenco e dimensioni dei file
  7. Implementazione Transformers v2 alla revisione c14071b
  8. unlimitedocr.c: documentazione della versione 0.5.0
  9. unlimitedocr.c 0.5.0: supporto v2, verifiche e limiti
  10. ImageXtract per macOS: OCR locale e gestione documentale
  11. OmniDocBench: leaderboard v1.6_full allo snapshot ea2d138
  12. Baidu: post-processing del markup UnlimitedOCR v2
  13. Baidu Unlimited-OCR: licenza MIT

Mauro Sciancalepore - Notizie AI, Deep Learning e Ricerca

Resta aggiornato sulle ultime notizie di Intelligenza Artificiale e Deep Learning. Approfondimenti completi sulla ricerca e stato dell'arte.

© 2026 mauroscia.it
Tutti i diritti riservati.