Indra OCR su CPU: come valutare velocità, accuratezza e limiti
Indra OCR estrae testo e struttura da PDF e immagini su CPU. Come interpretare i benchmark, scegliere la modalità e verificare i vincoli della licenza.
Newsletter del 15 ottobre 2026
Indra OCR propone un approccio all’estrazione documentale su CPU: recupera il testo già presente nei PDF e applica il riconoscimento ottico dove serve. Produce Markdown, testo o JSON con coordinate e struttura della pagina. Per chi sviluppa sistemi di indicizzazione o conversione documentale, l’aspetto interessante è poter valutare un’elaborazione locale senza GPU.
La scheda di Datalab documenta però un sistema più articolato del richiamo a un modello da un milione di parametri. Il riconoscitore principale ha circa 1,25 milioni di parametri; i modelli predefiniti ne totalizzano 7,3 milioni. Anche il vantaggio prestazionale va circoscritto: il confronto di throughput pubblicato indica circa dieci volte i modelli testuali di PaddleOCR, nelle condizioni descritte dal produttore.
Dimensioni, requisiti e condizioni d’uso
Il pacchetto richiede Python 3.10 o successivo e usa ONNX Runtime, OpenCV e pypdfium2, senza PyTorch. Datalab dichiara test su Linux x86_64 e aarch64 e su macOS con Apple silicon.
Il primo avvio scarica circa 76 MB: 30 MB di reti e 46 MB di modelli linguistici per le righe incerte. I modelli matematici sono aggiuntivi. È possibile indicare una cartella locale tramite --model-dir, un’opzione utile quando si vuole controllare quali artefatti vengono caricati.
Occorre distinguere codice e pesi. Il codice è Apache 2.0; i pesi adottano una OpenRAIL-M modificata. La scheda dichiara uso gratuito per ricerca, uso personale e startup sotto la soglia di 20 milioni di dollari di finanziamenti/ricavi, escludendo impieghi competitivi con l’API di Datalab. Per un’integrazione commerciale, il testo della licenza va quindi verificato rispetto all’impiego concreto: la licenza del codice da sola non basta.
PDF digitali e scansioni richiedono percorsi diversi
La modalità predefinita auto legge il livello testuale quando supera i controlli e ricorre all’OCR altrove. Può anche riconoscere il testo nelle immagini incorporate. La modalità ocr ignora invece il livello testuale; text lo utilizza anche quando i controlli falliscono.
Questa distinzione incide sulla valutazione. Un archivio di PDF digitali e una raccolta di scansioni non esercitano necessariamente gli stessi componenti. Il campo source permette di identificare il percorso seguito dalla pagina: testo, OCR, ibrido oppure errore.
Per una prima verifica si possono confrontare queste due esecuzioni:
pip install indra-ocr
indra-ocr paper.pdf --format json --timings
indra-ocr paper.pdf --mode ocr --format json --timings
L’output JSON include righe, coordinate, blocchi, confidenze e tempi. È quindi adatto a verificare sia il contenuto estratto sia l’ordine di lettura, senza limitarsi all’aspetto del Markdown.
Che cosa misurano i benchmark pubblicati
Datalab riporta su OmniParseBench i risultati seguenti. Il punteggio complessivo è la media delle famiglie testo, tabelle e impaginazione: non rappresenta la percentuale di caratteri riconosciuti correttamente.
| Configurazione | Punteggio complessivo | Testo | Mediana ms/pagina |
|---|---|---|---|
Indra OCR, auto | 66,7 | 46,7 | 212 |
| Indra OCR, solo OCR | 61,2 | 40,7 | 344 |
Indra OCR, auto --math | 71,4 | 62,7 | 357 |
| PaddleOCR PP-OCRv6 small, soli modelli testuali | Non calcolato | 35,8 | 2.685 |
| PaddleOCR PP-StructureV3 | 58,4 | 55,6 | 40.958 |
Il benchmark comprende 2.937 pagine e 16.288 test; le misurazioni di latenza usano x86, quattro vCPU per motore e una pagina alla volta. PP-StructureV3 esclude 19 pagine per un blocco dell’esecuzione. Datalab segnala inoltre oscillazioni della latenza mediana intorno al 15% e precisa che gli altri motori sono stati eseguiti precedentemente, sullo stesso tipo di container.
Il throughput proviene da una prova distinta: 300 pagine, modalità OCR, CPU AMD EPYC 9004 Genoa e un processo a thread singolo per core. A 32 core, Datalab misura 43,9 pagine/s per Indra contro 4,28 per PP-OCRv6 small. Caricamento e riscaldamento dei modelli sono esclusi. Sono misure pubblicate dal produttore, non risultati verificati qui né prestazioni garantite su altri archivi.
Come impostare una valutazione utile
La scelta dovrebbe partire da un campione rappresentativo, separando PDF digitali, scansioni pulite e documenti problematici. Per ciascun gruppo conviene verificare caratteri, ordine di lettura, associazione delle celle e tempi, includendo l’avvio se il servizio elabora pochi documenti per esecuzione.
Datalab indica limiti importanti: 25,2% nei test di manoscrittura e 29,5% in quelli sulle scansioni degradate di OmniParseBench. Le tabelle con celle unite, intestazioni annidate o testo su più righe possono produrre associazioni errate. Questi dati suggeriscono di prevedere controlli dedicati prima di usare l’estrazione in processi automatici.
Anche --math richiede una scelta esplicita. Nei risultati pubblicati migliora testo e formule, ma il punteggio delle tabelle scende da 61,1 a 59,6 perché alcuni numeri vengono interpretati come matematica. L’aumento della latenza rende opportuno provarlo sui documenti che contengono formule.
FAQ
Il JSON restituisce soltanto testo e coordinate?
No. Documenta anche blocchi con etichette, ordine di lettura, rotazione, inclinazione, percorso di elaborazione e tempi per fase. Questi campi aiutano a diagnosticare gli errori.
Un singolo PDF lungo può usare più core?
Sì. La CLI e convert_many distribuiscono le pagine tra processi, con un processo per core utilizzabile. --cores limita le risorse impiegate.
Il Markdown conserva intestazioni e piè di pagina?
Per impostazione predefinita li omette. Si possono mantenere con --keep-furniture. Le tabelle vengono rappresentate come HTML nel Markdown: è un dettaglio da verificare nel sistema che consumerà l’output.