Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Предоставьте слабовидящим возможность слышать документы с помощью Amazon Textract и Amazon Polly

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

Для лучшего качества посмотрите видео здесь.

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

Этот пост посвящен сервисам искусственного интеллекта AWS. Амазонка Текст и Amazon Polly, которые расширяют возможности людей с ослабленным зрением. Приложение «Прочитай для меня» было разработано слабовидящим Джеком Марчетти.

Обзор решения

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

Следующие Эталонная архитектура, Опубликованной в Центр архитектуры AWS показывает рабочий процесс пользователя, делающего снимок своим телефоном и проигрывающего MP3 контент, найденный в этом документе.

Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Рабочий процесс включает в себя следующие шаги:

  1. Статический контент (HTML, CSS, JavaScript) размещается на АМС Усиление.
  2. Анонимным пользователям предоставляется временный доступ к серверным службам через Амазон Когнито пул идентичности.
  3. Файлы изображений хранятся в Простой сервис хранения Amazon (Amazon S3).
  4. Пользователь делает запрос POST через Шлюз API Amazon к аудиосервису, который проксирует экспресс Шаговые функции AWS рабочий процесс.
  5. Рабочий процесс Step Functions включает следующие шаги:
    1. Амазонка Текст извлекает текст из изображения.
    2. Amazon Comprehend определяет язык текста.
    3. Если целевой язык отличается от обнаруженного языка, Amazon Translate переводится на целевой язык.
    4. Amazon Polly создает аудиофайл в качестве вывода, используя текст.
  6. Рабочий процесс AWS Step Functions создает аудиофайл в качестве вывода и сохраняет его в Amazon S3 в формате MP3.
  7. Предварительно подписанный URL-адрес с указанием местоположения аудиофайла, хранящегося в Amazon S3, отправляется обратно в браузер пользователя через шлюз API. Мобильное устройство пользователя воспроизводит аудиофайл, используя предварительно подписанный 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. Нет серверов, которые нужно выделять, и инфраструктуры, которую нужно обслуживать.

Шаблоны архитектуры

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

Serverless

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

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

При создании бессерверных рабочих процессов важно понимать, когда синхронный вызов имеет больше смысла с точки зрения архитектуры и взаимодействия с пользователем, чем асинхронный процесс. В Read For Me мы изначально пошли по асинхронному пути и планировали использовать WebSockets для двунаправленного взаимодействия с внешним интерфейсом. Наш рабочий процесс будет включать в себя шаг, чтобы найти идентификатор соединения, связанный с рабочим процессом Step Functions, и после завершения предупредить внешний интерфейс. Для получения дополнительной информации об этом процессе см. От опроса к отправке: преобразование API с помощью REST API Amazon API Gateway и WebSockets.

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

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

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

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

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

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

В визуальном дизайнере Step Functions мы находим ключ перевода и настраиваем соответствующие правила.

Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

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

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

Анализировать идентификатор

В предыдущем разделе мы обсудили архитектурные шаблоны для обработки загруженного изображения и создания из него файла MP3. Прочитать вам документ — отличный первый шаг, но что, если вы хотите узнать только что-то конкретное, не зачитывая его целиком? Например, вам нужно заполнить онлайн-форму и указать свой государственный идентификатор или номер паспорта или, возможно, дату истечения срока его действия. Затем вы должны сфотографировать свое удостоверение личности и, пока он будет прочитан вам, дождаться этой конкретной части. В качестве альтернативы вы можете использовать Analyze ID.

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

Вы можете продемонстрировать функцию Analyze ID на readforme.io/анализ.

Дополнительные возможности Полли

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

Заключение

В этом посте мы обсудили, как использовать многочисленные сервисы AWS, в том числе ИИ и бессерверные, для помощи слабовидящим. Вы можете узнать больше о проекте Read For Me и использовать его, посетив readforme.io. Вы также можете найти примеры Amazon Textract на Репо GitHub. Чтобы узнать больше об Analyze ID, ознакомьтесь с Объявление о поддержке извлечения данных из документов, удостоверяющих личность, с помощью Amazon Textract.

Исходный код этого проекта будет открыт и скоро будет добавлен в общедоступный GitHub AWS.


Об авторах

Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джек Маркетти является старшим архитектором решений в AWS. Имея опыт разработки программного обеспечения, Джек в первую очередь помогает клиентам внедрять бессерверные архитектуры, управляемые событиями. Он создал свое первое распределенное облачное приложение в 2013 году после посещения второй конференции AWS re:Invent, и с тех пор увлекся им. До прихода в AWS Джек провел большую часть своей карьеры в рекламном агентстве, занимаясь созданием площадей для некоторых из крупнейших мировых брендов. Джек официально слеп и проживает в Чикаго со своей женой Эрин и кошкой Мину. Он также является сценаристом и режиссером, специализирующимся на рождественских фильмах и фильмах ужасов. Посмотреть фильмографию Джека можно на его IMDb стр.

Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Алак Эсварадасс работает архитектором решений в AWS в Чикаго, штат Иллинойс. Она увлечена тем, что помогает клиентам разрабатывать облачные архитектуры с использованием сервисов AWS для решения бизнес-задач. Она имеет степень магистра в области вычислительной техники. До прихода в AWS она работала в различных организациях здравоохранения и обладает обширным опытом проектирования сложных систем, технологических инноваций и исследований. Она тусуется со своими дочерьми и исследует природу в свободное время.

Предоставьте возможность слабовидящим людям слышать документы с помощью Amazon Textract и Amazon Polly PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Свагат Кулкарни является старшим архитектором решений в AWS и энтузиастом AI/ML. Он увлечен решением реальных проблем клиентов с помощью облачных сервисов и машинного обучения. Вне работы Свагат любит путешествовать, читать и медитировать.

Отметка времени:

Больше от Машинное обучение AWS