Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly

På 2021 AWS re:Invent-konferansen i Las Vegas demonstrerte vi Les for meg på AWS Builders Fair – et nettsted som hjelper synshemmede å høre dokumenter.

For bedre kvalitet, se videoen her..

Adaptiv teknologi og tilgjengelighetsfunksjoner er ofte dyre, hvis de i det hele tatt er tilgjengelige. Lydbøker hjelper synshemmede å lese. Lydbeskrivelse gjør filmer tilgjengelige. Men hva gjør du når innholdet ikke allerede er digitalisert?

Dette innlegget fokuserer på AWS AI-tjenestene amazontekst og Amazon Polly, som styrker de med nedsatt syn. Read For Me ble medutviklet av Jack Marchetti, som er synshemmet.

Løsningsoversikt

Gjennom en hendelsesdrevet, serverløs arkitektur og en kombinasjon av flere AI-tjenester, kan vi lage naturlig lydfiler på flere språk fra et bilde av et dokument, eller et hvilket som helst bilde med tekst. For eksempel et brev fra skattemyndighetene, et feriekort fra familien, eller til og med åpningstitlene til en film.

Følgende Referansearkitektur, publisert i AWS arkitektursenter viser arbeidsflyten til en bruker som tar et bilde med telefonen sin og spiller av en MP3 av innholdet som finnes i det dokumentet.

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Arbeidsflyten inkluderer følgende trinn:

  1. Statisk innhold (HTML, CSS, JavaScript) er vert for AWS forsterke.
  2. Midlertidig tilgang gis for anonyme brukere til backend-tjenester via en Amazon Cognito identitetspool.
  3. Bildefilene lagres i Amazon enkel lagringstjeneste (Amazon S3).
  4. En bruker gjør en POST-forespørsel gjennom Amazon API-gateway til lydtjenesten, som fullmakter til en ekspress AWS trinnfunksjoner arbeidsflyt.
  5. Arbeidsflyten for trinnfunksjoner inkluderer følgende trinn:
    1. amazontekst trekker ut tekst fra bildet.
    2. Amazon Comprehend oppdager språket i teksten.
    3. Hvis målspråket er forskjellig fra det oppdagede språket, Amazon Oversett oversettes til målspråket.
    4. Amazon Polly oppretter en lydfil som utdata ved hjelp av teksten.
  6. Arbeidsflyten for AWS Step Functions oppretter en lydfil som utdata og lagrer den i Amazon S3 i MP3-format.
  7. En forhåndssignert URL med plasseringen av lydfilen som er lagret i Amazon S3 sendes tilbake til brukerens nettleser gjennom API Gateway. Brukerens mobilenhet spiller av lydfilen ved å bruke den forhåndssignerte URL-en.

I de følgende avsnittene diskuterer vi årsakene til hvorfor vi valgte de spesifikke tjenestene, arkitekturmønsteret og tjenestefunksjonene for denne løsningen.

AWS AI-tjenester

Flere AI-tjenester er koblet sammen for å drive Read For Me:

  • Amazon Textract identifiserer teksten i det opplastede bildet.
  • Amazon Comprehend bestemmer språket.
  • Hvis brukeren velger et annet talespråk enn språket på bildet, oversetter vi det med Amazon Translate.
  • Amazon Polly lager MP3-filen. Vi drar fordel av Amazon Polly nevrale motor, som skaper et mer naturlig, naturtro lydopptak.

En av hovedfordelene ved å bruke disse AI-tjenestene er den enkle bruken med liten eller ingen kjerneerfaring med maskinlæring. Tjenestene avslører API-er som klienter kan påkalle ved hjelp av SDK-er som er gjort tilgjengelig på flere programmeringsspråk, som Python og Java.

Med Les for meg skrev vi det underliggende AWS Lambda funksjoner i Python.

AWS SDK for Python (Boto3)

De AWS SDK for Python (Boto3) gjør det enkelt å samhandle med AWS-tjenester. For eksempel returnerer følgende linjer med Python-kode teksten som finnes i bildet eller dokumentet du oppgir:

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

