使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。

使视障者能够使用 Amazon Textract 和 Amazon Polly 听到文档

在拉斯维加斯举行的 2021 AWS re:Invent 大会上,我们演示了 为我读 在 AWS Builders Fair — 一个帮助视障人士聆听文档的网站。

要获得更好的质量,请观看视频 点击此处.

自适应技术和可访问性功能通常很昂贵,如果它们完全可用的话。 有声读物帮助视障人士阅读。 音频描述使电影易于访问。 但是,当内容尚未数字化时,您会怎么做?

本文重点介绍 AWS AI 服务 亚马逊Textract亚马逊波莉,它赋予那些视力受损的人。 Read For Me 是由视力受损的 Jack Marchetti 共同开发的。

解决方案概述

通过事件驱动的无服务器架构和多种 AI 服务的组合,我们可以从文档图片或任何带有文本的图像中创建多种语言的自然声音音频文件。 例如,来自美国国税局的一封信、来自家人的节日贺卡,甚至是电影的片头。

下列 参考架构,发表在 AWS 架构中心 显示了用户使用手机拍照并播放该文档中内容的 MP3 的工作流程。

使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。

工作流程包括以下步骤:

  1. 静态内容(HTML、CSS、JavaScript)托管在 AWS放大.
  2. 匿名用户通过 亚马逊Cognito 身份池。
  3. 图像文件存储在 亚马逊简单存储服务 (亚马逊S3)。
  4. 用户通过 POST 请求 Amazon API网关 到音频服务,它代理快递 AWS步骤功能 工作流程。
  5. Step Functions 工作流程包括以下步骤:
    1. 亚马逊Textract 从图像中提取文本。
    2. 亚马逊领悟 检测文本的语言。
    3. 如果目标语言与检测到的语言不同, 亚马逊翻译 翻译成目标语言。
    4. 亚马逊波莉 使用文本创建一个音频文件作为输出。
  6. AWS Step Functions 工作流程创建一个音频文件作为输出,并将其以 MP3 格式存储在 Amazon S3 中。
  7. 带有存储在 Amazon S3 中的音频文件位置的预签名 URL 通过 API Gateway 发送回用户的浏览器。 用户的移动设备使用预签名 URL 播放音频文件。

在以下部分中,我们将讨论为什么我们为此解决方案选择特定服务、架构模式和服务特性的原因。

AWS AI服务

多个 AI 服务连接在一起为 Read For Me 提供动力:

  • Amazon Textract 识别上传图片中的文本。
  • Amazon Comprehend 确定语言。
  • 如果用户选择的口语与图片中的语言不同,我们会使用 Amazon Translate 进行翻译。
  • Amazon Polly 创建 MP3 文件。 我们利用了 Amazon Polly 神经引擎,它可以创建更自然、更逼真的录音。

使用这些 AI 服务的主要好处之一是易于采用,几乎不需要或不需要核心机器学习经验。 这些服务公开了 API,客户端可以使用以多种编程语言(例如 Python 和 Java)提供的 SDK 调用这些 API。

使用 Read For Me,我们编写了底层 AWS Lambda Python中的函数。

适用于Python的AWS开发工具包(Boto3)

适用于Python的AWS开发工具包(Boto3) 使与 AWS 服务的交互变得简单。 例如,以下 Python 代码行返回在您提供的图像或文档中找到的文本:

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

所有 Python 代码都在单独的 Lambda 函数中运行。 无需配置服务器,也无需维护基础设施。

架构模式

在本节中,我们将讨论解决方案中使用的不同架构模式。

无服务器

我们实施无服务器架构的主要原因有两个:构建速度和成本。 由于没有要维护的底层硬件或要部署的基础设施,我们完全专注于业务逻辑代码而不是其他任何东西。 这使我们能够在几天内启动并运行一个功能原型。 如果用户没有主动上传图片和收听录音,则没有任何东西在运行,因此不会产生存储之外的任何成本。 S3 生命周期管理规则会在 3 天后删除上传的图像和 MP1 文件,因此存储成本低。

同步工作流

在构建无服务器工作流时,重要的是要了解同步调用何时从架构和用户体验中比异步流程更有意义。 使用 Read For Me,我们最初走的是异步路径,并计划使用 WebSockets 与前端进行双向通信。 我们的工作流程将包括一个步骤来查找与 Step Functions 工作流程关联的连接 ID,并在完成后提醒前端。 有关此过程的更多信息,请参阅 从轮询到推送:使用 Amazon API Gateway REST API 和 WebSocket 转换 API.

我们最终选择不这样做,而是使用同步的快速步进函数。 用户知道处理图像不会是即时的,但也知道不会花费 30 秒或一分钟。 我们所处的空间对最终用户来说几秒钟是满意的,并且不需要 WebSockets 的好处。 这简化了整个工作流程。

Express Step Functions 工作流程

