Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Permita que deficientes visuais ouçam documentos usando o Amazon Textract e o Amazon Polly

Na conferência AWS re:Invent de 2021 em Las Vegas, demonstramos Leia para mim na AWS Builders Fair — um site que ajuda deficientes visuais a ouvir documentos.

Para melhor qualidade, assista ao vídeo SUA PARTICIPAÇÃO FAZ A DIFERENÇA.

A tecnologia adaptativa e os recursos de acessibilidade geralmente são caros, se estiverem disponíveis. Livros de áudio ajudam os deficientes visuais a ler. A audiodescrição torna os filmes acessíveis. Mas o que você faz quando o conteúdo ainda não está digitalizado?

Esta postagem se concentra nos serviços de IA da AWS amazontext e Amazon Polly, que capacitam aqueles com deficiência visual. Read For Me foi co-desenvolvido por Jack Marchetti, que é deficiente visual.

Visão geral da solução

Por meio de uma arquitetura sem servidor orientada a eventos e uma combinação de vários serviços de IA, podemos criar arquivos de áudio com som natural em vários idiomas a partir de uma imagem de um documento ou qualquer imagem com texto. Por exemplo, uma carta do IRS, um cartão de férias da família ou até mesmo os títulos de abertura de um filme.

Os seguintes Arquitetura de Referência, Publicado no Centro de arquitetura da AWS mostra o fluxo de trabalho de um usuário tirando uma foto com seu telefone e reproduzindo um MP3 do conteúdo encontrado nesse documento.

Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O fluxo de trabalho inclui as seguintes etapas:

  1. O conteúdo estático (HTML, CSS, JavaScript) é hospedado em Amplificar AWS.
  2. O acesso temporário é concedido a usuários anônimos para serviços de back-end por meio de um Amazon Cognito pool de identidade.
  3. Os arquivos de imagem são armazenados em Serviço de armazenamento simples da Amazon (Amazônia S3).
  4. Um usuário faz uma solicitação POST por meio de Gateway de API da Amazon ao serviço de áudio, que faz a procuração de um serviço expresso Funções de etapa da AWS fluxo de trabalho.
  5. O fluxo de trabalho do Step Functions inclui as seguintes etapas:
    1. amazontext extrai o texto da imagem.
    2. Amazon Comprehend detecta o idioma do texto.
    3. Se o idioma de destino for diferente do idioma detectado, Amazon Tradutor traduz para o idioma de destino.
    4. Amazon Polly cria um arquivo de áudio como saída usando o texto.
  6. O fluxo de trabalho do AWS Step Functions cria um arquivo de áudio como saída e o armazena no Amazon S3 no formato MP3.
  7. Um URL pré-assinado com o local do arquivo de áudio armazenado no Amazon S3 é enviado de volta ao navegador do usuário por meio do API Gateway. O dispositivo móvel do usuário reproduz o arquivo de áudio usando o URL pré-assinado.

Nas seções a seguir, discutimos os motivos pelos quais escolhemos os serviços específicos, o padrão de arquitetura e os recursos de serviço para esta solução.

Serviços AWS AI

Vários serviços de IA são conectados para alimentar o Read For Me:

  • O Amazon Textract identifica o texto na imagem carregada.
  • O Amazon Comprehend determina o idioma.
  • Se o usuário escolher um idioma falado diferente do idioma da imagem, nós o traduzimos usando o Amazon Translate.
  • O Amazon Polly cria o arquivo MP3. Aproveitamos o mecanismo neural Amazon Polly, que cria uma gravação de áudio mais natural e realista.

Um dos principais benefícios de usar esses serviços de IA é a facilidade de adoção com pouca ou nenhuma experiência principal em aprendizado de máquina necessária. Os serviços expõem APIs que os clientes podem invocar usando SDKs disponibilizados em várias linguagens de programação, como Python e Java.

Com Read For Me, escrevemos a base AWS Lambda funções em Python.

SDK da AWS para Python (Boto3)

