Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Consenti agli ipovedenti di ascoltare i documenti utilizzando Amazon Texttract e Amazon Polly

Alla conferenza AWS re:Invent del 2021 a Las Vegas, abbiamo fatto una dimostrazione Leggi per me all'AWS Builders Fair, un sito Web che aiuta gli ipovedenti ad ascoltare i documenti.

Per una migliore qualità, guarda il video qui.

La tecnologia adattiva e le funzionalità di accessibilità sono spesso costose, se disponibili. Gli audiolibri aiutano i non vedenti a leggere. La descrizione audio rende i film accessibili. Ma cosa fai quando il contenuto non è già digitalizzato?

Questo post si concentra sui servizi di intelligenza artificiale di AWS Testo Amazon ed Amazon Polly, che potenziano le persone con problemi di vista. Read For Me è stato co-sviluppato da Jack Marchetti, che è ipovedente.

Panoramica della soluzione

Attraverso un'architettura serverless basata su eventi e una combinazione di più servizi di intelligenza artificiale, possiamo creare file audio dal suono naturale in più lingue da un'immagine di un documento o da qualsiasi immagine con testo. Ad esempio, una lettera dell'IRS, un biglietto di auguri di famiglia o anche i titoli di apertura di un film.

Le seguenti Architettura di riferimento, pubblicato nel Centro di architettura AWS mostra il flusso di lavoro di un utente che scatta una foto con il proprio telefono e riproduce un MP3 del contenuto trovato all'interno di quel documento.

Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Il flusso di lavoro include i seguenti passaggi:

  1. Il contenuto statico (HTML, CSS, JavaScript) è ospitato AWS Amplifica.
  2. L'accesso temporaneo è concesso agli utenti anonimi ai servizi di back-end tramite un Amazzonia Cognito pool di identità.
  3. I file di immagine sono archiviati in Servizio di archiviazione semplice Amazon (Amazon S3).
  4. Un utente effettua una richiesta POST tramite Gateway API Amazon al servizio audio, che fa il proxy di un express Funzioni AWS Step flusso di lavoro.
  5. Il flusso di lavoro di Step Functions include i seguenti passaggi:
    1. Testo Amazon estrae il testo dall'immagine.
    2. Amazon Comprehend rileva la lingua del testo.
    3. Se la lingua di destinazione è diversa dalla lingua rilevata, Amazon Traduttore traduce nella lingua di destinazione.
    4. Amazon Polly crea un file audio come output usando il testo.
  6. Il flusso di lavoro di AWS Step Functions crea un file audio come output e lo archivia in Amazon S3 in formato MP3.
  7. Un URL prefirmato con la posizione del file audio archiviato in Amazon S3 viene rispedito al browser dell'utente tramite API Gateway. Il dispositivo mobile dell'utente riproduce il file audio utilizzando l'URL prefirmato.

Nelle sezioni seguenti verranno illustrati i motivi per cui abbiamo scelto i servizi specifici, il modello di architettura e le funzionalità del servizio per questa soluzione.

Servizi AI AWS

Diversi servizi di intelligenza artificiale sono collegati insieme per alimentare Read For Me:

  • Amazon Texttract identifica il testo nell'immagine caricata.
  • Amazon Comprehend determina la lingua.
  • Se l'utente sceglie una lingua parlata diversa da quella nell'immagine, la traduciamo utilizzando Amazon Translate.
  • Amazon Polly crea il file MP3. Sfruttiamo il motore neurale di Amazon Polly, che crea una registrazione audio più naturale e realistica.

Uno dei principali vantaggi dell'utilizzo di questi servizi di intelligenza artificiale è la facilità di adozione con poca o nessuna esperienza di apprendimento automatico di base richiesta. I servizi espongono le API che i client possono richiamare utilizzando gli SDK resi disponibili in più linguaggi di programmazione, come Python e Java.

Con Read For Me, abbiamo scritto il sottostante AWS Lambda funzioni in Python.

SDK AWS per Python (Boto3)

I SDK AWS per Python (Boto3) semplifica l'interazione con i servizi AWS. Ad esempio, le seguenti righe di codice Python restituiscono il testo trovato nell'immagine o nel documento che fornisci:

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

