Optyczne rozpoznawanie znaków (OCR)

Optyczne rozpoznawanie znaków (OCR) to proces rozpoznawania znaków z obrazów przy użyciu technik widzenia komputerowego i uczenia maszynowego. Ta aplikacja referencyjna demonstruje, jak używać TensorFlow Lite do wykonywania OCR. Wykorzystuje kombinację modelu wykrywania tekstu i modelu rozpoznawania tekstu jako potok OCR do rozpoznawania znaków tekstowych.

Zaczynaj

Jeśli dopiero zaczynasz korzystać z TensorFlow Lite i pracujesz z systemem Android, zalecamy zapoznanie się z poniższą przykładową aplikacją, która może pomóc Ci rozpocząć.

Przykład Androida

Jeśli korzystasz z platformy innej niż Android lub znasz już API TensorFlow Lite , możesz pobrać modele z TF Hub .

Jak to działa

Zadania OCR są często podzielone na 2 etapy. Najpierw używamy modelu wykrywania tekstu, aby wykryć ramki wokół możliwych tekstów. Po drugie, wprowadzamy przetworzone ramki ograniczające do modelu rozpoznawania tekstu, aby określić określone znaki wewnątrz ramek ograniczających (przed rozpoznaniem tekstu musimy również wykonać tłumienie niemaksymalne, transformację perspektywy itp.). W naszym przypadku oba modele pochodzą z TensorFlow Hub i są to modele skwantowane FP16.

Benchmarki wydajności

Wartości porównawcze wydajności są generowane za pomocą narzędzia opisanego tutaj .

Nazwa modelu Rozmiar modelu Urządzenie procesor GPU
Wykrywanie tekstu 45,9 Mb Piksel 4 (Android 10) 181,93 ms* 89,77 ms*
Rozpoznawanie tekstu 16,8 Mb Piksel 4 (Android 10) 338,33 ms* nie dotyczy**

* Wykorzystano 4 wątki.

** ten model nie mógł korzystać z delegata GPU, ponieważ do jego uruchomienia potrzebujemy operacji TensorFlow

Wejścia

Model wykrywania tekstu przyjmuje jako dane wejściowe 4-D float32 Tensor (1, 320, 320, 3).

Model rozpoznawania tekstu przyjmuje jako dane wejściowe 4-D float32 Tensor (1, 31, 200, 1).

Wyjścia

Model wykrywania tekstu zwraca 4-D tensor kształtu float32 (1, 80, 80, 5) jako obwiednię i 4-D tensor kształtu float32 (1,80, 80, 5) jako wynik wykrywania.

Model rozpoznawania tekstu zwraca dwuwymiarowy tensor float32 o kształcie (1, 48) jako indeksy mapowania na listę alfabetów „0123456789abcdefghijklmnopqrstuvwxyz”

Ograniczenia

  • Bieżący model rozpoznawania tekstu jest szkolony przy użyciu danych syntetycznych zawierających angielskie litery i cyfry, dlatego obsługiwany jest tylko język angielski.

  • Modele nie są wystarczająco ogólne, aby umożliwić OCR w środowisku naturalnym (powiedzmy losowe zdjęcia wykonane aparatem smartfona w warunkach słabego oświetlenia).

Wybraliśmy więc 3 logo produktów Google tylko po to, aby zademonstrować, jak wykonać OCR za pomocą TensorFlow Lite. Jeśli szukasz gotowego do użycia produktu OCR klasy produkcyjnej, powinieneś rozważyć Google ML Kit . ML Kit, który wykorzystuje TFLite pod spodem, powinien wystarczyć w większości przypadków użycia OCR, ale są pewne przypadki, w których możesz chcieć zbudować własne rozwiązanie OCR z TFLite. Oto kilka przykładów:

  • Masz własne modele TFLite do wykrywania/rozpoznawania tekstu, z których chcesz korzystać
  • Masz specjalne wymagania biznesowe (np. rozpoznawanie tekstów odwróconych do góry nogami) i musisz dostosować potok OCR
  • Chcesz obsługiwać języki nieobsługiwane przez ML Kit
  • Twoje docelowe urządzenia użytkowników niekoniecznie mają zainstalowane usługi Google Play

Bibliografia