Благодарим за настройку Google I/O. Посмотреть все сеансы по запросу Смотреть по запросу

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

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

Начать

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

Пример Android

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

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

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

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

Цифры эталонных показателей производительности генерируются с помощью описанного здесь инструмента.

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

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

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

Входы

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

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

Выходы

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

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

Ограничения

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

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

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

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

использованная литература