Библиотеки распознавания текста под iOS

 

Vision

Vision — это набор библиотек, использующих закрытые алгоритмы компьютерного зрения от Apple. Фреймворк Vision дает доступ к моделям от Apple для распознания лиц, текста, прямоугольников, штрих-кодов и других объектов в любой ориентации.

Распознавание текста Vision позволяет осуществлять с помощью использования одного из этих путей:

·      Скорость — быстрый путь использует возможности фреймворка для поиска отдельных символов, а затем использует небольшую модель машинного обучения для распознавания отдельных символов и слов. Этот подход аналогичен традиционному оптическому распознаванию символов (OCR);

·      Точность — точный путь использует нейронную сеть для поиска текста в строке, а затем выполняет дальнейший анализ для поиска отдельных слов и предложений. Этот подход гораздо больше соответствует тому, как читает человек. 

Используя любой из этих путей, можно дополнительно применить фазу коррекции языка, основанную на обработке естественного языка (NLP), чтобы свести к минимуму вероятность неправильного прочтения.

Также Vision позволяет использовать пользовательские модели для таких задач, как классификация или обнаружение объектов. Например, на следующей макетной карте есть QR-код и прямоугольники, проходящие через детектор:



Рис. 1. Пример обнаружения текста и QR-кода с помощью Vision

В левой части отображается пример входного изображения, которое пользователь вводит в приложение. На правой стороне отображается выходное изображение с обнаруженным текстом и QR-кодом.

Одной из важнейших функций Vision является его способность обнаруживать и распознавать многоязычный текст на готовых изображениях. Эту функцию можно использовать для работы также в режиме реального времени.  Vision позволяет эффективно работать на устройстве и не требуется отправлять данные пользователя на сервер, что повышает производительность, сохраняет конфиденциальность и трафик.

Также присутствует возможность оптимизации языковых настроек. Если язык не указан определённо, Vision смещает свои результаты в сторону английского языка. Включение же языковой коррекции в запросе помогает свести к минимуму распространенные ошибки распознавания. Если в тексте, который необходимо распознать, используется специфичный жаргон, например медицинские или технические термины, можно настроить поведение языковой коррекции. Она дает приоритет пользовательским словам при выполнении их обработки. 

SwiftOCR

SwiftOCR — это быстрая и простая библиотека распознавания текста, написанная на Swift. Она использует нейронную сеть для распознавания изображений и на данный момент оптимизирована для распознавания коротких буквенно-цифровых кодов длиной в одну строку (пример: «DI4C9M»).

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

Алгоритм работы

Символы извлекаются из бинаризованного входного изображения с помощью метода, называемого маркировкой связанных компонентов. Разделенные символы преобразуются в числа, которые затем вводятся в нейронную сеть.

Маркировка связанных компонентов (CCL) — это алгоритмическое приложение теории графов, где подмножества связанных компонентов однозначно помечаются на основе заданного подхода. Используется в компьютерном зрении для обнаружения связанных областей в двоичных цифровых изображениях, хотя цветные изображения и данные с более высокой размерностью также могут обрабатываться.

Пример

SwiftOCR без проблем распознает пример изображения. Если попытаться распознать одно и то же изображение с помощью Tesseract, результат будет "LABMENSW"?

Рис. 2. Пример изображения для распознавания

Это изображение трудно распознать по двум причинам:

1.    Освещение неровное. Эта проблема решается инновационным алгоритмом предварительной обработки SwiftOCR.

2.    Текст на этом изображении искажен. Поскольку SwiftOCR использует нейронную сеть для распознавания, это не проблема.  Нейронная сеть гибка, как человеческий мозг, и может распознавать даже самое искаженное изображение (большую часть времени).