Pengenalan karakter optik (OCR)

Pengenalan karakter optik (OCR) adalah proses pengenalan karakter dari gambar menggunakan visi komputer dan teknik pembelajaran mesin. Aplikasi referensi ini mendemonstrasikan cara menggunakan TensorFlow Lite untuk melakukan OCR. Ini menggunakan kombinasi model deteksi teks dan model pengenalan teks sebagai saluran OCR untuk mengenali karakter teks.

Memulai

Jika Anda baru menggunakan TensorFlow Lite dan menggunakan Android, sebaiknya jelajahi contoh aplikasi berikut yang dapat membantu Anda memulai.

Contoh Android

Jika Anda menggunakan platform selain Android, atau sudah familiar dengan TensorFlow Lite API , Anda dapat mendownload modelnya dari TF Hub .

Bagaimana itu bekerja

Tugas OCR sering kali dipecah menjadi 2 tahap. Pertama, kami menggunakan model deteksi teks untuk mendeteksi kotak pembatas di sekitar kemungkinan teks. Kedua, kami memasukkan kotak pembatas yang telah diproses ke dalam model pengenalan teks untuk menentukan karakter tertentu di dalam kotak pembatas (kita juga perlu melakukan Penekanan Non-Maksimal, transformasi perspektif, dan lain-lain sebelum pengenalan teks). Dalam kasus kami, kedua model tersebut berasal dari TensorFlow Hub dan merupakan model terkuantisasi FP16.

Tolok ukur kinerja

Angka tolok ukur kinerja dihasilkan dengan alat yang dijelaskan di sini .

Nama model Ukuran model Perangkat CPU GPU
Deteksi Teks 45,9 Mb Piksel 4 (Android 10) 181,93 md* 89,77 md*
Pengenalan Teks 16,8 Mb Piksel 4 (Android 10) 338,33 md* T/A**

* 4 benang digunakan.

** model ini tidak dapat menggunakan delegasi GPU karena kami memerlukan operasi TensorFlow untuk menjalankannya

masukan

Model deteksi teks menerima Tensor float32 4-D (1, 320, 320, 3) sebagai input.

Model pengenalan teks menerima Tensor float32 4-D (1, 31, 200, 1) sebagai masukan.

Keluaran

Model deteksi teks mengembalikan Tensor bentuk float32 4-D (1, 80, 80, 5) sebagai kotak pembatas dan Tensor bentuk float32 4-D (1,80, 80, 5) sebagai skor deteksi.

Model pengenalan teks mengembalikan Tensor bentuk float32 2-D (1, 48) sebagai indeks pemetaan ke daftar alfabet '0123456789abcdefghijklmnopqrstuvwxyz'

Keterbatasan

  • Model pengenalan teks saat ini dilatih menggunakan data sintetis dengan huruf dan angka berbahasa Inggris, sehingga hanya bahasa Inggris yang didukung.

  • Model tersebut tidak cukup umum untuk OCR di alam liar (misalnya, gambar acak yang diambil oleh kamera ponsel cerdas dalam kondisi pencahayaan rendah).

Jadi kami memilih 3 logo produk Google hanya untuk menunjukkan cara melakukan OCR dengan TensorFlow Lite. Jika Anda mencari produk OCR tingkat produksi yang siap pakai, Anda harus mempertimbangkan Google ML Kit . ML Kit, yang menggunakan TFLite di bawahnya, seharusnya cukup untuk sebagian besar kasus penggunaan OCR, namun ada beberapa kasus di mana Anda mungkin ingin membuat solusi OCR Anda sendiri dengan TFLite. Beberapa contohnya adalah:

  • Anda memiliki model TFLite deteksi/pengenalan teks sendiri yang ingin Anda gunakan
  • Anda memiliki persyaratan bisnis khusus (yaitu, mengenali teks yang terbalik) dan perlu menyesuaikan saluran OCR
  • Anda ingin mendukung bahasa yang tidak tercakup dalam ML Kit
  • Perangkat pengguna target Anda belum tentu memiliki layanan Google Play yang terpasang

Referensi