Взаимосвязь и применение технологии OCR и глубокого обучения

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

1. Краткое введение

Полное название OCR на английском языке — «Оптическое распознавание символов», а на китайском — «Оптическое распознавание символов»; это давняя задача компьютерного зрения, которая очень хорошо работает в некоторых конкретных областях и не требует современных технологий глубокого обучения.

До того, как в 2012 году глубокое обучение стало полным ходом, существовало множество различных реализаций OCR, начиная с 1914 года. Можно сказать, что все проблемы технологии OCR решены? Ответ - нет! Использование нейронных сетей глубокого обучения для обучения задачам OCR будет более точным и будет иметь больше применений.

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

Прочитав эту статью, вы узнаете:

1. Ваша машина находится в Пекине, почему вы получили штраф из Шанхая за превышение скорости?

2. Почему в некоторых приложениях не распознаются отдельные буквы при сканировании номеров банковских карт?

3. Лучше ли глубокое обучение, чем традиционные методы OCR?

4. Каков принцип и структура глубокого обучения распознаванию текста?

5. Как напрямую использовать функцию распознавания текста OCR? Я постараюсь быть максимально простым, чтобы студенты разных специальностей могли это понять ^_^

2. Типы оптического распознавания символов

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

Каждая задача OCR имеет свою сложность, и, как говорится, «в дикой природе» сложнее всего.

image.png

Перечислите свойства нескольких часто используемых задач OCR:

  1. Плотность текста:Плотность текста в печатном и рукописном тексте очень высокая, но на изображении с видом на улицу текст действительно разреженный.
  2. Структура текста:Текст на странице структурирован, в основном строгими строками, а в дикой природе текст может быть разбросан повсюду с разными поворотами.
  3. Шрифт:Шрифты легче печатать, потому что они более структурированы, чем шумные рукописные символы.
  4. Тип персонажа:Текст может отображаться на разных языках, которые могут сильно отличаться друг от друга. Кроме того, текст может иметь структуру, отличную от чисел, например номера домов и т. д.
  5. Артефакты:Очевидно, что изображения на открытом воздухе намного шумнее, чем удобный сканер.
  6. Место расположения:Некоторые задачи включают обрезку/центрирование текста, в то время как в других текст может находиться в произвольном месте на изображении.

3. Набор данных SVHN

SVHN (набор данных номеров домов для просмотра улиц) — хорошая отправная точка. Как следует из названия, это набор данных о номерах домов, взятых из Google Street View. Задача средней сложности. Цифры бывают разных форм и стилей написания, но каждый номер дома находится в середине изображения, поэтому распознавание не требуется. Разрешение изображений не очень высокое, и их расположение может быть немного странным.

Набор данных SVHN:

 UF LDL Стэнфорд Квота/номер дома…

image.png

4. Номерной знак транспортного средства

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

image.png

OpenALPR — очень мощный инструмент для распознавания номерных знаков разных стран без глубокого обучения.

Этот репозиторий предоставляет реализацию модели CRNN (будет обсуждаться далее) для распознавания корейских номерных знаков.

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

Адрес OpenAIPR:

GitHub.com/open AL PR/op…

Адрес CRNN-Keras:

GitHub.com/Помощь ahdudu1994/…

5. ПРОВЕРКА

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

image.png

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

Руководство:medium.com/@Ах, дайте мне немного масла/Также…

6. Распознавание PDF-файлов

Наиболее распространенным случаем OCR является OCR печати/pdf. Структурированный характер печатных документов упрощает их анализ. Большинство инструментов OCR (например, Tesseract) в основном используются для решения этой задачи с хорошими результатами. Поэтому в этой статье я не буду слишком подробно останавливаться на этой задаче.

Tesseract — это очень известная библиотека распознавания OCR с открытым исходным кодом, а также лучшая библиотека OCR с открытым исходным кодом во всех областях с открытым исходным кодом:

GitHub.com/t-gentle-act-oh…

7. OCR в естественной среде

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

image.png

8. Синтетический текст

SynthText — это не набор данных и даже не задача, но хорошей идеей для повышения эффективности обучения является генерация искусственных данных. Набрасывание случайных символов или слов на изображение выглядит гораздо естественнее любого другого объекта из-за плоскостности текста.

Ранее мы видели генерацию данных для более простых задач, таких как CAPTCHA и номерные знаки. Генерация текста в дикой природе немного сложнее. Задача состоит в рассмотрении информации о глубине изображения. К счастью, SynthText — хорошая работа, которая берет изображения с приведенными выше аннотациями и разумно добавляет слова (из набора данных группы новостей).

image.png

Иллюстрация процесса SynthText: справа вверху — сегментация изображения, справа внизу — данные глубины. Внизу слева — поверхностный анализ изображения, распределенный по изображению на основе текста.

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

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

image.png

9. МНИСТ

Хотя на самом деле это не задача OCR, писать об OCR невозможно, и в ней нет примера Mnist. Самая известная задача компьютерного зрения — это не продуманная задача распознавания текста, так как она состоит только из одного символа (числа) за раз и всего из 10 цифр. Однако это может указывать на то, почему OCR считается простым. Кроме того, в некоторых методах каждая буква будет определяться индивидуально, а затем аналогично модели Mnist (классификации).

image.png

Стратегии

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

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

  • Классические методы компьютерного зрения.
  • Специализированное глубокое обучение.
  • Стандартные методы глубокого обучения (обнаружение).

Разберем каждый метод:

