Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly

På 2021 AWS re:Invent-konferencen i Las Vegas demonstrerede vi Læs for mig på AWS Builders Fair - et websted, der hjælper synshandicappede med at høre dokumenter.

For bedre kvalitet, se videoen link..

Adaptiv teknologi og tilgængelighedsfunktioner er ofte dyre, hvis de overhovedet er tilgængelige. Lydbøger hjælper synshandicappede med at læse. Lydbeskrivelse gør film tilgængelige. Men hvad gør man, når indholdet ikke allerede er digitaliseret?

Dette indlæg fokuserer på AWS AI-tjenesterne amazontekst , Amazon Polly, som styrker dem med nedsat syn. Read For Me er udviklet i fællesskab af Jack Marchetti, som er svagtseende.

Løsningsoversigt

Gennem en begivenhedsdrevet, serverløs arkitektur og en kombination af flere AI-tjenester kan vi skabe naturligt lydende lydfiler på flere sprog fra et billede af et dokument eller et hvilket som helst billede med tekst. For eksempel et brev fra IRS, et feriekort fra familien eller endda åbningstitlerne til en film.

Følgende Referencearkitektur, offentliggjort i AWS Arkitektur Center viser arbejdsgangen for en bruger, der tager et billede med sin telefon og afspiller en MP3 af indholdet i det pågældende dokument.

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Arbejdsgangen omfatter følgende trin:

  1. Statisk indhold (HTML, CSS, JavaScript) hostes på AWS Amplify.
  2. Der gives midlertidig adgang for anonyme brugere til backend-tjenester via en Amazon Cognito identitetspulje.
  3. Billedfilerne gemmes i Amazon Simple Storage Service (Amazon S3).
  4. En bruger laver en POST-anmodning igennem Amazon API Gateway til lydtjenesten, som fuldmagter til en ekspres AWS-trinfunktioner workflow.
  5. Workflowet Trinfunktioner omfatter følgende trin:
    1. amazontekst udtrækker tekst fra billedet.
    2. Amazon Comprehend registrerer tekstens sprog.
    3. Hvis målsproget afviger fra det detekterede sprog, Amazon Oversæt oversætter til målsproget.
    4. Amazon Polly opretter en lydfil som output ved hjælp af teksten.
  6. AWS Step Functions-arbejdsgangen opretter en lydfil som output og gemmer den i Amazon S3 i MP3-format.
  7. En forudsigneret URL med placeringen af ​​lydfilen gemt i Amazon S3 sendes tilbage til brugerens browser gennem API Gateway. Brugerens mobilenhed afspiller lydfilen ved hjælp af den forudsignerede URL.

I de følgende afsnit diskuterer vi årsagerne til, hvorfor vi valgte de specifikke tjenester, arkitekturmønster og servicefunktioner til denne løsning.

AWS AI-tjenester

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

  • Amazon Textract identificerer teksten i det uploadede billede.
  • Amazon Comprehend bestemmer sproget.
  • Hvis brugeren vælger et andet talesprog end sproget på billedet, oversætter vi det ved hjælp af Amazon Translate.
  • Amazon Polly opretter MP3-filen. Vi drager fordel af Amazon Polly neurale motor, som skaber en mere naturlig, naturtro lydoptagelse.

En af de vigtigste fordele ved at bruge disse AI-tjenester er, at det er nemt at adoptere med lidt eller ingen grundlæggende maskinlæringserfaring. Tjenesterne afslører API'er, som klienter kan påberåbe sig ved hjælp af SDK'er, der er gjort tilgængelige på flere programmeringssprog, såsom Python og Java.

Med Read For Me skrev vi det underliggende AWS Lambda funktioner i Python.

AWS SDK til Python (Boto3)

AWS SDK til Python (Boto3) gør det nemt at interagere med AWS-tjenester. For eksempel returnerer følgende linjer med Python-kode den tekst, der findes i det billede eller dokument, du angiver:

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

Al Python-kode køres inden for individuelle Lambda-funktioner. Der er ingen servere, der skal klargøres, og ingen infrastruktur, der skal vedligeholdes.

