Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Permita que las personas con problemas de visión escuchen los documentos con Amazon Textract y Amazon Polly

En la conferencia AWS re:Invent de 2021 en Las Vegas, demostramos Leer para mí en la Feria de constructores de AWS, un sitio web que ayuda a las personas con discapacidades visuales a escuchar documentos.

Para una mejor calidad, ver el video esta página.

La tecnología adaptativa y las funciones de accesibilidad suelen ser costosas, si es que están disponibles. Los audiolibros ayudan a las personas con discapacidad visual a leer. La descripción de audio hace que las películas sean accesibles. Pero, ¿qué haces cuando el contenido aún no está digitalizado?

Esta publicación se centra en los servicios de IA de AWS Amazon Textil y Amazon Polly, que empoderan a las personas con problemas de visión. Read For Me fue desarrollado conjuntamente por Jack Marchetti, quien tiene una discapacidad visual.

Resumen de la solución

A través de una arquitectura sin servidor basada en eventos y una combinación de múltiples servicios de IA, podemos crear archivos de audio con un sonido natural en varios idiomas a partir de una imagen de un documento o cualquier imagen con texto. Por ejemplo, una carta del IRS, una tarjeta navideña de la familia o incluso los títulos de apertura de una película.

Las siguientes Arquitectura de referencia, Publicado en el Centro de arquitectura de AWS muestra el flujo de trabajo de un usuario que toma una foto con su teléfono y reproduce un MP3 del contenido que se encuentra en ese documento.

Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El flujo de trabajo incluye los siguientes pasos:

  1. El contenido estático (HTML, CSS, JavaScript) está alojado en AWS amplificar.
  2. Se otorga acceso temporal a los usuarios anónimos a los servicios de back-end a través de un Cognito Amazonas grupo de identidad.
  3. Los archivos de imagen se almacenan en Servicio de almacenamiento simple de Amazon (Amazon S3).
  4. Un usuario realiza una solicitud POST a través de Puerta de enlace API de Amazon al servicio de audio, que representa a un expreso Funciones de paso de AWS flujo de trabajo.
  5. El flujo de trabajo de Step Functions incluye los siguientes pasos:
    1. Amazon Textil extrae texto de la imagen.
    2. Amazon Comprehend detecta el idioma del texto.
    3. Si el idioma de destino difiere del idioma detectado, Traductor de Amazon traduce al idioma de destino.
    4. Amazon Polly crea un archivo de audio como salida usando el texto.
  6. El flujo de trabajo de AWS Step Functions crea un archivo de audio como salida y lo almacena en Amazon S3 en formato MP3.
  7. Se envía una URL prefirmada con la ubicación del archivo de audio almacenado en Amazon S3 al navegador del usuario a través de API Gateway. El dispositivo móvil del usuario reproduce el archivo de audio utilizando la URL prefirmada.

En las siguientes secciones, analizamos los motivos por los que elegimos los servicios específicos, el patrón de arquitectura y las características del servicio para esta solución.

Servicios de AI de AWS

Varios servicios de IA están conectados entre sí para alimentar Read For Me:

  • Amazon Textract identifica el texto en la imagen cargada.
  • Amazon Comprehend determina el idioma.
  • Si el usuario elige un idioma hablado diferente al idioma de la imagen, lo traducimos con Amazon Translate.
  • Amazon Polly crea el archivo MP3. Aprovechamos el motor neuronal de Amazon Polly, que crea una grabación de audio más natural y real.

Uno de los principales beneficios de usar estos servicios de IA es la facilidad de adopción que requiere poca o ninguna experiencia básica de aprendizaje automático. Los servicios exponen API que los clientes pueden invocar utilizando SDK disponibles en múltiples lenguajes de programación, como Python y Java.

Con Read For Me, escribimos la base AWS Lambda funciona en Python.

AWS SDK para Python (Boto3)

El AWS SDK para Python (Boto3) simplifica la interacción con los servicios de AWS. Por ejemplo, las siguientes líneas de código de Python devuelven el texto que se encuentra en la imagen o el documento que proporciona:

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