All Python-kode kjøres innenfor individuelle Lambda-funksjoner. Det er ingen servere å klargjøre og ingen infrastruktur å vedlikeholde.

Arkitektur mønstre

I denne delen diskuterer vi de ulike arkitekturmønstrene som brukes i løsningen.

server~~POS=TRUNC

Vi implementerte en serverløs arkitektur av to hovedårsaker: hastighet å bygge og kostnad. Uten underliggende maskinvare å vedlikeholde eller infrastruktur å distribuere, fokuserte vi helt på forretningslogikkkoden og ingenting annet. Dette tillot oss å få en fungerende prototype i gang i løpet av få dager. Hvis brukere ikke aktivt laster opp bilder og lytter til opptak, kjører ingenting, og derfor påløper ingenting kostnader utenfor lagring. En S3-livssyklusadministrasjonsregel sletter opplastede bilder og MP3-filer etter 1 dag, så lagringskostnadene er lave.

Synkron arbeidsflyt

Når du bygger serverløse arbeidsflyter, er det viktig å forstå når et synkront anrop gir mer mening fra arkitekturen og brukeropplevelsen enn en asynkron prosess. Med Read For Me gikk vi først ned den asynkrone banen og planla å bruke WebSockets for å toveis kommunisere med frontend. Arbeidsflyten vår vil inkludere et trinn for å finne tilkoblings-IDen knyttet til arbeidsflyten for trinnfunksjoner, og ved fullføring varsle grensesnittet. For mer informasjon om denne prosessen, se Fra avstemning til Push: Transformer APIer ved hjelp av Amazon API Gateway REST APIer og WebSockets.

Vi valgte til slutt å ikke gjøre dette og brukte ekspresstrinnfunksjoner som er synkrone. Brukere forstår at behandling av et bilde ikke vil være umiddelbar, men vet også at det ikke vil ta 30 sekunder eller et minutt. Vi var i et område der noen få sekunder var tilfredsstillende for sluttbrukeren og ikke trengte fordelene med WebSockets. Dette forenklet arbeidsflyten totalt sett.

Express Step Functions arbeidsflyt

Evnen til å dele ut koden din i mindre, isolerte funksjoner gir finmasket kontroll, enklere vedlikehold og muligheten til å skalere mer nøyaktig. For eksempel, hvis vi fant ut at Lambda-funksjonen som utløste Amazon Polly til å lage lydfilen kjørte langsommere enn funksjonen som bestemte språket, kunne vi skalere den funksjonen vertikalt og legge til mer minne uten å måtte gjøre det for de andre. På samme måte begrenser du sprengeradiusen til hva Lambda-funksjonen din kan gjøre eller få tilgang til når du begrenser omfanget og rekkevidden.

En av fordelene med å orkestrere arbeidsflyten din med Step Functions er muligheten til å introdusere beslutningsflytlogikk uten å måtte skrive noen kode.

Arbeidsflyten vår for trinnfunksjoner er ikke kompleks. Den er lineær frem til oversettelsestrinnet. Hvis vi ikke trenger å kalle en oversettelse Lambda-funksjon, er det mindre kostnad for oss, og en raskere opplevelse for brukeren. Vi kan bruke den visuelle designeren på Step Functions-konsollen for å finne den spesifikke nøkkelen i input-nyttelasten og, hvis den er til stede, kalle en funksjon fremfor den andre ved å bruke JSONPath. For eksempel inkluderer nyttelasten vår en nøkkel kalt translate:

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

I den visuelle designeren Step Functions finner vi oversettnøkkelen og setter opp regler som samsvarer.

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Hodeløs arkitektur

Amplify er vert for front-end-koden. Frontend skrives i React og kildekoden sjekkes inn AWS CodeCommit. Amplify løser noen problemer for brukere som prøver å distribuere og administrere statiske nettsteder. Hvis du gjorde dette manuelt (ved å bruke en S3-bøtte satt opp for statisk webhotell og fronte det med Amazon CloudFront), må du selv utløpe hurtigbufferen hver gang du implementerer. Du må også skrive opp din egen CI/CD-pipeline. Amplify håndterer dette for deg.