Tutto il codice Python viene eseguito all'interno delle singole funzioni Lambda. Non ci sono server da fornire e nessuna infrastruttura da mantenere.

Modelli di architettura

In questa sezione, discutiamo i diversi modelli di architettura utilizzati nella soluzione.

serverless

Abbiamo implementato un'architettura serverless per due ragioni principali: velocità di compilazione e costo. Senza hardware sottostante da mantenere o infrastruttura da implementare, ci siamo concentrati interamente sul codice della logica aziendale e nient'altro. Questo ci ha permesso di mettere in funzione un prototipo funzionante in pochi giorni. Se gli utenti non caricano attivamente le immagini e non ascoltano le registrazioni, nulla è in esecuzione e quindi nulla è soggetto a costi al di fuori dello spazio di archiviazione. Una regola di gestione del ciclo di vita S3 elimina le immagini e i file MP3 caricati dopo 1 giorno, quindi i costi di archiviazione sono bassi.

Flusso di lavoro sincrono

Quando crei flussi di lavoro serverless, è importante capire quando una chiamata sincrona ha più senso dall'architettura e dall'esperienza utente rispetto a un processo asincrono. Con Read For Me, inizialmente abbiamo seguito il percorso asincrono e abbiamo pianificato l'utilizzo di WebSocket per comunicare in modo bidirezionale con il front-end. Il nostro flusso di lavoro includerebbe un passaggio per trovare l'ID di connessione associato al flusso di lavoro di Step Functions e, al termine, avvisare il front-end. Per ulteriori informazioni su questo processo, fare riferimento a Da polling a push: trasforma le API utilizzando le API REST e i WebSocket di Amazon API Gateway.

Alla fine abbiamo scelto di non farlo e abbiamo utilizzato funzioni di passaggio rapido che sono sincrone. Gli utenti capiscono che l'elaborazione di un'immagine non sarà istantanea, ma sanno anche che non ci vorranno 30 secondi o un minuto. Ci trovavamo in uno spazio in cui pochi secondi erano soddisfacenti per l'utente finale e non avevano bisogno del vantaggio di WebSocket. Ciò ha semplificato il flusso di lavoro in generale.

Flusso di lavoro di Express Step Functions

La possibilità di suddividere il codice in funzioni più piccole e isolate consente un controllo granulare, una manutenzione più semplice e la possibilità di scalare in modo più accurato. Ad esempio, se determinassimo che la funzione Lambda che ha attivato Amazon Polly per creare il file audio era più lenta della funzione che determinava la lingua, potremmo ridimensionare verticalmente tale funzione, aggiungendo più memoria, senza doverlo fare per le altre. Allo stesso modo, limiti il ​​raggio di esplosione di ciò che la tua funzione Lambda può fare o accedere quando ne limiti la portata e la portata.

Uno dei vantaggi dell'orchestrazione del flusso di lavoro con Step Functions è la possibilità di introdurre la logica del flusso decisionale senza dover scrivere codice.

Il nostro flusso di lavoro di Step Functions non è complesso. È lineare fino alla fase di traduzione. Se non abbiamo bisogno di chiamare una funzione Lambda di traduzione, questo è meno costoso per noi e un'esperienza più veloce per l'utente. Possiamo usare il visual designer sulla console Step Functions per trovare la chiave specifica nel payload di input e, se è presente, chiamare una funzione sull'altra usando JSONPath. Ad esempio, il nostro payload include una chiave chiamata translate:

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

All'interno del visual designer di Step Functions, troviamo la chiave di traduzione e impostiamo le regole da abbinare.

Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Architettura senza testa