Arkitektur mønstre

I dette afsnit diskuterer vi de forskellige arkitekturmønstre, der anvendes i løsningen.

Serverless

Vi implementerede en serverløs arkitektur af to hovedårsager: hastighed at bygge og pris. Uden underliggende hardware at vedligeholde eller infrastruktur at implementere, fokuserede vi udelukkende på forretningslogikkoden og intet andet. Dette gjorde det muligt for os at få en fungerende prototype op at køre på få dage. Hvis brugere ikke aktivt uploader billeder og lytter til optagelser, kører der intet, og derfor pådrager intet sig omkostninger uden for lageret. En S3-livscyklusstyringsregel sletter uploadede billeder og MP3-filer efter 1 dag, så lageromkostningerne er lave.

Synkron arbejdsgang

Når du bygger serverløse arbejdsgange, er det vigtigt at forstå, hvornår et synkront opkald giver mere mening ud fra arkitekturen og brugeroplevelsen end en asynkron proces. Med Read For Me gik vi i første omgang ned ad den asynkrone sti og planlagde at bruge WebSockets til at kommunikere tovejs med frontenden. Vores arbejdsgang vil omfatte et trin til at finde forbindelses-id'et, der er knyttet til arbejdsgangen Trinfunktioner, og efter afslutningen advare frontenden. For mere information om denne proces, se Fra afstemning til Push: Transformer API'er ved hjælp af Amazon API Gateway REST API'er og WebSockets.

Vi valgte i sidste ende ikke at gøre dette og brugte eksprestrinfunktioner, som er synkrone. Brugere forstår, at behandling af et billede ikke vil være øjeblikkelig, men ved også, at det ikke vil tage 30 sekunder eller et minut. Vi var i et rum, hvor et par sekunder var tilfredsstillende for slutbrugeren og ikke havde brug for fordelene ved WebSockets. Dette forenklede arbejdsgangen generelt.

Express Step Functions arbejdsgang

Evnen til at opdele din kode i mindre, isolerede funktioner giver mulighed for finkornet kontrol, lettere vedligeholdelse og muligheden for at skalere mere præcist. For eksempel, hvis vi fandt ud af, at Lambda-funktionen, der udløste Amazon Polly til at oprette lydfilen, kørte langsommere end den funktion, der bestemte sproget, kunne vi lodret skalere den funktion og tilføje mere hukommelse uden at skulle gøre det for de andre. På samme måde begrænser du sprængningsradius for, hvad din Lambda-funktion kan gøre eller få adgang til, når du begrænser dens omfang og rækkevidde.

En af fordelene ved at orkestrere dit workflow med Step Functions er evnen til at introducere beslutningsflowlogik uden at skulle skrive nogen kode.

Vores Step Functions-arbejdsgang er ikke kompleks. Det er lineært indtil oversættelsestrinnet. Hvis vi ikke behøver at kalde en oversættelses Lambda-funktion, er det mindre omkostninger for os og en hurtigere oplevelse for brugeren. Vi kan bruge den visuelle designer på Step Functions-konsollen til at finde den specifikke nøgle i input-nyttelasten og, hvis den er til stede, kalde den ene funktion frem for den anden ved hjælp af JSONPath. For eksempel inkluderer vores nyttelast en nøgle kaldet translate:

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

I den visuelle designer Step Functions finder vi oversættelsesnøglen og opsætter regler, der matcher.

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Hovedløs arkitektur

Amplify hoster front-end-koden. Frontend skrives i React og kildekoden tjekkes ind AWS CodeCommit. Amplify løser et par problemer for brugere, der forsøger at implementere og administrere statiske websteder. Hvis du gjorde dette manuelt (ved at bruge en S3-bøtte, der er konfigureret til statisk webstedshosting og fronter det med Amazon CloudFront), skal du selv udløbe cachen, hver gang du foretog implementeringer. Du skal også skrive din egen CI/CD-pipeline. Amplify klarer dette for dig.