Dette gir mulighet for en hodeløs arkitektur, der front-end-kode er frakoblet fra backend og hvert lag kan administreres og skaleres uavhengig av det andre.

Analyser ID

I den foregående delen diskuterte vi arkitekturmønstrene for å behandle det opplastede bildet og lage en MP3-fil fra det. Å få et dokument lest tilbake til deg er et flott første skritt, men hva om du bare vil vite noe spesifikt uten å få hele saken lest tilbake til deg? Du må for eksempel fylle ut et skjema på nettet og oppgi ditt stats-ID eller passnummer, eller kanskje utløpsdatoen. Du må da ta et bilde av ID-en din og, mens du får den lest tilbake til deg, vente på den spesifikke delen. Alternativt kan du bruke Analyse-ID.

Analyse ID er en funksjon i Amazon Textract som lar deg søke etter dokumenter. Read For Me inneholder en rullegardinmeny der du spesifikt kan be om utløpsdato, utstedelsesdato eller dokumentnummer. Du kan bruke den samme arbeidsflyten til å lage en MP3-fil som gir svar på ditt spesifikke spørsmål.

Du kan demonstrere Analyser ID-funksjonen på readforme.io/analyze.

Ytterligere Polly-funksjoner

  • Read For Me tilbyr flere nevrale stemmer som bruker forskjellige språk og dialekter. Merk at det er flere andre stemmene du kan velge mellom, noe vi ikke implementerte. Når en ny stemme er tilgjengelig, er en oppdatering av front-end-koden og en lambda-funksjon alt som skal til for å dra nytte av det.
  • Polly-tjenesten tilbyr også andre alternativer som vi ennå ikke har tatt med i Read For Me. Disse inkluderer justering av hastigheten på stemmene og talemerker.

konklusjonen

I dette innlegget diskuterte vi hvordan man bruker en rekke AWS-tjenester, inkludert AI og serverløse, for å hjelpe synshemmede. Du kan lære mer om Les For meg-prosjektet og bruke det ved å besøke readforme.io. Du kan også finne Amazon Textract-eksempler på GitHub repo. For å lære mer om Analyse ID, sjekk ut Kunngjøring av støtte for å trekke ut data fra identitetsdokumenter ved hjelp av Amazon Textract.

Kildekoden for dette prosjektet vil være åpen kildekode og legges til AWSs offentlige GitHub snart.


Om forfatterne

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jack Marchetti er senior løsningsarkitekt i AWS. Med bakgrunn innen programvareteknikk er Jack først og fremst fokusert på å hjelpe kunder med å implementere serverløse, hendelsesdrevne arkitekturer. Han bygde sin første distribuerte, skybaserte applikasjon i 2013 etter å ha deltatt på den andre AWS re:Invent-konferansen og har vært hekta siden. Før AWS tilbrakte Jack mesteparten av sin karriere i reklamebyrået med å bygge opplevelser for noen av de største merkene i verden. Jack er juridisk blind og bor i Chicago sammen med sin kone Erin og katten Minou. Han er også manusforfatter og regissør med hovedfokus på julefilmer og skrekk. Se Jacks filmografi på hans IMDb side.

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Alak Eswaradass er en løsningsarkitekt ved AWS med base i Chicago, Illinois. Hun brenner for å hjelpe kunder med å designe skyarkitekturer ved å bruke AWS-tjenester for å løse forretningsutfordringer. Hun har en mastergrad i informatikk. Før hun begynte i AWS jobbet hun for ulike helseorganisasjoner, og hun har inngående erfaring med å bygge komplekse systemer, teknologiinnovasjon og forskning. Hun henger med døtrene sine og utforsker naturen på fritiden.

Gjør det mulig for synshemmede å høre dokumenter ved hjelp av Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Swagat Kulkarni er Senior Solutions Architect hos AWS og AI/ML-entusiast. Han brenner for å løse reelle problemer for kunder med skybaserte tjenester og maskinlæring. Utenom jobben liker Swagat å reise, lese og meditere.

Tidstempel:

Mer fra AWS maskinlæring