Разве Apple справилась с распознаванием текста на устройстве лучше, чем MLVision от Google?

В настоящее время множество мобильных приложений, таких как Office Lens и Genius Scan, могут превратить физический документ в цифровой, используя только телефон - вам больше не нужен громоздкий и дорогостоящий сканер.

Представим, что вы хотите извлечь текст из отсканированного документа… легко, правда? Ну, не совсем так - на самом деле это одна из самых сложных проблем компьютерного зрения.

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

Но перед этим давайте разберемся, что такое оптическое распознавание символов.

Что такое OCR?

OCR - это система, которая позволяет сканировать текст или документ, который можно редактировать на смартфоне или компьютере.

Система OCR соответствует автоматическому распознаванию печатных текстов и их повторной транскрипции в электронный файл. Сканируя документ, устройство может «прочитать» его содержимое.

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

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

Как работает OCR?

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

Для этого система OCR сравнивает черный и белый цвета документа, чтобы определить каждый буквенно-цифровой код. Затем система распознает каждый символ и преобразует его в текст ASCII (стандартный код США для обмена информацией).

Это позволяет редактировать, искать и копировать текст так быстро, как вы можете в Word.

Где используется OCR?

OCR - это универсальная технология, которая используется во многих ситуациях, от управления официальной документацией до организации развлекательных игр.

Например, центры сортировки почты часто используют систему распознавания текста для управления и сортировки почты. Это помогает этим центрам быстрее классифицировать почту и сокращать время доставки.

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

Почему OCR так сложно?

Текущее программное обеспечение OCR, вообще говоря, уже знакомо с большим количеством шрифтов, но они также могут учиться на новых вводимых данных. Даже с учетом последних достижений в области компьютерного зрения распознавание рукописных и письменных текстов естественным образом со связанными символами по-прежнему является проблемой. Программное обеспечение должно уметь перемещаться по документу - например, по странице газеты - и придерживаться рассматриваемого текста, выделяя строки и игнорируя другие статьи, подписи к фотографиям или рекламные вставки.

Почему приложение для iOS?

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

В конце этого руководства вы сможете извлекать текст с помощью двух бесплатных библиотек на устройстве.

Google MLVision - Firebase ML Kit:

Firebase ML Kit - это технология OCR, предлагаемая Google. Есть две версии: библиотека на устройстве и облачная. Кажется, что версия для устройства не так мощна, как облачная, но цель состоит в том, чтобы сравнить ее с собственной версией Apple, которая также есть на устройстве.

Распознавание текста Apple в Vision Framework:

Vision - это платформа Apple для всего, что связано с обработкой изображений и видео. На WWDC 19 Apple объявила о поддержке OCR, которая позволяет обнаруживать и распознавать символы без какой-либо внешней библиотеки.

Создайте каркас приложения:

Создайте новый проект:

Для начала нам нужно создать проект iOS с одним приложением просмотра, обязательно выберите Раскадровка в раскрывающемся меню «Пользовательский интерфейс» (только Xcode 11):

Теперь у нас есть готовый проект. Я сам не люблю использовать раскадровки, поэтому приложение в этом руководстве создано программно, что означает отсутствие кнопок или переключателей для переключения - только чистый код 🤗.

Чтобы воспользоваться этим методом, вам нужно удалить main.storyboard и установить свой SceneDelegate.swift файл (только Xcode 11) следующим образом:

В Xcode 11 вам нужно будет изменить файл Info.plist следующим образом:

Вам нужно удалить «Имя раскадровки» в файле, и на этом все.

Главный ViewController

Теперь давайте установим наш ViewController с кнопками и логотипом. Я использовал несколько пользовательских кнопок в приложении - вы, очевидно, можете использовать системную кнопку.

Во-первых, вам нужно унаследовать от UIButton и создать свою собственную настраиваемую кнопку - мы наследуем от UIButton, потому что настраиваемая кнопка «является» UIButton, поэтому мы хотим сохранить все ее свойства и наследовать только для изменения ее внешнего вида:

BtnPleinLarge - это наша новая кнопка, и мы используем ее для создания двух основных кнопок для ViewController.swift, нашего основного представления.

В моем приложении есть два варианта, поэтому я сделаю одну кнопку для Apple, а другую для Google.

Теперь настройте макет и кнопки с некоторой логикой:

