Opublikowano wydanie systemu optycznego rozpoznawania tekstu Tesseract 4.1, wspierającego rozpoznawanie znaków UTF-8 oraz tekstów w ponad 100 językach, w tym rosyjskim, kazachskim, białoruskim i ukraińskim. Wynik może być zapisywany zarówno jako tekst otwarty, jak i w formatach HTML (hOCR), ALTO (XML), PDF oraz TSV. System został oryginalnie stworzony w latach 1985-1995 w laboratorium firmy Hewlett Packard, w 2005 roku kod został otwarty na licencji Apache, a następnie rozwijany z udziałem pracowników firmy Google. Źródłowe teksty projektu są rozpowszechniane na licencji Apache 2.0.
Tesseract zawiera konsolowe narzędzie oraz bibliotekę libtesseract do wbudowywania funkcji rozpoznawania tekstu w inne aplikacje. Do obsługujących Tesseract zewnętrznych interfejsów GUI można zaliczyć gImageReader, VietOCR oraz YAGF. Oferowane są dwa silniki rozpoznawania: klasyczny, rozpoznający tekst na poziomie wzorców poszczególnych znaków, oraz nowy, oparty na zastosowaniu systemu uczenia maszynowego opartego na rekurencyjnej sieci neuronowej LSTM, zoptymalizowanej do rozpoznawania całych linii tekstu, co pozwala osiągnąć znaczny wzrost dokładności. Gotowe wytrénowane modele zostały opublikowane dla 123 języków. W celu optymalizacji wydajności oferowane są moduły wykorzystujące OpenMP oraz instrukcje SIMD AVX2, AVX, NEON lub SSE4.1.
Główne ulepszenia w Tesseract 5.0:
- Znacząca zmiana numeru wersji związana jest z wprowadzeniem do API zmian naruszających kompatybilność. W szczególności, publicznie dostępne API libtesseract nie jest już powiązane z własnościowymi typami danych GenericVector i STRING, zamiast nich w kodzie są używane std::string i std::vector.
- Przeprowadzono reorganizację drzewa źródłowych tekstów. Publiczne pliki nagłówkowe przeniesiono do katalogu include/tesseract.
- Przeprojektowano zarządzanie pamięcią, wszystkie wywołania malloc i free zostały zastąpione kodem C++. Przeprowadzono ogólną modernizację kodu.
- Dodano optymalizacje dla architektur ARM i ARM64, w celu przyspieszenia obliczeń zastosowano instrukcje ARM NEON. Przeprowadzono ogólną optymalizację wydajności dla wszystkich architektur.
- Wprowadzono nowe tryby treningu modeli i rozpoznawania tekstu, oparte na obliczeniach zmiennoprzecinkowych. Nowe tryby charakteryzują się wyższą wydajnością i zmniejszonym zużyciem pamięci. W silniku LSTM szybki tryb float32 jest włączony domyślnie.
- Przejście na korzystanie z normalizacji Unicode w formie NFC (Canonical Normalization Form).
- Dodano opcję konfigurowania szczegółowości logów (—loglevel).
- Przeprojektowano system budowy oparty na Autotools, który przeszedł na budowę w trybie nierekursywnym.
- Gałąź „master” w Git została przemianowana na „main”.
- Dodano wsparcie dla nowych wydań macOS i systemów Apple opartych na chipie M1.
Źródło: opennet.ru
