Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Дозвольте людям з вадами зору чути документи за допомогою Amazon Textract і Amazon Polly

На конференції AWS re:Invent 2021 року в Лас-Вегасі ми показали демонстрацію Читайте для мене на AWS Builders Fair — веб-сайті, який допомагає людям із вадами зору почути документи.

Для кращої якості перегляньте відео тут.

Адаптивні технології та функції доступності часто дорогі, якщо вони взагалі доступні. Аудіокниги допомагають читати людям з вадами зору. Аудіоопис робить фільми доступними. Але що робити, якщо вміст ще не оцифрований?

Ця публікація присвячена службам AWS AI Текст Amazon та Амазонка Поллі, що надає можливість людям з порушенням зору. Read For Me було спільно розроблено Джеком Маркетті, який є інвалідом по зору.

Огляд рішення

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

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

Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Робочий процес включає наступні кроки:

  1. Статичний вміст (HTML, CSS, JavaScript) розміщено на AWS Amplify.
  2. Тимчасовий доступ надається анонімним користувачам до серверних служб через an Амазонка Когніто пул ідентичності.
  3. Файли зображень зберігаються в Служба простого зберігання Amazon (Amazon S3).
  4. Користувач робить запит POST через API -шлюз Amazon до аудіосервісу, який передає експрес Функції кроку AWS робочий процес.
  5. Робочий процес «Крокові функції» включає наступні кроки:
    1. Текст Amazon витягує текст із зображення.
    2. «Амазонка» визначає мову тексту.
    3. Якщо цільова мова відрізняється від виявленої мови, Amazon Translate перекладається на цільову мову.
    4. Амазонка Поллі створює аудіофайл як вихідний текст за допомогою тексту.
  6. Робочий процес AWS Step Functions створює аудіофайл як вихідний файл і зберігає його в Amazon S3 у форматі MP3.
  7. Попередньо підписана URL-адреса з розташуванням аудіофайлу, що зберігається в Amazon S3, надсилається назад у браузер користувача через API Gateway. Мобільний пристрій користувача відтворює аудіофайл, використовуючи попередньо підписану URL-адресу.

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

Сервіси AWS AI

Кілька служб штучного інтелекту об’єднані разом для живлення Read For Me:

  • Amazon Textract ідентифікує текст на завантаженому зображенні.
  • Amazon Comprehend визначає мову.
  • Якщо користувач вибирає іншу розмовну мову, ніж мова на зображенні, ми перекладаємо її за допомогою Amazon Translate.
  • Amazon Polly створює файл MP3. Ми використовуємо переваги нейронного механізму Amazon Polly, який створює більш природний, реалістичний аудіозапис.

Однією з головних переваг використання цих служб штучного інтелекту є простота запровадження з невеликим або зовсім відсутнім основним досвідом машинного навчання. Служби відкривають API, які клієнти можуть викликати за допомогою пакетів SDK, доступних на кількох мовах програмування, таких як Python і Java.

З Read For Me ми написали основне AWS Lambda функції в Python.

AWS SDK для Python (Boto3)

Команда AWS SDK для Python (Boto3) спрощує взаємодію зі службами AWS. Наприклад, наступні рядки коду Python повертають текст, знайдений у зображенні або документі, який ви надаєте:

import boto3
client = boto3.client('textract')
response = client.detect_document_text(
Document={ 'S3Object': { 'Bucket': 'bucket-name', 'Name': 's3-key'
}
})
#do something with the response

Весь код Python виконується в окремих функціях Lambda. Немає серверів для надання та інфраструктури для підтримки.

Архітектурні візерунки

У цьому розділі ми обговорюємо різні архітектурні шаблони, використані в рішенні.

Без сервера

Ми впровадили безсерверну архітектуру з двох основних причин: швидкості створення та вартості. Не маючи базового обладнання для підтримки або інфраструктури для розгортання, ми повністю зосередилися на коді бізнес-логіки і ні на чому іншому. Це дозволило нам за лічені дні запустити функціонуючий прототип. Якщо користувачі активно не завантажують зображення та не прослуховують записи, нічого не працює, а отже, нічого не несе витрат за межами сховища. Правило керування життєвим циклом S3 видаляє завантажені зображення та файли MP3 через 1 день, тому витрати на зберігання є низькими.

Синхронний робочий процес

Коли ви створюєте безсерверні робочі процеси, важливо розуміти, коли синхронний виклик має більше сенсу з архітектури та взаємодії з користувачем, ніж асинхронний процес. З Read For Me ми спочатку пішли асинхронним шляхом і планували використовувати WebSockets для двостороннього зв’язку з інтерфейсом. Наш робочий процес включатиме крок, щоб знайти ідентифікатор з’єднання, пов’язаний з робочим процесом «Крокові функції», і по завершенні сповістити інтерфейс. Додаткову інформацію про цей процес див Від опитування до Push: трансформуйте API за допомогою REST API і WebSockets Amazon API Gateway.

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

Робочий процес Express Step Functions

Можливість розбити ваш код на менші, ізольовані функції дає змогу детально контролювати, простіше обслуговування та можливість більш точного масштабування. Наприклад, якщо ми визначили, що функція Lambda, яка ініціювала створення аудіофайлу Amazon Polly, працювала повільніше, ніж функція, яка визначала мову, ми могли б вертикально масштабувати цю функцію, додаючи більше пам’яті, без необхідності робити це для інших. Аналогічно, ви обмежуєте радіус вибуху того, що може робити ваша лямбда-функція або доступ, коли ви обмежуєте її область та охоплення.

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

