Vai al contenuto

Come estrarre testo da PDF e immagini con OCR locale

Cos’è l’OCR, quando serve e come estrarre testo da PDF scannerizzati e immagini sul proprio PC. Test GLM-OCR vs PaddleOCR-VL, casi d’uso e file di prova.

Un PDF scannerizzato non contiene sempre vero testo. A volte è solo una serie di fotografie: puoi leggerle con gli occhi, ma non puoi cercare una parola, copiare una riga o recuperare un numero. Lo stesso vale per scontrini, etichette, screenshot e foto di documenti.

Qui entra in gioco l’OCR. Detto nel modo più semplice possibile, l’OCR prende le lettere presenti nei pixel e le trasforma in testo copiabile e ricercabile. In questa guida spiego come estrarre testo da PDF e immagini con OCR, quando è davvero necessario e come farlo in locale sul proprio PC.

OCR: cos’è e a cosa serve

OCR significa Optical Character Recognition, cioè riconoscimento ottico dei caratteri. Un software OCR osserva un’immagine, riconosce lettere, parole e numeri e restituisce testo utilizzabile da altri programmi.

Il risultato può essere un semplice file TXT, un documento Markdown, dati strutturati oppure un PDF in cui finalmente è possibile usare la ricerca. Se vuoi convertire un’immagine in testo, questo è il tipo di tecnologia che ti serve.

Set pubblico sintetico con sette casi d’uso OCR
Set pubblico creato con dati inventati: nessun documento reale.

Sette casi d’uso concreti

  • Scontrino: recuperare esercente, data, totale e righe di spesa.
  • Fattura: estrarre numero, imponibile, IVA e scadenza da una scansione.
  • Etichetta di spedizione: leggere destinatario, indirizzo e codice di tracciamento.
  • Biglietto da visita: trasformare nome, azienda, email e telefono in un contatto.
  • Screenshot di un errore: copiare il messaggio per cercarlo o inserirlo in un ticket.
  • Contratto: rendere ricercabili clausole, date e riferimenti in una copia acquisita con scanner.
  • Pagina d’archivio: recuperare testo da materiale storico digitalizzato.

Lo stesso flusso funziona anche con un PDF raster di due pagine: prima si trasformano le pagine in immagini, poi si esegue l’OCR su ciascuna pagina e infine si uniscono i risultati mantenendo il riferimento alla pagina di origine.

Ti sta piacendo?

Ricevi una guida pratica ogni settimana. AI, tool e automazioni.

Quando l’OCR non serve

Prima di avviare un modello, prova a selezionare una frase nel documento. Se riesci a copiarla correttamente, probabilmente il testo esiste già e l’OCR aggiungerebbe solo tempo e possibili errori.

  • Un PDF nativo, esportato da un programma, va letto con un parser PDF.
  • Un file DOCX va aperto come documento strutturato.
  • Un file XLSX va letto per fogli, celle e formule.
  • Una pagina HTML va analizzata dal suo codice e dalla sua struttura.

La regola pratica è semplice: parsing nativo quando il testo è già presente, OCR solo quando il contenuto utile vive nei pixel. Questo migliora velocità, precisione e tracciabilità.

OCR PDF gratis e online oppure OCR locale?

Un servizio OCR PDF online può essere comodo per una prova rapida e per documenti non riservati. Carichi il file, attendi l’elaborazione e scarichi il testo. Prima di usarlo, però, conviene controllare limiti di dimensione, conservazione dei file, informativa privacy e condizioni del servizio.

Io preferisco l’OCR locale quando devo ripetere il lavoro, automatizzare una cartella o trattare materiale che non voglio inviare a terzi. “Locale” significa che immagini e modelli restano sul computer. Non significa automaticamente che la configurazione sia facile o che ogni documento venga riconosciuto senza errori.

Il mio test: GLM-OCR Q8 e PaddleOCR-VL 1.6 Q8

Ho confrontato i due modelli con lo stesso ambiente: commit di llama.cpp 7bd8282..., backend Vulkan, GPU Radeon 8060S, quantizzazione Q8, stesso prompt OCR, temperatura 0 e top-k 1. Il corpus comprendeva sette immagini sintetiche e pulite: scontrino, fattura, etichetta di spedizione, biglietto da visita, screenshot di errore, contratto e pagina d’archivio.

