Tesseract OCR — Motore Open Source di Riconoscimento Ottico dei Caratteri
Tesseract OCR è un motore di deep learning progettato per estrarre testo da immagini e documenti PDF. Consulta questa documentazione per installarlo su Windows, Linux e macOS, configurare i modelli di reti neurali e integrare l'OCR nelle tue applicazioni.
Cos'è Tesseract?
Tesseract è un motore che trasforma i pixel grezzi di un'immagine in dati testuali strutturati e ricercabili. Sviluppato nel 1985 presso Hewlett-Packard, è oggi mantenuto dalla community globale open source e supporta oltre 100 lingue tramite reti neurali LSTM (Long Short-Term Memory).
Installazione
Essendo una libreria C++ altamente ottimizzata, il modo più pratico per installare Tesseract è attraverso il gestore di pacchetti del sistema operativo.
macOS
Homebrew è il metodo ufficialmente consigliato per macOS (processori Apple Silicon e Intel).
brew install tesseract
brew install tesseract-lang
Ubuntu / Debian
I repository ufficiali apt contengono versioni stabili di Tesseract.
sudo apt install tesseract-ocr
sudo apt install tesseract-ocr-ita tesseract-ocr-all
Windows
I file eseguibili precompilati per Windows sono distribuiti dal progetto UB Mannheim. Anche gestori di pacchetti come scoop o winget lo supportano nativamente.
scoop install tesseract
scoop install tesseract-languages
Avvio Rapido & Comandi CLI
Tesseract nasce principalmente come strumento a riga di comando. Estrarre testo da un'immagine richiede un solo comando.
tesseract nome_immagine base_output [-l lingua] [-psm modosegmentazione] [file_config...]
Esempio: Estrarre testo in Italiano
Per estrarre il testo da fattura.png e salvarlo in risultato.txt :
tesseract fattura.png risultato -l ita
.txt nel nome di output. Tesseract la aggiungerà automaticamente.
Modalità di Segmentazione della Pagina (PSM)
Le modalità di segmentazione della pagina (PSM) indicano a Tesseract come suddividere visivamente l'immagine per individuare i blocchi di testo. Di default, Tesseract presuppone una pagina completa (PSM 3). Se l'input contiene solo una riga o testo sparso, specifica il flag --psm appropriato.
- 0 : Solo rilevamento orientamento e scrittura (OSD).
- 1 : Segmentazione automatica della pagina con OSD.
- 3 : Segmentazione automatica completa senza OSD. *(Predefinito)*
- 4 : Singola colonna di testo con dimensioni variabili.
- 6 : Singolo blocco uniforme di testo.
- 7 : Tratta l'immagine come una singola riga di testo.
- 11 : Testo sparso. Trova tutto il testo possibile senza un ordine fisso.
- 13 : Riga grezza. Elabora come riga singola senza euristiche interne.
Per forzare l'elaborazione come riga singola :
tesseract codice_barre.png stdout --psm 7
Modalità del Motore OCR (OEM)
Le modalità del motore (OEM) consentono di passare dal motore classico basato su confronto di pattern alla moderna rete neurale LSTM. Puoi alternare tramite il parametro --oem per bilanciare velocità e precisione.
- 0 : Solo motore legacy classico. (Metodi di computer vision tradizionali).
- 1 : Solo motore di reti neurali LSTM. (Veloce e ad alta precisione).
- 2 : Motori legacy e LSTM combinati.
- 3 : Predefinito, in base ai modelli
.traineddatainstallati.
Formati di Output
Oltre al semplice testo a schermo o in file .txt, Tesseract genera PDF interattivi e mappe geometriche dettagliate.
PDF Ricercabili e Indicizzabili
Per convertire un'immagine scansionata in un PDF ricercabile con testo invisibile perfettamente sovrapposto :
tesseract documento.tif output_pdf pdf
PDF Solo Testo Invisibile
Utile per sovrapporre il testo su pagine PDF preesistenti in una pipeline automatizzata :
tesseract scan.png output textonly_pdf
hOCR / TSV / ALTO
Per recuperare le coordinate pixel esatte di ogni parola e i relativi punteggi di confidenza :
tesseract immagine.png output hocr
tesseract immagine.png output tsv
Librerie & Wrapper di Programmazione
Vuoi integrare Tesseract in un'applicazione web o in un microservizio? La community offre connettori per quasi tutti i linguaggi.
Python (pytesseract)
Richiede che il binario CLI di Tesseract sia installato sul sistema operativo.
import pytesseract
from PIL import Image
img = Image.open('scontrino.png')
testo = pytesseract.image_to_string(img, lang='ita')
print(testo)
pytesseract.
Node.js & JavaScript (tesseract.js)
Porting completo in WebAssembly del codice C++. Si esegue direttamente nel browser o in Node.js senza installazioni sul server.
const Tesseract = require('tesseract.js');
Tesseract.recognize(
'https://tesseractocr.org/esempio.png',
'ita',
{ logger: m => console.log(m) }
).then(({ data: { text } }) => {
console.log(text);
});
Addestrare Modelli OCR Personalizzati
Tesseract 5 si avvale del repository tesstrain per addestrare ed eseguire il fine-tuning dei modelli neurali LSTM.
Il Repository tesstrain
A differenza della versione 3, l'addestramento nella versione 5 è automatizzato da Makefile che coordinano la generazione massiva dei dati di apprendimento.
git clone https://github.com/tesseract-ocr/tesstrain
cd tesstrain
make tesseract-langdata
Per dettagli approfonditi sui dati di riferimento (Ground Truth) e le epoche di addestramento, consulta il repository ufficiale tesstrain su GitHub.
Strumenti Correlati & Motori di Document AI
Sebbene Tesseract rimanga lo standard open source indiscusso, le pipeline moderne combinano spesso librerie complementari :
- PaddleOCR : Framework basato su deep learning (PP-OCRv6) eccellente per il riconoscimento di tabelle complesse e testo orientato.
- Docling : Parser di documenti per Generative AI e RAG che trasforma PDF e immagini in Markdown e JSON strutturati.
- Python Pillow : La libreria standard per la manipolazione di immagini (regolazione del contrasto, sogliatura e ritaglio) prima dell'OCR.
Fine della documentazione tecnica di Tesseract.
Dichiarazione di non responsabilità: TesseractOCR.org è un progetto documentale indipendente gestito dalla community e non ha affiliazioni ufficiali con il progetto Tesseract OCR.