Amplifica ospita il codice front-end. Il front-end è scritto in React e il codice sorgente è archiviato AWS CodeCommit. Amplify risolve alcuni problemi per gli utenti che tentano di distribuire e gestire siti Web statici. Se lo stavi facendo manualmente (usando un bucket S3 configurato per l'hosting di siti Web statici e affrontandolo con Amazon CloudFront), dovresti far scadere tu stesso la cache ogni volta che esegui le distribuzioni. Dovresti anche scrivere la tua pipeline CI/CD. Amplify gestisce questo per te.

Ciò consente un'architettura headless, in cui il codice front-end è disaccoppiato dal back-end e ogni livello può essere gestito e ridimensionato indipendentemente dall'altro.

Analizza ID

Nella sezione precedente, abbiamo discusso i modelli di architettura per l'elaborazione dell'immagine caricata e la creazione di un file MP3 da essa. Farti leggere un documento è un ottimo primo passo, ma cosa succede se vuoi solo sapere qualcosa di specifico senza che ti venga riletto tutto? Ad esempio, è necessario compilare un modulo online e fornire l'ID dello stato o il numero di passaporto, o forse la data di scadenza. Devi quindi scattare una foto del tuo ID e, mentre te lo fa leggere, attendere quella parte specifica. In alternativa, puoi utilizzare Analizza ID.

Analizza ID è una funzionalità di Amazon Texttract che ti consente di eseguire query sui documenti. Read For Me contiene un menu a discesa in cui è possibile richiedere specificatamente la data di scadenza, la data di emissione o il numero del documento. Puoi utilizzare lo stesso flusso di lavoro per creare un file MP3 che fornisce una risposta alla tua domanda specifica.

Puoi provare la funzione Analizza ID su readforme.io/analyze.

Funzionalità Polly aggiuntive

  • Read For Me offre più voci neurali che utilizzano lingue e dialetti diversi. Nota che ce ne sono molti altri voci puoi scegliere, cosa che non abbiamo implementato. Quando è disponibile una nuova voce, per trarne vantaggio basta un aggiornamento del codice front-end e una funzione lambda.
  • Il servizio Polly offre anche altre opzioni che dobbiamo ancora includere in Read For Me. Quelli includono la regolazione del velocità delle voci ed segni di discorso.

Conclusione

In questo post, abbiamo discusso di come utilizzare numerosi servizi AWS, inclusi AI e serverless, per aiutare i non vedenti. Puoi saperne di più sul progetto Read For Me e utilizzarlo visitando readforme.io. Puoi anche trovare esempi di Amazon Texttract su Repository GitHub. Per saperne di più su Analizza ID, controlla Annuncio del supporto per l'estrazione di dati dai documenti di identità tramite Amazon Textract.

Il codice sorgente per questo progetto sarà open source e presto aggiunto al GitHub pubblico di AWS.


Informazioni sugli autori

Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Jack Marchetti è un architetto di soluzioni senior presso AWS. Con un background in ingegneria del software, Jack si concentra principalmente sull'aiutare i clienti a implementare architetture serverless basate su eventi. Ha creato la sua prima applicazione distribuita basata su cloud nel 2013 dopo aver partecipato alla seconda conferenza AWS re:Invent e da allora ne è rimasto affascinato. Prima di AWS, Jack ha trascorso la maggior parte della sua carriera nella creazione di spazi per agenzie pubblicitarie per alcuni dei più grandi marchi del mondo. Jack è legalmente cieco e risiede a Chicago con la moglie Erin e il gatto Minou. È anche sceneggiatore e regista con un focus primario sui film di Natale e sull'horror. Guarda la filmografia di Jack nella sua IMDb .

Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Alak Eswaradass è un Solutions Architect presso AWS con sede a Chicago, Illinois. È appassionata di aiutare i clienti a progettare architetture cloud utilizzando i servizi AWS per risolvere le sfide aziendali. Ha una laurea magistrale in ingegneria informatica. Prima di entrare in AWS, ha lavorato per diverse organizzazioni sanitarie e ha un'esperienza approfondita nell'architettura di sistemi complessi, nell'innovazione tecnologica e nella ricerca. Esce con le sue figlie ed esplora la vita all'aria aperta nel tempo libero.

Consenti agli ipovedenti di ascoltare documenti utilizzando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Swagat Kulkarni è un Senior Solutions Architect presso AWS e un appassionato di AI/ML. È appassionato di risoluzione dei problemi del mondo reale per i clienti con servizi cloud native e machine learning. Al di fuori del lavoro, Swagat ama viaggiare, leggere e meditare.

Timestamp:

Di più da Apprendimento automatico di AWS