Наш робочий процес крокових функцій не є складним. Він лінійний до кроку перекладу. Якщо нам не потрібно викликати лямбда-функцію перекладу, це буде для нас меншими витратами та швидше для користувача. Ми можемо використовувати візуальний конструктор на консолі Step Functions, щоб знайти певний ключ у вхідному корисному навантаженні і, якщо він присутній, викликати одну функцію над іншою за допомогою JSONPath. Наприклад, наше корисне навантаження містить ключ під назвою translate:

{ 
extracted_text: "hello world",
target_language: "es",
source_language: "en",
translate: true
}

У візуальному дизайнері Step Functions ми знаходимо ключ перекладу та налаштовуємо правила для відповідності.

Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Безголова архітектура

Amplify розміщує інтерфейсний код. Передня частина написана на React, а вихідний код перевіряється Комісія AWS. Amplify вирішує декілька проблем для користувачів, які намагаються розгорнути статичні веб-сайти та керувати ними. Якщо ви робите це вручну (використовуючи сегмент S3, налаштований для статичного хостингу веб-сайтів і передаючи це за допомогою Amazon CloudFront), щоразу, коли ви робите розгортання, вам доведеться самостійно закривати кеш. Вам також доведеться написати свій власний конвеєр CI/CD. Amplify займається цим за вас.

Це дозволяє створити безголову архітектуру, де інтерфейсний код відокремлений від бекенда, і кожним рівнем можна керувати та масштабувати незалежно від іншого.

Аналізуйте ідентифікатор

У попередньому розділі ми обговорювали шаблони архітектури для обробки завантаженого зображення та створення з нього файлу MP3. Зачитати вам документ — це чудовий перший крок, але що робити, якщо ви хочете знати лише щось конкретне, не зачитуючи повністю? Наприклад, вам потрібно заповнити форму онлайн та вказати свій державний ідентифікаційний номер чи номер паспорта, або, можливо, термін його дії. Потім ви повинні сфотографувати своє посвідчення особи і, зачитуючи його, дочекатися цієї конкретної частини. Крім того, ви можете використовувати Analyze ID.

Analyze ID — це функція Amazon Textract, яка дає змогу запитувати документи. Read For Me містить спадне меню, де ви можете конкретно запитати дату закінчення терміну дії, дату видачі або номер документа. Ви можете використовувати той самий робочий процес для створення файлу MP3, який надає відповідь на ваше конкретне запитання.

Ви можете демонструвати функцію Analyze ID на сторінці readforme.io/analyze.

Додаткові функції Polly

  • Read For Me пропонує кілька нейронних голосів, які використовують різні мови та діалекти. Зауважте, що є кілька інших голосів ви можете вибрати з чого ми не реалізували. Коли доступний новий голос, оновіть інтерфейсний код і лямбда-функцію, щоб скористатися цим.
  • Служба Polly також пропонує інші варіанти, які ми ще не включили в Read For Me. До них відноситься регулювання швидкість голосів та мовленнєві знаки.

Висновок

У цій публікації ми обговорили, як використовувати численні сервіси AWS, у тому числі AI та безсерверні, для допомоги людям із вадами зору. Ви можете дізнатися більше про проект Read For Me та використати його, відвідавши сторінку readforme.io. Ви також можете знайти приклади Amazon Textract на сторінці GitHub репо. Щоб дізнатися більше про Analyze ID, перегляньте Оголошуємо підтримку вилучення даних із документів, що посвідчують особу, за допомогою Amazon Textract.

Вихідний код цього проекту буде з відкритим вихідним кодом і незабаром буде додано до загальнодоступного GitHub AWS.


Про авторів

Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Джек Маркетті є старшим архітектором рішень у AWS. Маючи досвід розробки програмного забезпечення, Джек насамперед зосереджений на допомозі клієнтам впроваджувати безсерверні архітектури, керовані подіями. Свій перший розподілений хмарний додаток він створив у 2013 році, відвідавши другу конференцію AWS re:Invent, і з тих пір був захоплений. До AWS Джек провів основну частину своєї кар’єри у створенні простору для рекламних агентств для деяких із найбільших брендів у світі. Джек юридично сліпий і проживає в Чикаго зі своєю дружиною Ерін і кішкою Міноу. Він також є сценаристом і режисером, який зосереджується на різдвяних фільмах і жахах. Перегляньте фільмографію Джека у нього IMDb стр.

Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Алак Есварадас є архітектором рішень в AWS, що базується в Чикаго, штат Іллінойс. Вона прагне допомагати клієнтам розробляти хмарні архітектури з використанням сервісів AWS для вирішення бізнес-задач. Має ступінь магістра комп’ютерної техніки. До того, як приєднатися до AWS, вона працювала в різних організаціях охорони здоров’я і має глибокий досвід розробки складних систем, технологічних інновацій та досліджень. У вільний час вона гуляє зі своїми дочками та досліджує природу.

Дозвольте людям із вадами зору слухати документи за допомогою Amazon Texttract і Amazon Polly PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Свагат Кулкарні є старшим архітектором рішень у AWS та ентузіастом AI/ML. Він захоплений вирішенням реальних проблем для клієнтів за допомогою хмарних сервісів і машинного навчання. Поза роботою Свагат любить подорожувати, читати та медитувати.

Часова мітка:

Більше від AWS Машинне навчання