Repozytorium: https://github.com/AndreiMaksimovich/android-live-ocr-and-translation–demo
W tym artykule przedstawię kilka szczegółów technicznych dotyczących stworzenia androidowego projektu demonstracyjnego, który pokazuje działanie offline’owego OCR w czasie rzeczywistym oraz tłumaczenia. Projekt wykorzystuje Google ML Kit Text Recognition V2 do OCR oraz Tesseract jako rozwiązanie awaryjne/fallback (gdy język nie jest obsługiwany przez ML Kit). Do tłumaczeń na urządzeniu używa Google ML Kit Translation.
Stos technologiczny
Aplikacja została zbudowana w języku Kotlin z wykorzystaniem XML Layouts.
Integruje kilka komponentów open-source oraz dostarczanych przez Google:
- Google ML Kit Text Recognition V2 – wysokiej dokładności silnik OCR działający na urządzeniu.
- Tesseract OCR – popularna, otwartoźródłowa biblioteka OCR.
- Tesseract4Android – wrapper dla systemu Android umożliwiający korzystanie z Tesseract.
- Google ML Kit Translation – API do tłumaczeń na urządzeniu w czasie rzeczywistym.
Implementacja OCR
W tym demo implementacja OCR została oparta na warstwie abstrakcji z fabryką, która dostarcza usługę OCR. Usługa przyjmuje obraz typu Bitmap jako wejście i zwraca ogólną odpowiedź OCR ustrukturyzowaną hierarchicznie w postaci: Bloki → Linie → Słowa → Symbole.
Tłumaczenia
Tłumaczenia zostały zaimplementowane w ten sam sposób co OCR – poprzez fabrykę i abstrakcyjną usługę TranslationService, która udostępnia zawieszaną metodę tłumaczenia.
Tłumaczenie OCR
Usługa tłumaczenia OCR bazuje na TranslationService: przyjmuje ogólny wynik OCRResult i zwraca listę przetłumaczonych linii.
Uwaga
To demo techniczne – nie jest aplikacją gotową do wdrożenia produkcyjnego, stanowi implementację referencyjną, pokazującą jak te technologie mogą współpracować ze sobą.
- Pliki danych Tesseract są przechowywane w folderze assets i rozpakowywane podczas inicjalizacji aplikacji.
- Modele językowe ML Kit są automatycznie pobierane podczas inicjalizacji aplikacji.
- Obsługiwane języki są zakodowane na stałe.
- Aparat przechwytuje obrazy bez stosowania filtrów czy efektów.
W aplikacji produkcyjnej należy korzystać z odpowiednich systemów i menedżerów do obsługi pobierania modeli na żądanie oraz dynamicznej obsługi języków.
Przepływ pracy OCR powinien rozpoczynać się od wstępnego przetwarzania obrazu, obejmującego takie kroki jak: dostosowanie balansu światła, konwersja do odcieni szarości lub czerni i bieli oraz filtracja wybranych obszarów.