Розпізнавання тексту з відеопотоку: майбутнє мобільного OCR

останнім часом ми досить часто розповідаємо в блозі про наших технологіях розпізнавання, які працюють на мобільних пристроях і розпізнають фотографії, зроблені камерами цих пристроїв. Зараз ми рухаємося далі і вчимося працювати не з фотографіями, а з відеопотоком. І сьогодні ми хочемо розповісти вам трохи детальніше, що це означає і де в повсякденному житті може знадобитися розпізнавання тексту з відеопотоку.

до Речі, зараз ми розширюємо команду, яка займається створенням продукту для розпізнавання тексту з відеопотоку на смартфонах. Якщо ви Android або iOS-розробник з досвідом написання високонавантажених додатків і у вас є бажання розробляти нові технології разом з нами, поспішайте відгукнутися на вакансії.

Про відеопотоці і розпізнаванні
Для початку скажемо, з яким саме відеопотоком ми працюємо. Відеопотік – це послідовність кадрів, одержуваних з камери пристрою, простіше кажучи, те, що ми бачимо на екрані смартфона, коли запускаємо стандартний додаток «Камера».



Фотографія фрагмента меню



Кадри з відеопотоку з фрагментом меню

Якщо порівняти окремий кадр відеопотоку з фотографією, видно, що його якість нижче: дозвіл (dpi) кадру менше, зображення частіше расфокусировано і змазано, також присутній цифровий шум. Наявність таких дефектів зовсім не дивно, адже ми ж не роботи, щоб тримати телефон у руках абсолютно нерухомо :), крім того, позначається недостатнє висвітлення через відсутність роботи спалаху. Це робить задачу розпізнавання відеопотоку значно складніше, ніж розпізнавання фотографії, однак переваги, які можна отримати в результаті, варті того, щоб витрачати сили на її рішення:

Підвищення якості розпізнавання
Ми вже розповідали про наших технологіях, дозволяють швидко перевірити придатність фотографії для розпізнавання. У випадку з відеопотоком можна піти ще далі і відразу вибирати з потоку зображення, найбільш придатні для обробки. Так, багато кадри за якістю гірше фотографії, але деякі можуть вийти і краще, є з чого вибрати

Крім того, значна частина помилок в результатах розпізнавання відбувається з-за випадкового шуму, відблисків, розфокусування і т. п. Ці дефекти не повторюються від кадру до кадру, тому символ, невірно розпізнаний на одному кадрі, може бути правильно розпізнано на наступному. Агрегуючи таким чином текст з декількох кадрів, можна підвищити якість і досягти навіть кращих результатів розпізнавання, ніж для фото.

Більш зручні програми
Розпізнавання з відеопотоку не вимагає майже ніяких дій. Немає необхідності натискати на кнопку «сфотографувати», стежити за тим, щоб весь потрібний текст на фотографії був у фокусі. Достатньо просто навести камеру на текст, і розпізнавання розпочнеться автоматично. Крім того, оскільки обробка тексту виконується прямо «за кадром», результати можна відображати моментально, наприклад, поверх вихідного тексту (щоб спростити завдання верифікації результатів)



або, навпаки, в залежності від розпізнаного тексту доповнювати кадр спеціальними малюнками, написами і т. п., тобто створювати так звані програми доповненої реальності. Крім того, при розпізнаванні з відеопотоку зображення нікуди не зберігається і не забиває пам'ять пристрою.

Все це приносить радість користувача і робить програму зручним.

Чим може бути корисне розпізнавання відеопотоку?
В наших майбутніх статтях ми детальніше розповімо про те, як краще працювати з відеопотоком, а поки давайте подивимося, де можна застосувати цю технологію.

Альтернатива клавіатурі
Один з найбільш очевидних сценаріїв – заміна вводу тексту з клавіатури ввести з відеопотоку. Напевно, всі бували в ситуації, коли в руках є буклет, на якому написаний потрібний електронну адресу, і доводиться вручну вбивати його в рядок браузера. Набагато зручніше і швидше було б просто навести на неї камеру телефону.

Щоб забезпечити обробку «у реальному часі» та встигнути за що постійно змінюються сценами у видошукачі, розпізнавати потрібно дуже швидко. Щоб цього досягти, доводиться вдаватися до безлічі різноманітних засобів. По-перше, задіяти всі ядра процесора пристрою, використовуючи паралельне розпізнавання. При цьому можна як паралельно розпізнавати кілька кадрів, знятих з невеликою затримкою, так і розбивати обробку одного кадру на кілька етапів, виконуваних у різних робочих потоках. Також для збільшення швидкості обробки доводиться використовувати різні засоби апаратного прискорення, доступні на пристрої.