Ho eseguito ogni immagine due volte con entrambi i modelli: 7 immagini × 2 ripetizioni × 2 modelli = 28 run. Tutte le 28 esecuzioni sono riuscite e, nelle condizioni del test, i risultati sono stati deterministici.

Modello
GLM-OCR Q8
Similarità caratteri
100%
Parole
100%
Micro CER
0%
Numeri
100%
Tempo medio
7,788 s
Modello
PaddleOCR-VL 1.6 Q8
Similarità caratteri
99,88%
Parole
99,17%
Micro CER
0,14%
Numeri
97,83%
Tempo medio
2,588 s
Confronto GLM-OCR e PaddleOCR-VL su sette casi sintetici
Nuovo benchmark: 28 esecuzioni sul mio hardware.

GLM-OCR ha restituito una trascrizione equivalente al riferimento dopo la normalizzazione di markup e spaziatura. PaddleOCR-VL ha commesso qualche imprecisione, ma è stato 3,01 volte più veloce. Il CER è il tasso di errore sui caratteri: più è basso, meglio è.

Attenzione al significato del benchmark. Il corpus è sintetico, volutamente pulito e piccolo. Serve a rendere il confronto ripetibile, non a costruire un ranking universale. Foto storte, ombre, tabelle complesse, scrittura a mano, lingue diverse e scansioni rovinate possono cambiare molto il risultato.

Il test precedente su un corpus più difficile

Conservo anche il risultato delle 36 run precedenti, effettuate su materiale sintetico più difficile. GLM-OCR aveva raggiunto il 91,17% di similarità caratteri, 8,59% di CER e 7,905 secondi medi. PaddleOCR-VL aveva ottenuto il 91,13%, 8,65% di CER e 2,724 secondi medi. In quel test la qualità era sostanzialmente appaiata, mentre Paddle era 2,90 volte più veloce.

Come estrarre testo da un’immagine sul PC

Quella che segue è una traccia pratica, non una promessa di installazione “one-click”. Servono un minimo di familiarità con terminale, percorsi dei file e dipendenze.

  1. Installa Python 3.11 e crea un ambiente virtuale dedicato.
  2. Compila o installa una versione recente di llama.cpp con supporto multimodale e il backend adatto al tuo hardware.
  3. Scarica il modello GGUF e il relativo file mmproj. Sono file separati e servono entrambi.
  4. Prepara un’immagine leggibile: orientamento corretto, risoluzione sufficiente e poco margine inutile.
  5. Avvia la CLI indicando modello, proiettore multimodale, immagine e prompt.
  6. Salva l’output e controlla sempre nomi, date, importi e codici.
llama-mtmd-cli \
  -m /percorso/modello-ocr-q8.gguf \
  --mmproj /percorso/mmproj-ocr.gguf \
  --image /percorso/documento.png \
  -p "Trascrivi fedelmente tutto il testo visibile. Mantieni righe e numeri." \
  --temp 0 --top-k 1

I nomi delle opzioni possono cambiare tra versioni di llama.cpp: verifica sempre la guida del commit che stai usando. Per un PDF scannerizzato, converti prima ogni pagina in immagine, esegui il comando pagina per pagina e conserva nel risultato un marcatore come pagina: 1.

docroute-ocr 0.2: dal file al testo verificabile

Ho trasformato docroute-ocr in una piccola applicazione locale. Riconosce il formato, usa il parser corretto e applica l’OCR soltanto quando il contenuto vive nei pixel. Puoi scaricare docroute-ocr 0.2.0.

  • elabora TXT, Markdown, HTML, DOCX, XLSX, immagini e PDF;
  • analizza i PDF pagina per pagina e usa l’OCR solo sulle pagine senza testo;
  • produce JSON, TXT e Markdown con riferimenti a pagina, foglio, cella o sezione;
  • elabora intere cartelle in batch senza mescolare file con nomi simili;
  • offre una Web UI locale con caricamento, anteprima, download e cancellazione del workspace;
  • crea un indice SQLite locale e risponde recuperando passaggi originali con citazioni verificabili.

La funzione ask è volutamente estrattiva: cerca e restituisce il testo originale con la sua fonte. Non viene presentata come risposta generata da un modello e non è ancora un RAG completo.

./install.sh
.venv/bin/docroute web --host 127.0.0.1 --port 8765

