La version du système de reconnaissance optique de caractères Tesseract 4.1 a été publiée, prenant en charge la reconnaissance de caractères UTF-8 et de textes en plus de 100 langues, y compris le russe, le kazakh, le biélorusse et l'ukrainien. Les résultats peuvent être enregistrés sous forme de texte brut, ainsi que dans les formats HTML (hOCR), ALTO (XML), PDF et TSV. À l'origine, le système a été créé entre 1985 et 1995 dans un laboratoire de la société Hewlett Packard, le code a été ouvert en 2005 sous la licence Apache et a depuis été développé avec l'aide des employés de Google. Les textes sources du projet sont distribués sous la licence Apache 2.0.
Tesseract comprend une utilitaire en console et une bibliothèque libtesseract pour intégrer des fonctionnalités de reconnaissance de texte dans d'autres applications. Parmi les interfaces GUI tierces supportant Tesseract, on peut noter gImageReader, VietOCR et YAGF. Deux moteurs de reconnaissance sont proposés : l'un classique, qui reconnaît le texte au niveau des modèles de caractères individuels, et l'autre, basé sur l'application d'un système d'apprentissage machine utilisant un réseau de neurones récurrents LSTM, optimisé pour reconnaître des lignes entières et permettant d'atteindre une précision significativement améliorée. Des modèles pré-entraînés sont publiés pour 123 langues. Pour optimiser les performances, des modules utilisant OpenMP et des instructions SIMD AVX2, AVX, NEON ou SSE4.1 sont proposés.
Améliorations principales dans Tesseract 5.0 :
- Le changement significatif de version est dû aux modifications de l'API qui rompent la compatibilité. En particulier, l'API publique libtesseract n'est plus liée aux types de données propriétaires GenericVector et STRING, ceux-ci étant remplacés dans le code par std::string et std::vector.
- La structure de l'arbre des sources a été réorganisée. Les fichiers d'en-tête publics ont été déplacés dans le répertoire include/tesseract.
- La gestion de la mémoire a été remaniée, tous les appels à malloc et free ont été remplacés par du code C++. Le code a subi une modernisation générale.
- Des optimisations ont été ajoutées pour les architectures ARM et ARM64, utilisant des instructions ARM NEON pour accélérer les calculs. Une optimisation de performance générale a été réalisée pour toutes les architectures.
- De nouveaux modes d'entraînement des modèles et de reconnaissance du texte ont été mis en œuvre, basés sur l'utilisation de calculs en virgule flottante. Ces nouveaux modes se distinguent par une performance accrue et une réduction de la consommation de mémoire. Dans le moteur LSTM, le mode rapide float32 est activé par défaut.
- La transition vers l'utilisation de la normalisation Unicode avec la forme NFC (Normalization Form Canonical) a été réalisée.
- Une option pour configurer le niveau de détail des journaux (—loglevel) a été ajoutée.
- Le système de construction basé sur Autotools a été repensé et est maintenant configuré pour une construction en mode non récursif.
- La branche «master» dans Git a été renommée en «main».
- Ajout de la prise en charge des nouvelles versions de macOS et des systèmes Apple basés sur la puce M1.
Source : opennet.ru