Миттєвий перекладач
Ще одне завдання – переклад. Приїжджаючи в екзотичну країну, буває складно зорієнтуватися на вулицях і в ресторанах, оскільки всі написи на вказівниках, меню і т. д. на невідомому мовою, а місцеві жителі можуть просто не говорити по-англійськи. Наприклад, ось що можна побачити на вулицях і в ресторанах китайського міста:



Програма-перекладач в такій ситуації, звичайно, може допомогти, але тільки в тому випадку, якщо правильно набрати усі потрібні ієрогліфи. Зручніше, якщо додаток дозволить вам сфотографувати текст, а потім автоматично розпізнає і переведе його. Однак помістити все меню ресторану на одну фотографію буде проблематично. Доведеться фотографувати кілька разів. А от використовуючи розпізнавання тексту з відеопотоку, можна переводити миттєво: користувач наводить камеру на текст, додаток за кадром розпізнає і переводить, а на екрані підміняє вихідний текст, його переклад, ось так:



Тобто вийде така своєрідна доповнена реальність, в якій все написано зрозумілою вам мовою.
Потреба в розпізнаванні та перекладі тексту на оточуючих нас об'єктах (наприклад, на вивісках, які оточені листям дерев; меню, в якому поряд намальовані страви тощо) веде до додаткових складнощів, а саме — до необхідності визначати, де ж на таких кадрах, власне, розташований текст. Використовувані в FineReader методи аналізу бинаризованного зображення, заточені під обробку текстових документів, в даному випадку не підходять. Після бінаризації (переведення в чорно-білий вид) звичайні об'єкти часто стають схожі на текст — наприклад, вікна будівель можуть утворити цілу рядок:





Бинаризованное зображення



Для обробки кадрів загального вигляду доводиться вдаватися до більш складних алгоритмах, використовувати спеціальний класифікатор об'єктів, навчений на пакетах зображень вивісок і вуличних знаків. Класифікатор дозволяє зрозуміти, чи є на зображенні букви і рядки, що відокремлює їх від сміття. Подібний механізм добре описаний в статті.

Data Capture
Ще одна область застосування розпізнавання з відеопотоку – витяг даних з документів (документів, що засвідчують особу, платіжних доручень тощо). В даний час майже всі банки у своїх мобільних додатках пропонують послугу оплати житлово-комунальних платежів. Щоб здійснити такий платіж, зараз доводиться вручну передруковувати з платіжки довгі рядки цифр, в яких легко помилитися (код абонента, номер особового рахунку тощо). А автоматичне розпізнавання потрібних для оплати даних дозволить спростити і прискорити цей процес.

«Розумна камера»
Один з найбільш цікавих сценаріїв можна назвати «розумна камера». Мова йде про звичайному додатку «Камера», яка є на кожному смартфоні, доповненому функціональністю розпізнавання з відеопотоку. При наведенні такої камери на візитну картку, наприклад, вона буде автоматично створювати відповідний контакт у телефонній книзі, для QR-коду – відкривати потрібну посилання в браузері, для запрошення на захід – створювати подію в календарі і т. д. Часто користувачі фотографують якийсь фрагмент документа, якщо їм необхідно запам'ятати написану там інформацію, а «розумна камера автоматично розпізнає текст ще до того, як користувач встигне натиснути на кнопку «сфотографувати» і запропонує зберегти розпізнані дані у вигляді замітки або нагадування.

Але потрібно мати на увазі, що створення «розумної» камери таїть у собі додаткові складності. Постійна робота такого ресурсномісткого процесу, як розпізнавання, буде сильно розряджати батарею пристрою. А практика показує, що розпізнавання знадобиться не більше ніж 10-20% від усього часу використання камери. Все-таки фотографії котиків і селфи популярнішим, ніж фото документів, візиток, штрих кодів разом узяті. Тому необхідно якимось чином регулювати енергоспоживання програми-камери. Наприклад, використовувати спеціальний швидкий детектор тексту, який буде аналізувати кадр і давати відповідь, чи є на ньому текст. А потім вже для кадрів з текстом додатково викликати розпізнавання.

Ось, власне і все, про що хотіли розповісти. Якщо у вас є ідеї, де ще може бути корисна технологія розпізнавання з відеопотоку, давайте обговоримо в коментарях.

Ольга Титова,
департамент продуктів для розробників


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.