将代码分解为更小的、独立的函数的能力允许细粒度的控制、更容易的维护以及更准确地扩展的能力。 例如,如果我们确定触发 Amazon Polly 创建音频文件的 Lambda 函数的运行速度比确定语言的函数慢,我们可以垂直扩展该函数,增加更多内存,而无需为其他函数这样做。 同样,当您限制其范围和范围时,您可以限制 Lambda 函数可以执行或访问的操作的爆炸半径。

使用 Step Functions 编排工作流程的好处之一是无需编写任何代码即可引入决策流逻辑。

我们的 Step Functions 工作流程并不复杂。 在翻译步骤之前它是线性的。 如果我们不需要调用翻译 Lambda 函数,这对我们来说成本更低,用户体验更快。 我们可以使用 Step Functions 控制台上的可视化设计器来查找输入负载中的特定键,如果存在,则使用 JSONPath 调用一个函数而不是另一个函数。 例如,我们的有效负载包含一个名为 translate 的键:

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

在 Step Functions 可视化设计器中,我们找到了 translate 键,并设置了匹配的规则。

使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。

无头架构

Amplify 托管前端代码。 前端是用 React 写的,源码签到 AWS 代码提交. Amplify 为尝试部署和管理静态网站的用户解决了一些问题。 如果您手动执行此操作(使用为静态网站托管设置的 S3 存储桶并使用 亚马逊的CloudFront的),每次进行部署时,您都必须自己使缓存过期。 您还必须编写自己的 CI/CD 管道。 Amplify 会为您处理这个问题。

这允许无头架构,其中前端代码与后端分离,并且每一层都可以独立管理和扩展。

分析 ID

在上一节中,我们讨论了处理上传的图片并从中创建 MP3 文件的架构模式。 将文档回读给您是很好的第一步,但是如果您只想了解特定的内容而不将整个内容回读给您怎么办? 例如,您需要在线填写表格并提供您的州身份证或护照号码,或者可能是到期日期。 然后,您必须为您的 ID 拍照,并在将其读回给您的同时,等待该特定部分。 或者,您可以使用分析 ID。

分析 ID 是 Amazon Textract 的一项功能,可让您查询文档。 Read For Me 包含一个下拉菜单,您可以在其中专门询问到期日期、发行日期或文档编号。 您可以使用相同的工作流程来创建一个 MP3 文件,为您的特定问题提供答案。

您可以在以下位置演示分析 ID 功能 readforme.io/分析.

其他 Polly 功能

  • Read For Me 提供使用不同语言和方言的多种神经声音。 注意还有其他几个 声音 您可以从中选择,我们没有实施。 当有新声音可用时,只需更新前端代码和 lambda 函数即可利用它。
  • Polly 服务还提供了我们尚未包含在 Read For Me 中的其他选项。 其中包括调整 声音的速度语言符号.

结论

在这篇文章中,我们讨论了如何使用众多 AWS 服务(包括 AI 和无服务器)来帮助视障人士。 您可以通过访问了解有关 Read For Me 项目的更多信息并使用它 readforme.io. 您还可以在 GitHub回购. 要了解有关分析 ID 的更多信息,请查看 宣布支持使用 Amazon Textract 从身份文件中提取数据.

该项目的源代码将很快开源并添加到 AWS 的公共 GitHub。


作者简介

使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。杰克·马尔凯蒂(Jack Marchetti) 是 AWS 的高级解决方案架构师。 Jack 拥有软件工程背景,主要专注于帮助客户实施无服务器、事件驱动的架构。 在参加第二届 AWS re:Invent 大会后,他于 2013 年构建了他的第一个分布式、基于云的应用程序,并从此迷上了。 在加入 AWS 之前,Jack 的大部分职业生涯都在为世界上一些最大的品牌提供广告代理空间建设经验。 杰克在法律上是盲人,与妻子艾琳和猫米诺住在芝加哥。 他还是一名编剧和导演,主要关注圣诞电影和恐怖片。 观看杰克的电影目录 IMDB 页面上发布服务提醒。

使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。阿拉克·埃斯瓦拉达斯 是位于伊利诺伊州芝加哥的 AWS 的解决方案架构师。 她热衷于帮助客户设计利用 AWS 服务解决业务挑战的云架构。 她拥有计算机科学工程硕士学位。 在加入 AWS 之前,她曾在不同的医疗保健组织工作,在构建复杂系统、技术创新和研究方面拥有丰富的经验。 她和她的女儿们一起出去玩,并在空闲时间探索户外活动。

使用 Amazon Textract 和 Amazon Polly PlatoBlockchain Data Intelligence 让视障人士能够听到文档。 垂直搜索。 哎。斯瓦加特库尔卡尼 是 AWS 的高级解决方案架构师和 AI/ML 爱好者。 他热衷于通过云原生服务和机器学习为客户解决现实问题。 工作之余,Swagat 喜欢旅行、阅读和冥想。

时间戳记:

更多来自 AWS机器学习