Tesseract: una soluzione OCR gratuita
introduzione
Tessereact è considerata una delle migliori soluzioni OCR disponibili. Dal 2006 è sponsorizzato da Google, in precedenza era stato sviluppato da Hewlett Packard in C e C++ tra il 1985 e il 1998. Il sistema è in grado di riconoscere anche la scrittura a mano, può apprendere aumentando la sua precisione, ed è tra i più sviluppati e completi sul mercato.
Batte facilmente concorrenti commerciali come ABBY, se stai cercando una soluzione seria per l'OCR, Tesseract è la più accurata, ma non aspettarti soluzioni massicce: utilizza un core per processo, il che significa un processore a 8 core (hyperthreading accettato) sarà in grado di elaborare 8 o 16 immagini contemporaneamente.
Quando ho usato Tesseract abbiamo gestito migliaia di potenziali clienti caricando contenuti scritti a mano, immagini con testo, ecc. Abbiamo utilizzato 48 core server, con DatabaseByDesign e poi con AWS, non abbiamo mai avuto problemi di risorse.
Avevamo un uploader che discriminava tra file di testo come file di Microsoft Office o Open Office e immagini o documenti scansionati. L'autore del caricamento ha determinato qualunque cosa gli script OCR o PHP avrebbero elaborato un ordine, nel campo del riconoscimento del testo.
Tesseact è un'ottima soluzione, ma prima di pensarci devi sapere che le ultime versioni di Tesseract hanno portato grandi miglioramenti, alcuni dei quali significano un duro lavoro. Mentre la formazione potrebbe durare ore o giorni, la formazione sulle versioni recenti di Tesserct può essere di giorni, settimane o addirittura mesi se stai cercando una soluzione OCR multilingue.
Installazione di Tesseract 4 su Debian/Ubuntu:
apt-get install tesseract-ocrSe stai utilizzando una distribuzione Linux diversa, dovrai copiare l'ultima versione del repository github e copiare il file .addestrato file in 'tessdata' (/usr/share/tesseract-ocr/tessdata o /usr/share/tessdata).
Per impostazione predefinita Tesseract installerà il language pack inglese, per installare lingue aggiuntive esegui
apt-get install tesseract-ocr-LANGad esempio, per aggiungere l'ebraico:
apt-get install tesseract-ocr-hebPuoi includere tutte le lingue eseguendo:
apt-get install tesseract-ocr-all
Affinché Tesseract funzioni correttamente, dovremo utilizzare il comando "converti" (converti tra formati di immagine e ridimensiona un'immagine, sfoca, ritaglia, elimina macchie, dither, disegna, capovolgi, unisci, ricampiona e molto di più) fornito da Imagemagick:
Installiamo imagemagick con apt-get:
apt-get install imagemagickOra testiamo Tesseract, troviamo un'immagine contenente testo ed eseguiamo:
tesseract [nome_immagine] [nome_file di output]Se installato correttamente, Tesseract estrarrà il testo dall'immagine.
Quando ho lavorato con Tesseract, tutto ciò di cui avevamo bisogno era contare i documenti a parole. Come con qualsiasi altro programma puoi e devi addestrarlo, in Word possiamo definire alcuni simboli che possono essere contati o meno, se contare o meno i numeri, ecc. lo stesso con Tesseract.
Possiamo anche allenare la sua sensibilità a immagini specifiche.
Ottimizzazione Tesseract:
Ottimizzazione delle dimensioni: Secondo fonti ufficiali, la dimensione ottimale dei pixel affinché un'immagine venga elaborata con successo da Tesseract è 300 DPI. Avremo bisogno di elaborare qualsiasi immagine utilizzando il parametro -r per applicare questo DPI. L'aumento del DPI aumenterà anche il tempo di elaborazione.
Rotazione pagine: Se durante la scansione la pagina non è stata ruotata correttamente e rimane di 180° o 45°, la precisione di Tesseract diminuirà, puoi utilizzare questo script Python per rilevare e risolvere automaticamente i problemi di rotazione.
Rimozione del confine: Secondo l'uomo ufficiale di Tesseract, i bordi possono essere erroneamente scelti come caratteri, in particolare i bordi scuri e dove c'è una varietà di gradazioni. La rimozione dei bordi può essere un buon passo per ottenere la massima precisione con Tesseract.
Rimozione del rumore: Secondo Tesseracts, il rumore "è una variazione casuale di luminosità o colore in un'immagine". Possiamo rimuoverlo nel binarizzazione passo, il che significa polarizzare i suoi colori.
Tesseract di formazione:
Mentre la maggior parte dei tutorial copre solo l'installazione di Tesseract, riassumerò come addestrare il tuo sistema OCR, qui possiamo trovare un tutorial per tutte le versioni. In questo articolo riassumerò come addestrare Tesseract 4 che include un nuovo “motore di riconoscimento basato su rete neurale che offre una precisione significativamente maggiore (sulle immagini dei documenti) rispetto alle versioni precedenti, in cambio di un significativo aumento della potenza di calcolo richiesta. Su linguaggi complessi, tuttavia, potrebbe effettivamente essere più veloce del Tesseract di base."
Prima di continuare dovremo installare librerie aggiuntive:
sudo apt-get install libicu-devsudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
E installeremo gli strumenti di formazione eseguendo, all'interno della directory Tesseract:
renderefare formazione
sudo make training-install
Secondo la wiki ufficiale di Tesseract, abbiamo 3 opzioni attuali per addestrare il nostro sistema OCR:
- "Sintonizzare. Partendo da una lingua già formata, allenati sui tuoi dati aggiuntivi specifici. Questo può funzionare per problemi che sono vicini ai dati di allenamento esistenti, ma diversi in qualche modo sottile, come un carattere particolarmente insolito. Può funzionare anche con una piccola quantità di dati di allenamento.
- Tagliare il livello superiore (o un numero arbitrario di livelli) dalla rete e riqualificare un nuovo livello superiore utilizzando i nuovi dati. Se la messa a punto non funziona, questa è probabilmente la migliore opzione successiva. Tagliare il livello superiore potrebbe ancora funzionare per addestrare una lingua o uno script completamente nuovo, se inizi con lo script dall'aspetto più simile.
- Riqualificarsi da zero. Questo è un compito arduo, a meno che tu non abbia un set di allenamento molto rappresentativo e sufficientemente ampio per il tuo problema. In caso contrario, è probabile che ti ritroverai con una rete sovradimensionata che funziona davvero bene sui dati di allenamento, ma non sui dati effettivi.
Sebbene le opzioni di cui sopra possano sembrare diverse, i passaggi di addestramento sono in realtà quasi identici, a parte la riga di comando, quindi è relativamente facile provarli in tutti i modi, dato il tempo o l'hardware per eseguirli in parallelo."
In questo tutorial, eseguiremo solo il testtrain.sh script che chiamerà i programmi necessari per addestrare una lingua specifica.
Prima di tutto cloniamo tutti i file all'interno del nostro /usr/share/tesseract-ocr:
git clone https://github.com/tesseract-ocr/tesseract
Vai a /usr/share/tesseract-ocr/tesseract/training (directory di installazione predefinita di Tesseract) ed esegui:
$ ./tesstrain.sh --lang heb --langdata_dir /usr/share/tesseract-ocr/langdata --tessdata_dir /usr/share/tesseract-ocr/tessdata
Cambia "heb" per la lingua che vuoi addestrare e modifica anche il percorso dei tuoi dati.
All'interno della directory /usr/share/tesseract-ocr/tesseract/training troverai il file specifico per la lingua.sh utile per aggiungere regole per lingue specifiche.
Risoluzione dei problemi
Tesseract è per me la migliore soluzione OCR, ma recentemente ha apportato enormi cambiamenti rispetto alle versioni precedenti e molti utenti si lamentano di modifiche o cose che non funzionano più, non mi preoccuperei poiché le modifiche sembrano dare ottimi risultati. La community di Tesseract è molto attiva, nel caso dovessi riscontrare problemi nell'esecuzione di tesseract, entra a far parte della community di Tesseract qui.