Оптическое распознавание символов (OCR)

Оптическое распознавание символов (OCR) — это процесс распознавания символов на изображениях с использованием методов компьютерного зрения и машинного обучения. В этом справочном приложении показано, как использовать TensorFlow Lite для распознавания текста. Он использует комбинацию модели обнаружения текста и модели распознавания текста в качестве конвейера OCR для распознавания текстовых символов.

Начать

Если вы новичок в TensorFlow Lite и работаете с Android, мы рекомендуем изучить следующий пример приложения, которое поможет вам начать работу.

Пример Android

Если вы используете платформу, отличную от Android, или уже знакомы с API-интерфейсами TensorFlow Lite , вы можете скачать модели с TF Hub .

Как это работает

Задачи OCR часто разбиваются на два этапа. Во-первых, мы используем модель обнаружения текста для обнаружения ограничивающих рамок вокруг возможных текстов. Во-вторых, мы передаем обработанные ограничивающие рамки в модель распознавания текста, чтобы определить конкретные символы внутри ограничивающих рамок (нам также необходимо выполнить немаксимальное подавление, преобразование перспективы и т. д. перед распознаванием текста). В нашем случае обе модели взяты из TensorFlow Hub и являются квантованными моделями FP16.

Тесты производительности

Показатели производительности генерируются с помощью инструмента, описанного здесь .

Название модели Размер модели Устройство Процессор графический процессор
Обнаружение текста 45,9 Мб Пиксель 4 (Андроид 10) 181,93 мс* 89,77 мс*
Распознавание текста 16,8 Мб Пиксель 4 (Андроид 10) 338,33 мс* Н/Д**

* Использовано 4 нити.

** эта модель не может использовать делегат графического процессора, поскольку для ее запуска нам нужны операции TensorFlow.

Входы

Модель обнаружения текста принимает в качестве входных данных четырехмерный тензор float32 со значениями (1, 320, 320, 3).

Модель распознавания текста принимает в качестве входных данных 4-D тензор float32 со значениями (1, 31, 200, 1).

Выходы

Модель обнаружения текста возвращает 4-D тензор float32 формы (1, 80, 80, 5) в качестве ограничивающей рамки и 4-D тензор float32 формы (1,80, 80, 5) в качестве оценки обнаружения.

Модель распознавания текста возвращает двумерный тензор float32 формы (1, 48) в качестве индексов сопоставления со списком алфавитов «0123456789abcdefghijklmnopqrstuvwxyz».

Ограничения

  • Текущая модель распознавания текста обучается с использованием синтетических данных с английскими буквами и цифрами, поэтому поддерживается только английский язык.

  • Модели недостаточно универсальны для оптического распознавания символов в реальных условиях (скажем, случайные изображения, сделанные камерой смартфона в условиях низкой освещенности).

Поэтому мы выбрали три логотипа продуктов Google только для того, чтобы продемонстрировать, как выполнять распознавание текста с помощью TensorFlow Lite. Если вы ищете готовый к использованию продукт оптического распознавания символов промышленного уровня, вам следует рассмотреть Google ML Kit . Комплекта ML, в котором используется TFLite, должно быть достаточно для большинства случаев использования OCR, но в некоторых случаях вы можете захотеть создать собственное решение OCR с помощью TFLite. Некоторые примеры:

  • У вас есть собственные модели TFLite для обнаружения/распознавания текста, которые вы хотели бы использовать.
  • У вас есть особые бизнес-требования (например, распознавание перевернутых текстов) и вам необходимо настроить конвейер оптического распознавания символов.
  • Вы хотите поддерживать языки, не поддерживаемые ML Kit.
  • На ваших целевых пользовательских устройствах не обязательно должны быть установлены сервисы Google Play.

Рекомендации