Dette giver mulighed for en hovedløs arkitektur, hvor front-end kode er afkoblet fra backend, og hvert lag kan administreres og skaleres uafhængigt af det andet.

Analyser ID

I det foregående afsnit diskuterede vi arkitekturmønstrene til behandling af det uploadede billede og oprettelse af en MP3-fil ud fra det. At få et dokument læst tilbage til dig er et godt første skridt, men hvad nu hvis du kun vil vide noget specifikt uden at få det hele læst tilbage for dig? For eksempel skal du udfylde en formular online og angive dit stats-id eller pasnummer, eller måske dets udløbsdato. Du skal derefter tage et billede af dit ID og, mens du får det læst tilbage til dig, vente på den specifikke del. Alternativt kan du bruge Analyse ID.

Analyse ID er en funktion i Amazon Textract, der giver dig mulighed for at forespørge dokumenter. Read For Me indeholder en rullemenu, hvor du specifikt kan bede om udløbsdato, udstedelsesdato eller dokumentnummer. Du kan bruge den samme arbejdsgang til at oprette en MP3-fil, der giver et svar på dit specifikke spørgsmål.

Du kan demonstrere funktionen Analysér ID på readforme.io/analyze.

Yderligere Polly-funktioner

  • Read For Me tilbyder flere neurale stemmer, der bruger forskellige sprog og dialekter. Bemærk, at der er flere andre stemmer du kan vælge imellem, hvilket vi ikke implementerede. Når en ny stemme er tilgængelig, er en opdatering til front-end-koden og en lambda-funktion alt, der skal til for at drage fordel af det.
  • Polly-tjenesten tilbyder også andre muligheder, som vi endnu ikke har inkluderet i Read For Me. Disse omfatter justering af stemmernes hastighed , talemærker.

Konklusion

I dette indlæg diskuterede vi, hvordan man bruger adskillige AWS-tjenester, inklusive AI og serverløs, til at hjælpe synshandicappede. Du kan lære mere om Read For Me-projektet og bruge det ved at besøge readforme.io. Du kan også finde Amazon Textract-eksempler på GitHub repo. For at lære mere om Analyse ID, tjek ud Annoncerer støtte til at udtrække data fra identitetsdokumenter ved hjælp af Amazon Textract.

Kildekoden til dette projekt vil være open source og tilføjes til AWS' offentlige GitHub snart.


Om forfatterne

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jack Marchetti er Senior Solutions architect hos AWS. Med en baggrund i software engineering er Jack primært fokuseret på at hjælpe kunder med at implementere serverløse, begivenhedsdrevne arkitekturer. Han byggede sin første distribuerede, cloud-baserede applikation i 2013 efter at have deltaget i den anden AWS re:Invent-konference og har været hooked lige siden. Før AWS tilbragte Jack størstedelen af ​​sin karriere i reklamebureauet med at bygge oplevelser for nogle af de største brands i verden. Jack er juridisk blind og bor i Chicago med sin kone Erin og katten Minou. Han er også manuskriptforfatter og instruktør med primært fokus på julefilm og gyser. Se Jacks filmografi på hans IMDb .

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Alak Eswaradass er en løsningsarkitekt hos AWS med base i Chicago, Illinois. Hun brænder for at hjælpe kunder med at designe cloud-arkitekturer ved at bruge AWS-tjenester til at løse forretningsmæssige udfordringer. Hun har en kandidatgrad i datalogi. Før hun kom til AWS, arbejdede hun for forskellige sundhedsorganisationer, og hun har indgående erfaring med at bygge komplekse systemer, teknologisk innovation og forskning. Hun hænger ud med sine døtre og udforsker udendørs i sin fritid.

Gør det muligt for synshandicappede at høre dokumenter ved hjælp af Amazon Textract og Amazon Polly PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Swagat Kulkarni er Senior Solutions Architect hos AWS og AI/ML-entusiast. Han brænder for at løse problemer i den virkelige verden for kunder med cloud native-tjenester og maskinlæring. Uden for arbejdet nyder Swagat at rejse, læse og meditere.

Tidsstempel:

Mere fra AWS maskinindlæring