È stata pubblicata la versione del sistema di riconoscimento ottico dei caratteri Tesseract 4.1, che supporta il riconoscimento dei caratteri UTF-8 e testi in oltre 100 lingue, tra cui russo, kazako, bielorusso e ucraino. I risultati possono essere salvati sia come testo aperto che nei formati HTML (hOCR), ALTO (XML), PDF e TSV. Inizialmente, il sistema è stato creato tra il 1985 e il 1995 nel laboratorio della Hewlett Packard; nel 2005, il codice è stato reso pubblico sotto licenza Apache e in seguito è stato sviluppato con la partecipazione di dipendenti di Google. I testi sorgenti del progetto sono distribuiti sotto licenza Apache 2.0.
Tesseract include un'utilità da console e una libreria libtesseract per integrare le funzioni di riconoscimento del testo in altre applicazioni. Tra le interfacce GUI di terze parti che supportano Tesseract, si possono citare gImageReader, VietOCR e YAGF. Sono disponibili due motori di riconoscimento: uno classico, che riconosce il testo a livello di modelli di singoli caratteri, e un nuovo motore che sfrutta un sistema di apprendimento automatico basato su una rete neurale ricorrente LSTM, ottimizzato per il riconoscimento di intere righe, consentendo di ottenere un notevole aumento della precisione. Modelli già addestrati sono stati pubblicati per 123 lingue. Per ottimizzare le prestazioni, vengono proposti moduli che utilizzano OpenMP e istruzioni SIMD AVX2, AVX, NEON o SSE4.1.
Principali miglioramenti in Tesseract 5.0:
- Il significativo cambio di numero di versione è dovuto a modifiche all'API che interrompono la compatibilità. In particolare, l'API pubblicamente accessibile libtesseract non è più legata ai tipi di dati proprietari GenericVector e STRING, al loro posto nel codice vengono utilizzati std::string e std::vector.
- È stata effettuata una riorganizzazione dell'albero dei testi sorgenti. I file header pubblici sono stati spostati nella cartella include/tesseract.
- È stata ristrutturata la gestione della memoria, tutte le chiamate a malloc e free sono state sostituite con codice C++. È stata effettuata una modernizzazione generale del codice.
- Sono state aggiunte ottimizzazioni per le architetture ARM e ARM64, sfruttando le istruzioni ARM NEON per accelerare i calcoli. È stata effettuata un'ottimizzazione generale delle prestazioni per tutte le architetture.
- Sono stati implementati nuovi modelli di allenamento e riconoscimento del testo, basati sull'uso di calcoli in virgola mobile. I nuovi modelli si distinguono per prestazioni superiori e riduzione del consumo di memoria. Nel motore LSTM, la modalità rapida float32 è attivata per impostazione predefinita.
- È stato effettuato il passaggio all'uso della normalizzazione Unicode utilizzando la forma NFC (Normalization Form Canonical).
- È stata aggiunta un'opzione per configurare il livello di dettaglio dei log (—loglevel).
- È stata ripensata la sistema di costruzione basata su Autotools, che è stata tradotta per la costruzione in modalità non ricorsiva.
- Il ramo 'master' in Git è stato rinominato in 'main'.
- Aggiunto supporto per nuove versioni di macOS e sistemi Apple basati su chip M1.
Fonte: opennet.ru