Todo el código de Python se ejecuta dentro de funciones individuales de Lambda. No hay servidores que aprovisionar ni infraestructura que mantener.

Patrones de arquitectura

En esta sección, analizamos los diferentes patrones de arquitectura utilizados en la solución.

Sin servidor

Implementamos una arquitectura sin servidor por dos razones principales: velocidad de construcción y costo. Sin hardware subyacente para mantener o infraestructura para implementar, nos enfocamos completamente en el código de lógica de negocios y nada más. Esto nos permitió tener un prototipo en funcionamiento en cuestión de días. Si los usuarios no cargan imágenes ni escuchan grabaciones de forma activa, no se ejecuta nada y, por lo tanto, no se incurre en costos fuera del almacenamiento. Una regla de administración del ciclo de vida de S3 elimina las imágenes cargadas y los archivos MP3 después de 1 día, por lo que los costos de almacenamiento son bajos.

Flujo de trabajo síncrono

Cuando crea flujos de trabajo sin servidor, es importante comprender cuándo una llamada síncrona tiene más sentido desde la arquitectura y la experiencia del usuario que un proceso asíncrono. Con Read For Me, inicialmente seguimos el camino asincrónico y planeamos usar WebSockets para comunicarnos bidireccionalmente con el front-end. Nuestro flujo de trabajo incluiría un paso para encontrar el ID de conexión asociado con el flujo de trabajo de Step Functions y, al finalizar, alertar al front-end. Para obtener más información sobre este proceso, consulte De la encuesta al envío: Transforme las API con las API REST y WebSockets de Amazon API Gateway.

Finalmente, decidimos no hacer esto y usamos funciones de pasos rápidos que son síncronas. Los usuarios entienden que el procesamiento de una imagen no será instantáneo, pero también saben que no tomará 30 segundos o un minuto. Estábamos en un espacio donde unos segundos eran satisfactorios para el usuario final y no necesitábamos el beneficio de WebSockets. Esto simplificó el flujo de trabajo en general.

Flujo de trabajo de Express Step Functions

La capacidad de dividir su código en funciones aisladas más pequeñas permite un control detallado, un mantenimiento más fácil y la capacidad de escalar con mayor precisión. Por ejemplo, si determinamos que la función Lambda que activó a Amazon Polly para crear el archivo de audio se estaba ejecutando más lentamente que la función que determinó el idioma, podríamos escalar verticalmente esa función, agregando más memoria, sin tener que hacerlo con las demás. De manera similar, limita el radio de explosión de lo que su función Lambda puede hacer o acceder cuando limita su alcance y alcance.

Uno de los beneficios de orquestar su flujo de trabajo con Step Functions es la capacidad de introducir la lógica del flujo de decisiones sin tener que escribir ningún código.

Nuestro flujo de trabajo de Step Functions no es complejo. Es lineal hasta el paso de traducción. Si no necesitamos llamar a una función Lambda de traducción, nos cuesta menos y una experiencia más rápida para el usuario. Podemos usar el diseñador visual en la consola de Step Functions para encontrar la clave específica en la carga útil de entrada y, si está presente, llamar a una función sobre la otra usando JSONPath. Por ejemplo, nuestra carga útil incluye una clave llamada traducir:

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

Dentro del diseñador visual de Step Functions, encontramos la clave de traducción y configuramos las reglas para que coincidan.

Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Arquitectura sin cabeza

Amplify aloja el código front-end. El front-end está escrito en React y el código fuente está registrado Compromiso de código de AWS. Amplify resuelve algunos problemas para los usuarios que intentan implementar y administrar sitios web estáticos. Si estaba haciendo esto manualmente (usando un depósito S3 configurado para alojamiento de sitios web estáticos y frente a eso con Amazon CloudFront), tendría que hacer caducar la memoria caché usted mismo cada vez que hiciera implementaciones. También tendría que redactar su propia canalización de CI/CD. Amplify se encarga de esto por ti.