A SDK da AWS para Python (Boto3) simplifica a interação com os serviços da AWS. Por exemplo, as seguintes linhas de código Python retornam o texto encontrado na imagem ou documento que você fornece:

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 o código Python é executado em funções individuais do Lambda. Não há servidores para provisionar nem infraestrutura para manter.

Padrões de arquitetura

Nesta seção, discutimos os diferentes padrões de arquitetura usados ​​na solução.

Serverless

Implementamos uma arquitetura sem servidor por dois motivos principais: velocidade de construção e custo. Sem hardware subjacente para manter ou infraestrutura para implantar, nos concentramos inteiramente no código da lógica de negócios e nada mais. Isso nos permitiu obter um protótipo funcional em questão de dias. Se os usuários não estiverem enviando fotos e ouvindo gravações ativamente, nada está sendo executado e, portanto, nada está incorrendo em custos fora do armazenamento. Uma regra de gerenciamento de ciclo de vida do S3 exclui imagens carregadas e arquivos MP3 após 1 dia, portanto, os custos de armazenamento são baixos.

Fluxo de trabalho síncrono

Ao criar fluxos de trabalho sem servidor, é importante entender quando uma chamada síncrona faz mais sentido na arquitetura e na experiência do usuário do que em um processo assíncrono. Com o Read For Me, inicialmente seguimos o caminho assíncrono e planejamos usar WebSockets para nos comunicar bidirecionalmente com o front-end. Nosso fluxo de trabalho incluiria uma etapa para encontrar o ID de conexão associado ao fluxo de trabalho do Step Functions e, após a conclusão, alertar o front-end. Para mais informações sobre este processo, consulte Da sondagem ao envio: transforme APIs usando APIs REST e WebSockets do Amazon API Gateway.

Em última análise, optamos por não fazer isso e usamos funções de passo expresso que são síncronas. Os usuários entendem que o processamento de uma imagem não será instantâneo, mas também sabem que não levará 30 segundos ou um minuto. Estávamos em um espaço onde alguns segundos eram satisfatórios para o usuário final e não precisávamos do benefício do WebSockets. Isso simplificou o fluxo de trabalho em geral.

Fluxo de trabalho do Express Step Functions

A capacidade de dividir seu código em funções menores e isoladas permite um controle refinado, manutenção mais fácil e a capacidade de dimensionar com mais precisão. Por exemplo, se determinarmos que a função do Lambda que acionou o Amazon Polly para criar o arquivo de áudio estava sendo executada mais lentamente do que a função que determinou o idioma, poderíamos dimensionar verticalmente essa função, adicionando mais memória, sem precisar fazer isso para as outras. Da mesma forma, você limita o raio de explosão do que sua função Lambda pode fazer ou acessar ao limitar seu escopo e alcance.

Um dos benefícios de orquestrar seu fluxo de trabalho com o Step Functions é a capacidade de introduzir lógica de fluxo de decisão sem precisar escrever nenhum código.

Nosso fluxo de trabalho do Step Functions não é complexo. É linear até a etapa de tradução. Se não precisarmos chamar uma função Lambda de tradução, teremos menos custo e uma experiência mais rápida para o usuário. Podemos usar o designer visual no console do Step Functions para encontrar a chave específica na carga útil de entrada e, se estiver presente, chamar uma função sobre a outra usando JSONPath. Por exemplo, nosso payload inclui uma chave chamada translate:

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

No designer visual do Step Functions, encontramos a chave de tradução e configuramos as regras para corresponder.

Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Arquitetura sem cabeça

O Amplify hospeda o código de front-end. O front-end é escrito em React e o código-fonte é verificado em AWS CodeCommit. O Amplify resolve alguns problemas para usuários que tentam implantar e gerenciar sites estáticos. Se você estivesse fazendo isso manualmente (usando um bucket do S3 configurado para hospedagem de site estático e enfrentando isso com Amazon CloudFront), você teria que expirar o cache toda vez que fizesse implantações. Você também teria que escrever seu próprio pipeline de CI/CD. Amplify lida com isso para você.

