OCR i Tłumaczenie offline na żywo na Androidzie z Google ML Kit i Tesseract

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:

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.

https://github.com/AndreiMaksimovich/android-live-ocr-and-translation–demo/tree/main/app/src/main/java/com/amaxsoftware/ocrplayground/src/ocr

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.

https://github.com/AndreiMaksimovich/android-live-ocr-and-translation–demo/tree/main/app/src/main/java/com/amaxsoftware/ocrplayground/src/translation

Tłumaczenie OCR

Usługa tłumaczenia OCR bazuje na TranslationService: przyjmuje ogólny wynik OCRResult i zwraca listę przetłumaczonych linii.

https://github.com/AndreiMaksimovich/android-live-ocr-and-translation–demo/tree/main/app/src/main/java/com/amaxsoftware/ocrplayground/src/ocr/translation

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.