1. Классические методы компьютерного зрения

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

  • На сайте великого Адриана Роузбрука есть множество руководств, таких как этот, этот и другие.
  • StackOverflow также имеет некоторые подобные жемчужины, такие как эта ссылка:

woohoo.py изображение search.com/2017/07/17/…

woohoo.py изображение search.com/2017/07/24/…

woohoo.py image search.com/category/op…

stackoverflow.com/questions/9…

Классические методы CV обычно требуют:

  1. Применяйте фильтры, чтобы персонажи выделялись на фоне.
  2. Примените обнаружение контура, чтобы идентифицировать символы один за другим.
  3. Применение классификации изображений для распознавания символов

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

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

image.png

image.png

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

image.png

image.png

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

2. Специализированные методы глубокого обучения

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

Я проверю здесь исчерпывающие примеры некоторых основных методов и дам очень краткое изложение статей, в которых они представлены. Как всегда, каждая статья начинается со слов «Задача X (распознавание текста) недавно привлекла внимание», а затем подробно описывается ее подход. Внимательное прочтение статьи покажет, что эти методы объединены из предыдущих работ по глубокому обучению/распознаванию текста.

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

Поэтому мы всегда будем отдавать предпочтение статьям с хорошими репозиториями и даже демоверсиями, если это возможно.

10. ВОСТОК

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

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

Еще одним преимуществом является то, что он также был добавлен вopen-CVбиблиотека (начиная с версии 4), так что вы можете легко ее использовать (см. туториал).

woohoo.py изображение search.com/2018/08/20/…

Сеть на самом деле хорошо известнаU-NetВерсия, которую можно использовать для обнаружения объектов, размер которых может различаться. Базовый «стержень» этой сети с прямой связью (как описано в этой статье, см. рисунок ниже) может быть очень…PVANetиспользуется в этой статье, ноopencvреализовать с помощьюResnet. Очевидно, его также можно предварительно обучить (например, с помощьюimagenet). Как и в U-Net, функции извлекаются из разных уровней сети.

image.png

Наконец, сеть допускает два типа выходных повернутых ограничительных рамок: стандартную ограничительную рамку с углом поворота (параметр 2X2 + 1) или «четырехугольник», который представляет собой просто повернутую ограничительную рамку со всеми координатами вершин.

image.png

Если реальные результаты такие, как показано на изображении выше, распознавание текста не требует больших усилий. Однако результаты в реальной жизни не идеальны.

11. КРНН
Convolutional Recurrent Neural Networks — это статья 2015 года, в которой была предложена гибридная (или тройная) сквозная архитектура, направленная на сбор слов в трехэтапном подходе.

Идея такова: первый слой — это стандартная полностью сверточная сеть. Последний слой сети определяется как слой признаков и делится на «столбцы признаков». Посмотрите на изображении ниже, как каждый такой столбец функций представляет определенную часть текста.

image.png

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

image.png

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

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

Со словарем с фиксированным текстом в этой статье достигается высокая точность (> 95%), без этого словаря вероятность успеха иная.

12. STN-net/SEE

SEE — Полуконтролируемое сквозное распознавание текста сцены, работа Кристиана Барци. Он и его коллеги использовали настоящую сквозную стратегию для обнаружения и распознавания текста. Они используют очень слабый надзор (их называют полусупервизируемыми, что имеет другое значение, чем обычно). Потому что они используют только текстовые аннотации (без ограничивающих рамок) для обучения сети. Это позволило им использовать больше данных, но сделало их процесс обучения довольно сложным, и они обсудили различные приемы, чтобы заставить его работать, например, не тренировать изображения с более чем двумя строками текста (по крайней мере, на первом этапе обучения).

Существует более ранняя версия этой статьи под названием STN OCR. В итоговой работе исследователи улучшили свой метод и представление, кроме того, они сделали больший акцент на универсальности своего метода благодаря высокому качеству результатов.

image.png

Название STN-OCR подразумевает стратегию использования пространственного преобразователя (=STN, не связанного с недавним преобразователем Google).

Они обучают две сети последовательно, где первая сеть (то есть преобразователь) изучает преобразование изображения для вывода более интерпретируемого фрагмента изображения.

Затем еще одна сеть прямой связи с LSTM сверху (ну, кажется, мы уже видели ее раньше) для распознавания текста.

Исследование здесь подчеркивает важность использования реснетов (они используются дважды), поскольку это обеспечивает «надежное» распространение на более ранние уровни. Однако сейчас такая практика является обычным явлением.

В любом случае, это интересный способ попробовать.

13. Резюме

Мы можем применять стандартные методы обнаружения глубокого обучения для обнаружения слов, такие как SSD, YOLO и Mask RCNN. Эти модели широко используются для быстрого позиционирования объектов и сканирования символов.Чтобы узнать о конкретных методах использования, вы можете поискать в Baidu или Google, и существует множество доступных онлайн-руководств.

Глубокое обучение Должен сказать, что в настоящее время это мой любимый метод, потому что это «сквозная» философия, в которой вы можете применить мощную модель и с некоторой настройкой параметров решить практически любую проблему.

Однако для классов плотного подобия SSD и другие модели обнаружения сталкиваются с некоторыми проблемами. Из-за того, что моделям глубокого обучения гораздо труднее распознавать цифры и буквы, чем более сложные и сложные объекты, такие как собаки, кошки или люди, им часто не удается достичь требуемой точности.

Бесплатный онлайн-опыт распознавания OCR

Love.Baidu.com/Specialty/OCR/Один…

Статья от Yidian Information Product R&D Team