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

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

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

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

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

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

Лучший способ

Даже вначале были намеки на лучший способ. Получая степень по когнитивной науке (смесь нейробиологии и информатики) в Johns Hopkins, я помню, как читал статью - вероятно, написанную в 1980-х годах - об использовании нейронных сетей для распознавания текста. По сути, вывод был таким: «Привет, ребята, классно, это действительно может сработать». Он пролежал на полке три десятилетия.

К чести 1980-х годов, в то время нейронные сети были скорее мысленным экспериментом, чем реальным полезным инструментом. Они существовали в основном в теоретических академических статьях, поскольку в то время компьютеры могли реализовывать только самые простые сети. Даже в 2000-х в Хопкинсе мы по-прежнему сосредоточились на перцептронах, обратном распространении и теориях, лежащих в основе НС, но редко придумывали реальный код, не говоря уже о продуктивном использовании.

Революция глубокого обучения

Однако примерно в 2013 году все изменилось. На самом деле никто не знает, почему, но примерно в начале 10-х годов произошел взрыв интереса к глубокому обучению и соответствующий взрыв доступности дешевых вычислительных мощностей для работы все более сложных нейронных сетей. Это было названо революцией глубокого обучения. Прошли те времена, когда были простые перцептроны, которые можно было исследовать и (отчасти) понимать. Были времена сложных сетей с предварительной обработкой входных данных и 100 скрытыми слоями, которые работали на облачных кластерах суперкомпьютеров из орды графических процессоров.

Когда революция в области глубокого обучения охватила мир технологий, OCR стало налажено практически в мгновение ока. Действительно хорошо. Современные нейронные сети и системы OCR, основанные на машинном обучении, такие как Google Vision API, могут читать текст на зернистой фотографии, даже если она крошечная, странным шрифтом, перевернутой или частично скрытой. Он может читать машинописные заметки на обратной стороне фотографии 60-летней давности. Он даже может читать почерк, нацарапанный курсивом перьевой ручкой (да, есть варианты использования этой возможности).

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

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

Перефразируя Linkin Park, в конце концов, это не имеет особого значения. Большинство реальных пользователей не заботятся о том, как работают эти системы. Для пользователя важно только то, как работает система (и, конечно же, сколько она стоит). OCR на основе глубокого обучения отлично работает в обоих случаях.

Глубокое обучение на практике

Так как же на самом деле используются эти системы? В моей компании Gado Images мы использовали их для обработки десятков тысяч отсканированных исторических изображений, извлекая текст из исходных подписей и делая целые каталоги фотографий доступными для поиска. Банки используют их для автоматического извлечения текста из снимка чека с вашего мобильного телефона, что позволяет использовать волшебство удаленного депозита. В более ответственных условиях они используются беспилотными автомобилями для обнаружения и считывания дорожных знаков и предотвращения въезда в деревья. И, конечно же, люди до сих пор используют их для анализа старых добрых документов!

Поначалу OCR может показаться скучным. Технология в той или иной форме существует уже более 100 лет. Чтение текста со страницы не вызывает такого же внутреннего интереса (или фактора жуткости), как распознавание лиц, управление роботами или многие другие способности, которые может выполнять компьютерное зрение. Но хорошее распознавание текста - это невероятно мощная возможность, лежащая в основе многих технологий, которые мы принимаем как должное. Хотите ли вы, чтобы мобильное приложение вашего банка перечисляло ваш чек на 5000 долларов на счет случайного человека или ваша Tesla читала «Медленно: мост вперед» как «Низкие накладные расходы»?

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

Что это значит для меня?

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

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

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