Optik karakter tanıma (OCR)

Optik karakter tanıma (OCR), bilgisayar görüşü ve makine öğrenimi tekniklerini kullanarak görüntülerdeki karakterleri tanıma işlemidir. Bu referans uygulaması, OCR yapmak için TensorFlow Lite'ın nasıl kullanılacağını gösterir. Metin karakterlerini tanımak için OCR hattı olarak metin algılama modeli ve metin tanıma modelinin bir kombinasyonunu kullanır.

Başlamak

TensorFlow Lite'ta yeniyseniz ve Android ile çalışıyorsanız, başlamanıza yardımcı olabilecek aşağıdaki örnek uygulamayı incelemenizi öneririz.

Android örneği

Android dışında bir platform kullanıyorsanız veya TensorFlow Lite API'lerine zaten aşina iseniz modelleri TF Hub'dan indirebilirsiniz.

Nasıl çalışır

OCR görevleri genellikle 2 aşamaya ayrılır. İlk olarak olası metinlerin etrafındaki sınırlayıcı kutuları tespit etmek için bir metin algılama modeli kullanıyoruz. İkinci olarak, sınırlayıcı kutuların içindeki belirli karakterleri belirlemek için işlenmiş sınırlayıcı kutuları bir metin tanıma modeline besliyoruz (metin tanımadan önce ayrıca Maksimum Olmayan Bastırma, perspektif dönüştürme vb. yapmamız gerekiyor). Bizim durumumuzda her iki model de TensorFlow Hub'dandır ve FP16 kuantize edilmiş modellerdir.

Performans kıyaslamaları

Performans kıyaslama numaraları burada açıklanan araçla oluşturulur.

Model adı Modeli boyutu Cihaz İşlemci GPU
Metin Algılama 45,9 MB Piksel 4 (Android 10) 181,93 ms* 89,77 ms*
Metin Tanıma 16,8 MB Piksel 4 (Android 10) 338,33 ms* Yok**

* 4 konu kullanıldı.

** Bu model, çalıştırmak için TensorFlow işlemlerine ihtiyacımız olduğundan GPU temsilcisini kullanamıyor

Girişler

Metin algılama modeli, giriş olarak (1, 320, 320, 3)'ün 4 boyutlu float32 Tensörünü kabul eder.

Metin tanıma modeli, giriş olarak (1, 31, 200, 1)'in 4 boyutlu float32 Tensörünü kabul eder.

çıktılar

Metin algılama modeli, sınırlayıcı kutu olarak bir 4-D float32 Şekil Tensörü (1, 80, 80, 5) ve algılama puanı olarak bir 4-D float32 Şekil Tensörü (1,80, 80, 5) döndürür.

Metin tanıma modeli, '0123456789abcdefghijklmnopqrstuvwxyz' alfabe listesine eşleme indeksleri olarak şekil (1, 48) şeklinde 2 boyutlu bir float32 Tensör döndürür.

Sınırlamalar

  • Geçerli metin tanıma modeli, İngilizce harf ve rakamlardan oluşan sentetik veriler kullanılarak eğitildiğinden yalnızca İngilizce desteklenir.

  • Modeller, vahşi ortamda OCR için yeterince genel değildir (örneğin, düşük aydınlatma koşullarında bir akıllı telefon kamerasıyla çekilen rastgele görüntüler).

Bu nedenle yalnızca TensorFlow Lite ile OCR'nin nasıl yapılacağını göstermek için 3 Google ürün logosunu seçtik. Kullanıma hazır, üretim düzeyinde bir OCR ürünü arıyorsanız Google ML Kit'i düşünmelisiniz. Altında TFLite kullanan ML Kiti çoğu OCR kullanım durumu için yeterli olmalıdır ancak TFLite ile kendi OCR çözümünüzü oluşturmak isteyebileceğiniz bazı durumlar da vardır. Bazı örnekler:

  • Kullanmak istediğiniz kendi metin algılama/tanıma TFLite modelleriniz var
  • Özel iş gereksinimleriniz var (ör. ters çevrilmiş metinleri tanımak) ve OCR hattını özelleştirmeniz gerekiyor
  • ML Kit'in kapsamadığı dilleri desteklemek istiyorsunuz
  • Hedef kullanıcı cihazlarınızda mutlaka Google Play hizmetlerinin yüklü olması gerekmez

Referanslar