Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Permettre aux malvoyants d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly

Lors de la conférence AWS re:Invent 2021 à Las Vegas, nous avons fait une démonstration Lis pour moi à l'AWS Builders Fair, un site Web qui aide les malvoyants à entendre des documents.

Pour une meilleure qualité, regardez la vidéo ici.

La technologie adaptative et les fonctionnalités d'accessibilité sont souvent coûteuses, si tant est qu'elles soient disponibles. Les livres audio aident les malvoyants à lire. La description audio rend les films accessibles. Mais que faire lorsque le contenu n'est pas déjà numérisé ?

Cet article se concentre sur les services AWS AI Extrait d'Amazon ainsi que Amazon Polly, qui autonomisent les personnes malvoyantes. Read For Me a été co-développé par Jack Marchetti, qui est malvoyant.

Vue d'ensemble de la solution

Grâce à une architecture sans serveur pilotée par les événements et à une combinaison de plusieurs services d'IA, nous pouvons créer des fichiers audio au son naturel dans plusieurs langues à partir d'une image d'un document ou de toute image avec du texte. Par exemple, une lettre de l'IRS, une carte de vœux de la famille ou même les premiers titres d'un film.

Architecture de référence, publié dans le Centre d'architecture AWS montre le flux de travail d'un utilisateur prenant une photo avec son téléphone et lisant un MP3 du contenu trouvé dans ce document.

Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le workflow comprend les étapes suivantes:

  1. Le contenu statique (HTML, CSS, JavaScript) est hébergé sur AWS Amplifier.
  2. Un accès temporaire est accordé aux utilisateurs anonymes aux services backend via un Amazon Cognito bassin d'identité.
  3. Les fichiers image sont stockés dans Service de stockage simple Amazon (Amazon S3).
  4. Un utilisateur effectue une requête POST via Passerelle d'API Amazon au service audio, qui se substitue à un service express Fonctions d'étape AWS flux de travail.
  5. Le workflow Step Functions comprend les étapes suivantes :
    1. Extrait d'Amazon extrait le texte de l'image.
    2. Amazon comprendre détecte la langue du texte.
    3. Si la langue cible diffère de la langue détectée, Amazon Traduire traduit dans la langue cible.
    4. Amazon Polly crée un fichier audio en sortie à l'aide du texte.
  6. Le flux de travail AWS Step Functions crée un fichier audio en sortie et le stocke dans Amazon S3 au format MP3.
  7. Une URL pré-signée avec l'emplacement du fichier audio stocké dans Amazon S3 est renvoyée au navigateur de l'utilisateur via API Gateway. L'appareil mobile de l'utilisateur lit le fichier audio à l'aide de l'URL pré-signée.

Dans les sections suivantes, nous abordons les raisons pour lesquelles nous avons choisi des services, un modèle d'architecture et des fonctionnalités de service spécifiques pour cette solution.

Services AWS AI

Plusieurs services d'intelligence artificielle sont connectés ensemble pour alimenter Read For Me :

  • Amazon Textract identifie le texte dans l'image téléchargée.
  • Amazon Comprehend détermine la langue.
  • Si l'utilisateur choisit une langue parlée différente de celle de l'image, nous la traduisons à l'aide d'Amazon Translate.
  • Amazon Polly crée le fichier MP3. Nous profitons du moteur neuronal Amazon Polly, qui crée un enregistrement audio plus naturel et plus réaliste.

L'un des principaux avantages de l'utilisation de ces services d'IA est la facilité d'adoption avec peu ou pas d'expérience de base en apprentissage automatique requise. Les services exposent des API que les clients peuvent invoquer à l'aide de SDK mis à disposition dans plusieurs langages de programmation, tels que Python et Java.

Avec Read For Me, nous avons écrit le sous-jacent AWS Lambda fonctions en Python.

AWS SDK pour Python (Boto3)

La AWS SDK pour Python (Boto3) simplifie l'interaction avec les services AWS. Par exemple, les lignes de code Python suivantes renvoient le texte trouvé dans l'image ou le document que vous fournissez :

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

Tout le code Python est exécuté dans des fonctions Lambda individuelles. Il n'y a aucun serveur à provisionner et aucune infrastructure à maintenir.