Теперь нам нужно настроить логику. Важно изменить файл Info.plist и добавить свойство, чтобы пользователю было дано объяснение, почему нам нужен доступ к камере и библиотеке. Добавьте текст в «Конфиденциальность - Описание использования библиотеки фотографий»:

Чтобы различать Google и Apple, я создал такую ​​переменную:

Конечно, вам нужно будет настроить макет и добавить в представление подвиды. Я также добавил логотип поверх вида:

Выходной ViewController: где мы показываем наш результат

Здесь нам понадобятся три вещи:

  1. Наше исходное изображение:

2. Ярлык с результатами:

3. Кнопка для закрытия просмотра:

Нам нужно добавить подпредставления к основному представлению и также настроить макет:

Установите Firebase ML-Kit:

Я использовал Cocoapods для установки пакета. Чтобы получить доступ к API распознавания текста, вам потребуется установить три модуля:

pod ‘Firebase/Analytics’
pod ‘Firebase/MLVision’
pod ‘Firebase/MLVisionTextModel’

Чтобы установить модуль и настроить свои зависимости, посетите веб-сайт Cocoapods; Что касается Firebase, вы можете ознакомиться с официальной документацией, которая довольно проста и понятна. Затем загрузите API распознавания текста на устройстве.

Здесь я создал функцию с блоком завершения, который возвращает строку:

VNRecognizeTextRequest от Apple (претендент):

Результаты, достижения:

Отказ от ответственности: это ни в коем случае не полное или научное сравнение - моя цель - проверить пределы каждой библиотеки.

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

Я попытался привести примеры, которые варьируются от довольно простых до сложных. Я буду судить их по следующим критериям:

  • Введенный текст: количество ошибок будет зависеть от объема извлеченного текста, который не совпадает с текстом на входном изображении. Для простоты одна ошибка OCR будет засчитана как ошибка.
  • Рукописный текст. Поскольку распознать рукописный текст намного сложнее, я буду более конкретным: это означает, что количество ошибок будет зависеть от количества извлеченных символов. это не совсем то же самое, что текст на входном изображении, это означает: верхний регистр, нижний регистр, каждый символ и т. д.

Я использовал свое имя «Omar MHAIMDAT» как способ проверить производительность двух библиотек.

Введенный текст:

  1. Легкая часть:

Никаких ошибок - интересно наблюдать, как они оба улавливают каждую деталь изображения, даже с разными шрифтами и фоном.

2. Сложная часть:

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

Apple выиграла этот первый раунд.

Рукописный текст:

  1. Легкая часть:

2. Сложная часть:

Это, наверное, самая впечатляющая часть API Apple. Я ошеломлен результатами не только потому, что это первая версия, но и потому, что на самом деле моя фамилия не является общепринятой, из-за чего ее довольно сложно исправить с помощью простого классификатора.

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

Имея больше данных и больше времени на разработку, Apple явно может конкурировать на этом фронте, и я думаю, что их следующая версия станет значительным улучшением. Но вы должны помнить, что ни одна из этих технологий распознавания текста не работает идеально, даже Google.

Один из способов улучшить результаты работы Apple - добавить language correction и добавить собственные слова, например:

Одно это улучшило результаты:

Заключение и заключительные мысли:

Я помню, как некоторое время назад пробовал другие сторонние библиотеки, такие как TesseractOCR для iOS, SwiftOCR или Google MLVision, и пришел к выводу, что Google MLVision сокрушает их все и является / остается лучшим вариантом.

На сегодняшний день я могу сказать, что Apple немного впереди по одной простой причине, которая найдет отклик у каждого разработчика. ВАМ НЕ НУЖНА ДРУГАЯ ЗАВИСИМОСТЬ! Вы можете получить такие же или даже лучшие результаты с собственным Swift API, созданным Apple.

Apple действительно приносит пользу разработчикам iOS с новым набором «ML» API. Они проделали огромную работу, сделав их простыми в использовании, расширяемыми и настраиваемыми.

Google может по-прежнему иметь преимущество перед Apple в облачном решении, но на устройстве Apple теперь король.

Если вам понравился этот урок, поделитесь им со своими друзьями. Если у вас есть какие-либо вопросы, напишите мне по адресу [email protected].

Этот проект доступен для загрузки из моей учетной записи GitHub.



Примечание редактора. Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее создавать лучшие модели машинного обучения.