Co to jest OCR?
Optyczne rozpoznawanie znaków (OCR) odnosi się do procesu automatycznego identyfikowania z obrazu znaków lub symboli należących do określonego alfabetu. W tym poście skupimy się na wyjaśnieniu, jak korzystać z OCR na Android.
Po rozpoznaniu tekstu obrazu, może być używany do:
-
- Zapisz go do pamięci.
- Przetwarzaj lub edytuj go.
- Tłumaczyć go na inny język.
Popularność smartfonów w połączeniu z coraz lepszymi aparatami fotograficznymi doprowadziła do wzrostu wykorzystania tego typu technik rozpoznawania i powstania nowej kategorii aplikacji mobilnych, które je wykorzystują.
Na urządzeniu czy w chmurze?
Przed użyciem biblioteki OCR należy zdecydować, gdzie powinien odbywać się proces OCR, na smartfonie czy w chmurze.
W zależności od wymagań aplikacji, każde podejście ma swoje wady i zalety.
Jeśli aplikacja wymaga np. wykonywania rozpoznawania znaków bez połączenia z internetem, silnik OCR będzie uruchamiany na samym urządzeniu. W ten sposób można uniknąć wysyłania obrazów na serwer, ponieważ kamery zamontowane w obecnych urządzeniach mogą robić duże zdjęcia.
Z drugiej strony, biblioteki OCR zwykle zajmują dużo miejsca, będąc niezbędnymi do pobrania każdego z języków do rozpoznania, jak wyjaśnimy poniżej.
Jakie biblioteki mogą być używane?
W poniższym linku do Wikipedii znajduje się tabela porównawcza ze wszystkimi bibliotekami OCR, obsługiwanymi platformami, językami programowania użytymi w jej rozwoju i innymi istotnymi informacjami.
Link: http://en.wikipedia.org/wiki/ List_of_optical_character_recognition_software
W tym poście będziemy używać biblioteki Tesseract, która wyróżnia się ponad resztą. Jest ona Open Source, posiada SDK, została stworzona przez HP i jest obecnie rozwijana przez Google.
OCR na Androida z wykorzystaniem biblioteki Tesseract
Aczkolwiek Tesseract może być uruchomiony na serwerze Linux jako usługa w chmurze, w tym poście zaimplementujemy bibliotekę Tesseract w aplikacji na Androida, uruchamiając silnik OCR na samym urządzeniu.
Oryginalny projekt Tesseract dla Androida nazywa się Tesseract Android Tools i zawiera narzędzia do kompilacji bibliotek Tesseract i Leptonica do użytku na platformie Android, oraz API Java do dostępu do tych natywnie skompilowanych bibliotek.
Link: https://github.com/rebbix/tesseract-android-tools/tree/master/tesseract-android-tools
Do naszego przykładu wykorzystamy fork Tesseract Android Tools, który dodaje więcej funkcjonalności.
Link: https://github.com/rmtheis/tess-two
OCR Example on Android
Potrzebujemy kilku prostych kroków, aby wykonać OCR na Androidzie:
Rozważania
- Jakość rozpoznawania może się różnić w zależności od warunków oświetlenia obrazu, rozdzielczości kamery, czcionki tekstu, rozmiaru tekstu i innych …
- Aby osiągnąć najwyższą możliwą jakość, bardzo ważne jest, aby wyśrodkować tekst na obrazie, a obraz był odpowiednio skoncentrowany.
Podgląd użycia OCR w aplikacji tłumacza
Następujący film pokazuje część aplikacji, którą tworzę na potrzeby mojego projektu dyplomowego (TFG), gdzie używam opisanych technik OCR.