Modèles architecturaux

Dans cette section, nous abordons les différents modèles d'architecture utilisés dans la solution.

Sans serveur

Nous avons mis en place une architecture sans serveur pour deux raisons principales : la rapidité de construction et le coût. Sans matériel sous-jacent à maintenir ni infrastructure à déployer, nous nous sommes concentrés entièrement sur le code de la logique métier et rien d'autre. Cela nous a permis de mettre en place un prototype fonctionnel en quelques jours. Si les utilisateurs ne téléchargent pas activement des photos et n'écoutent pas d'enregistrements, rien ne fonctionne et, par conséquent, rien n'entraîne de coûts en dehors du stockage. Une règle de gestion du cycle de vie S3 supprime les images téléchargées et les fichiers MP3 après 1 jour, de sorte que les coûts de stockage sont faibles.

Flux de travail synchrone

Lorsque vous créez des flux de travail sans serveur, il est important de comprendre quand un appel synchrone est plus logique d'après l'architecture et l'expérience utilisateur qu'un processus asynchrone. Avec Read For Me, nous avons initialement emprunté la voie asynchrone et prévu d'utiliser WebSockets pour communiquer de manière bidirectionnelle avec le frontal. Notre flux de travail comprendrait une étape pour trouver l'ID de connexion associé au flux de travail Step Functions et, une fois terminé, alerter le frontal. Pour plus d'informations sur ce processus, reportez-vous à Du sondage au push : Transformer les API à l'aide des API REST et des WebSockets d'Amazon API Gateway.

Nous avons finalement choisi de ne pas le faire et avons utilisé des fonctions d'étape express qui sont synchrones. Les utilisateurs comprennent que le traitement d'une image ne sera pas instantané, mais savent également que cela ne prendra pas 30 secondes ou une minute. Nous étions dans un espace où quelques secondes étaient satisfaisantes pour l'utilisateur final et n'avaient pas besoin des avantages de WebSockets. Cela a simplifié le flux de travail dans son ensemble.

Flux de travail Express Step Functions

La possibilité de décomposer votre code en fonctions plus petites et isolées permet un contrôle précis, une maintenance plus facile et la possibilité d'évoluer avec plus de précision. Par exemple, si nous déterminions que la fonction Lambda qui a déclenché Amazon Polly pour créer le fichier audio s'exécutait plus lentement que la fonction qui a déterminé la langue, nous pourrions dimensionner verticalement cette fonction, en ajoutant plus de mémoire, sans avoir à le faire pour les autres. De même, vous limitez le rayon d'action de ce que votre fonction Lambda peut faire ou accéder lorsque vous limitez sa portée et sa portée.

L'un des avantages de l'orchestration de votre flux de travail avec Step Functions est la possibilité d'introduire une logique de flux de décision sans avoir à écrire de code.

Notre flux de travail Step Functions n'est pas complexe. C'est linéaire jusqu'à l'étape de traduction. Si nous n'avons pas besoin d'appeler une fonction Lambda de traduction, cela nous coûte moins cher et une expérience plus rapide pour l'utilisateur. Nous pouvons utiliser le concepteur visuel sur la console Step Functions pour trouver la clé spécifique dans la charge utile d'entrée et, si elle est présente, appeler une fonction plutôt qu'une autre à l'aide de JSONPath. Par exemple, notre charge utile inclut une clé appelée translate :

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

Dans le concepteur visuel Step Functions, nous trouvons la clé de traduction et définissons les règles correspondantes.

Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Architecture sans tête