Isso permite uma arquitetura headless, onde o código front-end é desacoplado do back-end e cada camada pode ser gerenciada e dimensionada independentemente da outra.

Analisar ID

Na seção anterior, discutimos os padrões de arquitetura para processar a imagem carregada e criar um arquivo MP3 a partir dela. Ter um documento lido de volta para você é um ótimo primeiro passo, mas e se você quiser apenas saber algo específico sem que a coisa toda seja lida de volta para você? Por exemplo, você precisa preencher um formulário on-line e fornecer seu número de identidade ou passaporte, ou talvez sua data de validade. Você então tem que tirar uma foto do seu ID e, enquanto o lê de volta para você, espere por essa parte específica. Como alternativa, você pode usar Analyze ID.

Analyze ID é um recurso do Amazon Textract que permite consultar documentos. Leia para mim contém um menu suspenso onde você pode solicitar especificamente a data de validade, data de emissão ou número do documento. Você pode usar o mesmo fluxo de trabalho para criar um arquivo MP3 que forneça uma resposta à sua pergunta específica.

Você pode demonstrar o recurso Analyze ID em readforme.io/analyze.

Recursos adicionais do Polly

  • O Read For Me oferece várias vozes neurais utilizando diferentes idiomas e dialetos. Observe que existem vários outros vozes você pode escolher, que não implementamos. Quando uma nova voz está disponível, uma atualização para o código de front-end e uma função lambda é tudo o que é necessário para aproveitá-la.
  • O serviço Polly também oferece outras opções que ainda não incluímos no Read For Me. Isso inclui ajustar o velocidade das vozes e Marcas de discurso.

Conclusão

Neste post, discutimos como usar vários serviços da AWS, incluindo IA e sem servidor, para ajudar deficientes visuais. Você pode aprender mais sobre o projeto Read For Me e usá-lo visitando readforme.io. Você também pode encontrar exemplos do Amazon Textract no GitHub repo. Para saber mais sobre Analyze ID, confira Anunciando suporte para extração de dados de documentos de identidade usando o Amazon Textract.

O código-fonte para este projeto será de código aberto e adicionado ao GitHub público da AWS em breve.


Sobre os autores

Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Jack Marchetti é arquiteto de soluções sênior na AWS. Com experiência em engenharia de software, Jack se concentra principalmente em ajudar os clientes a implementar arquiteturas sem servidor e orientadas a eventos. Ele criou seu primeiro aplicativo distribuído e baseado em nuvem em 2013, depois de participar da segunda conferência AWS re:Invent, e desde então está fisgado. Antes da AWS, Jack passou a maior parte de sua carreira em experiências de criação de espaço para agências de publicidade para algumas das maiores marcas do mundo. Jack é legalmente cego e mora em Chicago com sua esposa Erin e o gato Minou. Ele também é roteirista e diretor com foco principal em filmes de Natal e terror. Veja a filmografia de Jack em seu IMDb Disputas de Comerciais.

Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Alak Eswaradass é arquiteto de soluções na AWS com sede em Chicago, Illinois. Ela é apaixonada por ajudar os clientes a projetar arquiteturas de nuvem utilizando os serviços da AWS para resolver desafios de negócios. Ela tem um mestrado em engenharia de ciência da computação. Antes de ingressar na AWS, ela trabalhou para diferentes organizações de saúde e tem profunda experiência na arquitetura de sistemas complexos, inovação tecnológica e pesquisa. Ela sai com as filhas e explora o ar livre em seu tempo livre.

Permita que deficientes visuais ouçam documentos usando Amazon Textract e Amazon Polly PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Swagat Kulkarni é arquiteto de soluções sênior na AWS e entusiasta de IA/ML. Ele é apaixonado por resolver problemas do mundo real para clientes com serviços nativos de nuvem e aprendizado de máquina. Fora do trabalho, Swagat gosta de viajar, ler e meditar.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS