Nhận dạng ký tự quang học (OCR)

Nhận dạng ký tự quang học (OCR) là quá trình nhận dạng ký tự từ hình ảnh bằng cách sử dụng kỹ thuật thị giác máy tính và máy học. Ứng dụng tham khảo này trình bày cách sử dụng TensorFlow Lite để thực hiện OCR. Nó sử dụng kết hợp mô hình phát hiện văn bảnmô hình nhận dạng văn bản làm đường dẫn OCR để nhận dạng các ký tự văn bản.

Bắt đầu

Nếu bạn chưa quen với TensorFlow Lite và đang làm việc với Android, chúng tôi khuyên bạn nên khám phá ứng dụng ví dụ sau để có thể giúp bạn bắt đầu.

Ví dụ về Android

Nếu bạn đang sử dụng nền tảng không phải Android hoặc đã quen thuộc với API TensorFlow Lite , bạn có thể tải xuống các mô hình từ TF Hub .

Làm thế nào nó hoạt động

Nhiệm vụ OCR thường được chia thành 2 giai đoạn. Đầu tiên, chúng tôi sử dụng mô hình phát hiện văn bản để phát hiện các hộp giới hạn xung quanh các văn bản có thể có. Thứ hai, chúng tôi đưa các hộp giới hạn đã xử lý vào mô hình nhận dạng văn bản để xác định các ký tự cụ thể bên trong các hộp giới hạn (chúng tôi cũng cần thực hiện Loại bỏ không tối đa, chuyển đổi phối cảnh, v.v. trước khi nhận dạng văn bản). Trong trường hợp của chúng tôi, cả hai mô hình đều đến từ TensorFlow Hub và chúng là mô hình lượng tử hóa FP16.

Điểm chuẩn hiệu suất

Số điểm chuẩn hiệu suất được tạo bằng công cụ được mô tả ở đây .

Tên mẫu Kích thước mô hình Thiết bị CPU GPU
Phát hiện văn bản 45,9 Mb Pixel 4 (Android 10) 181,93 mili giây* 89,77 mili giây*
Nhận dạng văn bản 16,8 Mb Pixel 4 (Android 10) 338,33 mili giây* Không áp dụng**

* 4 chủ đề được sử dụng.

** mô hình này không thể sử dụng đại biểu GPU vì chúng tôi cần hoạt động của TensorFlow để chạy nó

Đầu vào

Mô hình phát hiện văn bản chấp nhận Tensor float32 4-D của (1, 320, 320, 3) làm đầu vào.

Mô hình nhận dạng văn bản chấp nhận Tensor float32 4-D của (1, 31, 200, 1) làm đầu vào.

đầu ra

Mô hình phát hiện văn bản trả về một Tensor hình dạng float32 4-D (1, 80, 80, 5) làm hộp giới hạn và một Tensor float32 4-D có hình dạng (1,80, 80, 5) làm điểm phát hiện.

Mô hình nhận dạng văn bản trả về một Tensor 2-D float32 có hình dạng (1, 48) làm chỉ mục ánh xạ tới danh sách bảng chữ cái '0123456789abcdefghijklmnopqrstuvwxyz'

Hạn chế

  • Mô hình nhận dạng văn bản hiện tại được huấn luyện bằng dữ liệu tổng hợp với các chữ cái và số tiếng Anh nên chỉ hỗ trợ tiếng Anh.

  • Các mô hình này không đủ chung cho OCR trong thực tế (ví dụ: các hình ảnh ngẫu nhiên được chụp bởi camera của điện thoại thông minh trong điều kiện ánh sáng yếu).

Vì vậy, chúng tôi đã chọn 3 logo sản phẩm của Google chỉ để trình bày cách thực hiện OCR với TensorFlow Lite. Nếu bạn đang tìm kiếm một sản phẩm OCR cấp sản xuất sẵn sàng để sử dụng, bạn nên xem xét Google ML Kit . Bộ ML, sử dụng TFLite bên dưới, sẽ đủ cho hầu hết các trường hợp sử dụng OCR, nhưng có một số trường hợp bạn có thể muốn xây dựng giải pháp OCR của riêng mình bằng TFLite. Một số ví dụ:

  • Bạn có mô hình TFLite phát hiện/nhận dạng văn bản của riêng mình mà bạn muốn sử dụng
  • Bạn có các yêu cầu kinh doanh đặc biệt (ví dụ: nhận dạng văn bản bị lộn ngược) và cần tùy chỉnh quy trình OCR
  • Bạn muốn hỗ trợ các ngôn ngữ không có trong ML Kit
  • Thiết bị người dùng mục tiêu của bạn không nhất thiết phải cài đặt dịch vụ Google Play

Người giới thiệu