Esto permite una arquitectura sin cabeza, donde el código front-end se desacopla del back-end y cada capa se puede administrar y escalar independientemente de la otra.

Analizar identificación

En la sección anterior, discutimos los patrones de arquitectura para procesar la imagen cargada y crear un archivo MP3 a partir de ella. La lectura de un documento es un gran primer paso, pero ¿qué sucede si solo desea saber algo específico sin que se le lea todo? Por ejemplo, debe completar un formulario en línea y proporcionar su identificación estatal o número de pasaporte, o tal vez su fecha de vencimiento. Luego, debe tomar una foto de su identificación y, mientras se la leen, espere esa parte específica. Alternativamente, puede usar Analizar ID.

Analyze ID es una función de Amazon Textract que le permite consultar documentos. Read For Me contiene un menú desplegable donde puede solicitar específicamente la fecha de vencimiento, la fecha de emisión o el número de documento. Puede usar el mismo flujo de trabajo para crear un archivo MP3 que proporcione una respuesta a su pregunta específica.

Puede hacer una demostración de la función Analizar ID en readforme.io/analyze.

Características adicionales de Polly

  • Read For Me ofrece múltiples voces neuronales que utilizan diferentes idiomas y dialectos. Tenga en cuenta que hay varios otros voces puede elegir, que no implementamos. Cuando hay una nueva voz disponible, una actualización del código de front-end y una función lambda es todo lo que se necesita para aprovecharla.
  • El servicio Polly también ofrece otras opciones que aún no hemos incluido en Read For Me. Esos incluyen ajustar el velocidad de las voces y comillas.

Conclusión

En esta publicación, discutimos cómo usar numerosos servicios de AWS, incluida la IA y sin servidor, para ayudar a las personas con discapacidades visuales. Puede obtener más información sobre el proyecto Read For Me y usarlo visitando readforme.io. También puede encontrar ejemplos de Amazon Textract en el Repositorio GitHub. Para obtener más información sobre Analyze ID, consulte Anuncio de compatibilidad para extraer datos de documentos de identidad mediante Amazon Textract.

El código fuente de este proyecto será de código abierto y pronto se agregará al GitHub público de AWS.


Acerca de los autores

Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Jack Marchetti es arquitecto sénior de soluciones en AWS. Con experiencia en ingeniería de software, Jack se enfoca principalmente en ayudar a los clientes a implementar arquitecturas sin servidor y basadas en eventos. Desarrolló su primera aplicación distribuida basada en la nube en 2013 después de asistir a la segunda conferencia AWS re:Invent y ha estado enganchado desde entonces. Antes de AWS, Jack pasó la mayor parte de su carrera en el espacio de las agencias de publicidad creando experiencias para algunas de las marcas más grandes del mundo. Jack es legalmente ciego y reside en Chicago con su esposa Erin y su gato Minou. También es guionista y director con un enfoque principal en películas navideñas y de terror. Ver la filmografía de Jack en su IMDb .

Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Alak Eswaradass es arquitecto de soluciones en AWS con sede en Chicago, Illinois. Le apasiona ayudar a los clientes a diseñar arquitecturas en la nube utilizando los servicios de AWS para resolver los desafíos comerciales. Tiene una maestría en ingeniería informática. Antes de unirse a AWS, trabajó para diferentes organizaciones de atención médica y tiene una amplia experiencia en la arquitectura de sistemas complejos, la innovación tecnológica y la investigación. Sale con sus hijas y explora el aire libre en su tiempo libre.

Permita que las personas con discapacidades visuales escuchen documentos utilizando Amazon Textract y Amazon Polly PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Swagat Kulkarni es un arquitecto de soluciones sénior en AWS y un entusiasta de AI/ML. Le apasiona resolver problemas del mundo real para clientes con servicios nativos en la nube y aprendizaje automático. Fuera del trabajo, a Swagat le gusta viajar, leer y meditar.

Sello de tiempo:

Mas de Aprendizaje automático de AWS