# oppure da terminale
.venv/bin/docroute process documento.pdf --output risultati

SHA-256 del pacchetto:

cf0fb7cfdd4c78fcb6bda061ea83db99be106084354d90efaa34c27338b13b65

La release ha superato 23 test automatici, una prova di installazione pulita e una prova PDF reale con Poppler. I modelli OCR non sono inclusi: per immagini e PDF scannerizzati servono ancora un runtime llama.cpp multimodale, il modello GGUF e il relativo mmproj.

Puoi anche scaricare il corpus sintetico completo con immagini, testi attesi e report, oppure provare direttamente il PDF scansionato multipagina di esempio. Tutti i dati sono inventati.

Software OCR open source: come scegliere

Non esiste un motore migliore per ogni situazione. Per scegliere un software OCR open source, prova un campione che assomigli davvero ai tuoi documenti e misura almeno:

  • errori su lettere e parole;
  • precisione di importi, date, codici e partite IVA;
  • tempo medio per pagina;
  • memoria richiesta e compatibilità con l’hardware;
  • capacità di mantenere righe, tabelle e ordine di lettura;
  • licenza del codice e dei pesi del modello.

Per i dati importanti non basta una percentuale media: un totale letto come 1.000 invece di 100 può essere più grave di diversi accenti sbagliati. Conviene aggiungere controlli automatici e revisione umana nei passaggi critici.

Dall’OCR al RAG documentale

L’OCR è solo il primo anello della catena. Dopo l’estrazione vengono normalizzazione, suddivisione in chunk, creazione degli embedding, caricamento in Vespa o in un altro indice e infine una chat che risponde mostrando le citazioni.

In una futura chat per documenti aziendali userò parsing nativo + OCR selettivo, isolamento per workspace, cancellazione controllata e fonti precise a livello di pagina o cella. L’obiettivo non è soltanto “far leggere il file all’AI”, ma poter verificare da dove arriva ogni risposta.

Dedicherò un articolo specifico al RAG documentale e alla chat con i documenti aziendali, mostrando come passare da una scansione a una risposta verificabile con la relativa fonte.

OCR cos’è, in parole semplici?

È una tecnologia che riconosce le lettere dentro un’immagine e le trasforma in testo copiabile e ricercabile.

Come estrarre testo da un PDF scannerizzato?

Converti le pagine del PDF in immagini, applica l’OCR a ogni pagina e unisci il testo mantenendo i numeri di pagina. Se il PDF contiene già testo selezionabile, usa invece un parser PDF.

Come estrarre testo da un’immagine?

Fornisci l’immagine a un motore OCR locale oppure a un servizio online. Raddrizzala, usa una risoluzione leggibile e controlla soprattutto numeri, date e nomi.

Un OCR PDF gratis online è sicuro?

Dipende dal servizio e dal documento. Prima del caricamento verifica privacy, conservazione e luogo di trattamento. Per contenuti riservati è spesso preferibile un flusso locale approvato dalla propria organizzazione.

Qual è il miglior software OCR open source?

Dipende da lingua, impaginazione, qualità delle scansioni e hardware. La scelta corretta nasce da un test sul proprio campione, non da un singolo benchmark.

L’OCR è sempre preciso?

No. Immagini sfocate, rotazioni, ombre, caratteri piccoli e tabelle possono introdurre errori. I campi importanti devono essere validati.

Per verificare definizioni, runtime e modelli ho consultato documentazione e repository ufficiali.

Nuovo su Google

Aggiungi francescogruner.it come fonte preferita

Se leggi spesso i miei articoli su AI, automazione e tecnologia, ora puoi dire a Google che vuoi vedere più spesso i contenuti di francescogruner.it tra le notizie.

Francesco Gruner
Francesco Gruner

Sono un consulente IT, divulgatore e imprenditore tech. Mi occupo di automazione, AI e gestione di sistemi e infrastrutture IT, cercando soluzioni semplici a problemi complessi. Qui condivido strumenti, esperimenti e idee utili.

Chiedi al sito.

Assistente OpenAI

Le domande vengono inviate a OpenAI. Non inserire dati personali o riservati. Privacy.

Verifica le risposte nelle fonti. 16 messaggi al giorno per rete.

Cosa cerchi? Ti indico le pagine utili.