Amplify héberge le code frontal. Le front-end est écrit en React et le code source est archivé dans Code AWSCommit. Amplify résout quelques problèmes pour les utilisateurs essayant de déployer et de gérer des sites Web statiques. Si vous faisiez cela manuellement (en utilisant un compartiment S3 configuré pour l'hébergement de sites Web statiques et en le faisant face avec Amazon CloudFront), vous devrez faire expirer le cache vous-même chaque fois que vous effectuerez des déploiements. Vous devrez également rédiger votre propre pipeline CI/CD. Amplify gère cela pour vous.

Cela permet une architecture sans tête, où le code frontal est découplé du backend et chaque couche peut être gérée et mise à l'échelle indépendamment de l'autre.

Analyser l'ID

Dans la section précédente, nous avons discuté des modèles d'architecture pour traiter l'image téléchargée et créer un fichier MP3 à partir de celle-ci. Se faire relire un document est une excellente première étape, mais que se passe-t-il si vous voulez seulement savoir quelque chose de spécifique sans que tout vous soit relu ? Par exemple, vous devez remplir un formulaire en ligne et fournir votre carte d'identité ou votre numéro de passeport, ou peut-être sa date d'expiration. Vous devez ensuite prendre une photo de votre pièce d'identité et, pendant qu'elle vous est lue, attendre cette partie spécifique. Alternativement, vous pouvez utiliser Analyze ID.

Analyze ID est une fonctionnalité d'Amazon Textract qui vous permet d'interroger des documents. Read For Me contient un menu déroulant dans lequel vous pouvez demander spécifiquement la date d'expiration, la date d'émission ou le numéro de document. Vous pouvez utiliser le même flux de travail pour créer un fichier MP3 qui fournit une réponse à votre question spécifique.

Vous pouvez faire une démonstration de la fonction Analyser l'ID sur readforme.io/analyser.

Fonctionnalités supplémentaires de Polly

  • Read For Me propose plusieurs voix neurales utilisant différentes langues et dialectes. Notez qu'il existe plusieurs autres voix vous pouvez choisir, que nous n'avons pas mis en œuvre. Lorsqu'une nouvelle voix est disponible, une mise à jour du code frontal et une fonction lambda suffisent pour en profiter.
  • Le service Polly propose également d'autres options que nous n'avons pas encore incluses dans Read For Me. Ceux-ci comprennent l'ajustement de la vitesse des voix ainsi que guillemets.

Conclusion

Dans cet article, nous avons expliqué comment utiliser de nombreux services AWS, y compris l'IA et sans serveur, pour aider les malvoyants. Vous pouvez en savoir plus sur le projet Read For Me et l'utiliser en visitant readforme.io. Vous pouvez également trouver des exemples d'Amazon Textract sur le GitHub repo. Pour en savoir plus sur Analyze ID, consultez Annonce de la prise en charge de l'extraction de données à partir de documents d'identité à l'aide d'Amazon Textract.

Le code source de ce projet sera en open source et sera bientôt ajouté au GitHub public d'AWS.


À propos des auteurs

Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Jack Marchetti est architecte de solutions senior chez AWS. Avec une formation en génie logiciel, Jack se concentre principalement sur l'aide aux clients pour la mise en œuvre d'architectures événementielles sans serveur. Il a créé sa première application distribuée basée sur le cloud en 2013 après avoir assisté à la deuxième conférence AWS re:Invent et est devenu accro depuis. Avant AWS, Jack a passé l'essentiel de sa carrière dans l'espace des agences de publicité, créant des expériences pour certaines des plus grandes marques au monde. Jack est légalement aveugle et réside à Chicago avec sa femme Erin et son chat Minou. Il est également scénariste et réalisateur et se concentre principalement sur les films de Noël et l'horreur. Voir la filmographie de Jack à son IMDb .

Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Alak Eswaradas est un architecte de solutions chez AWS basé à Chicago, Illinois. Elle se passionne pour aider les clients à concevoir des architectures cloud en utilisant les services AWS pour résoudre les défis commerciaux. Elle est titulaire d'une maîtrise en génie informatique. Avant de rejoindre AWS, elle a travaillé pour différentes organisations de soins de santé et possède une expérience approfondie de l'architecture de systèmes complexes, de l'innovation technologique et de la recherche. Elle traîne avec ses filles et explore le plein air pendant son temps libre.

Permettez aux personnes malvoyantes d'entendre des documents à l'aide d'Amazon Textract et d'Amazon Polly PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Swagat Kulkarni est un architecte de solutions senior chez AWS et un passionné d'IA/ML. Il est passionné par la résolution de problèmes réels pour les clients avec des services cloud natifs et l'apprentissage automatique. En dehors du travail, Swagat aime voyager, lire et méditer.

Horodatage:

Plus de Apprentissage automatique AWS