医疗保健、金融服务、公共部门和其他行业的 AWS 客户将数十亿个文档以图像或 PDF 形式存储在 亚马逊简单存储服务 (亚马逊 S3)。然而,他们无法获得见解,例如使用文档中锁定的信息进行大型语言模型 (LLM) 或搜索,直到提取文本、表单、表格和其他结构化数据。借助 AWS 智能文档处理 (IDP),使用 AI 服务,例如 亚马逊Textract,您可以利用行业领先的机器学习 (ML) 技术快速准确地处理 PDF 或文档图像(TIFF、JPEG、PNG)中的数据。从文档中提取文本后,您可以使用它来微调基础模型, 使用基础模型总结数据,或将其发送到数据库。
在这篇文章中,我们重点关注将大量文档集合处理为原始文本文件并将其存储在 Amazon S3 中。我们针对此用例为您提供两种不同的解决方案。第一个允许您从任何服务器或实例(包括 Jupyter 笔记本)运行 Python 脚本;这是最快的入门方法。第二种方法是使用以下方式对各种基础设施组件进行统包部署: AWS云开发套件 (AWS CDK) 结构体。 AWS CDK 构造提供了一个有弹性且灵活的框架来处理您的文档并构建端到端 IDP 管道。通过使用 AWS CDK,您可以扩展其功能以包括编辑、 将输出存储在 Amazon OpenSearch 中,或添加自定义 AWS Lambda 具有您自己的业务逻辑的功能。
这两种解决方案都允许您快速处理数百万页。在大规模运行这些解决方案之前,我们建议使用您的文档子集进行测试,以确保结果满足您的期望。在以下部分中,我们首先描述脚本解决方案,然后介绍AWS CDK构建解决方案。
解决方案 1:使用 Python 脚本
该解决方案通过 Amazon Textract 以服务允许的最快速度处理原始文本文档,并期望如果脚本出现故障,该过程将从中断处继续。该解决方案利用三种不同的服务:Amazon S3、 Amazon DynamoDB和亚马逊 Textract。
下图说明了脚本中的事件顺序。脚本结束时,完成状态以及所用时间将返回到 SageMaker studio 控制台。
我们将此解决方案封装在一个 .ipynb 脚本 和 .py 脚本。您可以根据您的要求使用任何可部署的解决方案。
先决条件
要从 Jupyter 笔记本运行此脚本, AWS身份和访问管理 分配给笔记本的 (IAM) 角色必须具有允许其与 DynamoDB、Amazon S3 和 Amazon Textract 交互的权限。一般指导是为您的每项服务提供最低特权权限 AmazonSageMaker-ExecutionRole
角色。要了解更多信息,请参阅 开始使用 AWS 托管策略并转向最低特权权限.
或者,您可以从其他环境(例如 亚马逊弹性计算云 您要管理的 (Amazon EC2) 实例或容器,前提是 Python、Pip3 和 适用于Python的AWS开发工具包(Boto3) 已安装。同样,需要应用相同的 IAM 策略来允许脚本与各种托管服务交互。
演练
要实现此解决方案,您首先需要克隆存储库 GitHub上.
您需要在脚本中设置以下变量,然后才能运行它:
- 跟踪表 – 这是将创建的 DynamoDB 表的名称。
- 输入桶 – 这是您在 Amazon S3 中的源位置,其中包含您想要发送到 Amazon Textract 进行文本检测的文档。对于此变量,提供存储桶的名称,例如
mybucket
. - 输出桶 – 用于存储您希望 Amazon Textract 将结果写入的位置。对于此变量,提供存储桶的名称,例如
myoutputbucket
. - _input_prefix(可选) – 如果您想从 S3 存储桶的文件夹中选择某些文件,您可以指定该文件夹名称作为输入前缀。否则,将默认值保留为空以选择全部。
脚本如下:
运行脚本时将创建以下 DynamoDB 表架构:
第一次运行该脚本时,它将检查 DynamoDB 表是否存在,并在需要时自动创建它。创建表后,我们需要使用要处理的 Amazon S3 中的文档对象引用列表来填充该表。该脚本按设计将枚举指定的对象 input_bucket
并在运行时自动用他们的名字填充我们的表。枚举超过 10 个文档并将这些名称从脚本填充到 DynamoDB 表中大约需要 100,000 分钟。如果您的存储桶中有数百万个对象,您也可以使用 Amazon S3 的清单功能来生成名称的 CSV 文件,然后提前使用您自己的脚本从此列表中填充 DynamoDB 表,而不使用名为 fetchAllObjectsInBucketandStoreName
通过注释掉它。要了解更多信息,请参阅 配置 Amazon S3 清单.
如前所述,既有笔记本版本,也有Python脚本版本。笔记本是最直接的入门方式;只需从头到尾运行每个单元即可。
如果您决定从 CLI 运行 Python 脚本,建议您使用终端多路复用器,例如 tmux。这是为了防止脚本在您的 SSH 会话完成时停止。例如: tmux new -d ‘python3 textractFeeder.py’
.
以下是 脚本的入口点;从这里您可以注释掉不需要的方法:
当脚本填充 DynamoDB 表时,会设置以下字段:
- 对象名 – 位于 Amazon S3 中、将发送到 Amazon Textract 的文档的名称
- 桶名 – 存储文档对象的桶
如果您决定使用 S3 库存报告中的 CSV 文件并跳过脚本中发生的自动填充,则必须填充这两个字段。
现在表已创建并填充了文档对象引用,脚本已准备好开始调用 Amazon Textract StartDocumentTextDetection
API。 Amazon Textract 与其他托管服务类似,具有 默认限制 在称为每秒事务数 (TPS) 的 API 上。如果需要,您可以从 Amazon Textract 控制台请求增加配额。该代码设计为在调用 Amazon Textract 时同时使用多个线程,以最大限度地提高服务的吞吐量。您可以通过修改代码在代码中更改此设置 threadCountforTextractAPICall
多变的。默认情况下,该值设置为 20 个线程。该脚本最初将从 DynamoDB 表中读取 200 行,并将这些行存储在内存列表中,该列表用一个类包装以确保线程安全。然后每个调用者线程启动并在其自己的泳道内运行。基本上,Amazon Textract 调用者线程将从内存列表中检索包含我们的对象引用的项目。然后它会调用异步 start_document_text_detection
API 并等待作业 ID 的确认。然后,作业 ID 会更新回该对象的 DynamoDB 行,并且线程将通过从列表中检索下一项来重复。
以下是主要编排代码 脚本:
调用者线程将继续重复,直到列表中不再有任何项目,此时线程将各自停止。当在其泳道内运行的所有线程都停止后,将从 DynamoDB 检索接下来的 200 行,并启动一组新的 20 个线程,重复整个过程,直到从 DynamoDB 检索到所有不包含作业 ID 的行,并且更新。如果脚本由于某些意外问题而崩溃,则可以从以下位置再次运行该脚本 orchestrate()
方法。这可确保线程继续处理包含空作业 ID 的行。请注意,重新运行时 orchestrate()
脚本停止后,一些文档可能会再次发送到 Amazon Textract。该数字将等于或小于崩溃时正在运行的线程数。
当 DynamoDB 表中不再有包含空白作业 ID 的行时,脚本将停止。所有对象的 Amazon Textract 的所有 JSON 输出都可以在 output_bucket
默认情况下 textract_output
文件夹。内的每个子文件夹 textract_output
将使用与存储在该对象的 DynamoDB 表中的作业 ID 相对应的作业 ID 来命名。在作业 ID 文件夹中,您将找到 JSON,该 JSON 将以数字方式命名,从 1 开始,并且可能跨越标记为 2、3 等的其他 JSON 文件。跨 JSON 文件是密集或多页文档的结果,其中提取的内容量超过 Amazon Textract 默认 JSON 大小 1,000 个块。参考 阻止 有关块的更多信息。这些 JSON 文件将包含所有 Amazon Textract 元数据,包括从文档中提取的文本。
您可以在以下位置找到此解决方案的 Python 代码笔记本版本和脚本 GitHub上.
清理
当Python脚本完成后,您可以通过关闭或停止Python脚本来节省成本 亚马逊SageMaker Studio 您旋转的笔记本或容器。
现在介绍我们的第二个大规模文档解决方案。
解决方案 2:使用无服务器 AWS CDK 构造
该解决方案使用 AWS步骤功能 和 Lambda 函数来编排 IDP 管道。我们使用 IDP AWS CDK 构建,这使得大规模使用 Amazon Textract 变得简单。此外,我们使用一个 Step Functions 分布式映射 迭代 S3 存储桶中的所有文件并启动处理。第一个 Lambda 函数确定您的文档有多少页。这使得管道能够自动使用同步(对于单页文档)或异步(对于多页文档)API。使用异步 API 时,系统会调用一个额外的 Lambda 函数来调用 Amazon Textract 将为您的所有页面生成的所有 JSON 文件并将其转换为一个 JSON 文件,以便您的下游应用程序可以轻松地使用这些信息。
该解决方案还包含两个额外的 Lambda 函数。第一个函数解析 JSON 中的文本并将其保存为 Amazon S3 中的文本文件。第二个函数分析 JSON 并将其存储为工作负载的指标。
下图说明了 Step Functions 工作流程。
先决条件
此代码库使用 AWS CDK 并需要 Docker。您可以从 AWS 云9 实例,已设置 AWS CDK 和 Docker。
演练
要实现此解决方案,您首先需要克隆 库。
克隆存储库后,安装依赖项:
然后使用以下代码部署 AWS CDK 堆栈:
您必须为此解决方案提供源存储桶和源前缀(要处理的文件的位置)。
部署完成后,导航到 Step Functions 控制台,您应该在其中看到状态机 ServerlessIDPArchivePipeline
.
打开状态机详细信息页面,然后在 处决 标签,选择 开始执行.
开始执行 再次运行状态机。
启动状态机后,您可以通过查看映射运行来监视管道。你会看到一个 项目处理状态 部分如以下屏幕截图所示。正如您所看到的,这是为了运行和跟踪成功和失败而构建的。该过程将继续运行,直到所有文档都被读取。
借助此解决方案,您应该能够处理 AWS 账户中的数百万个文件,而不必担心如何正确确定将哪些文件发送到哪个 API 或使管道失败的损坏文件。通过 Step Functions 控制台,您将能够实时观看和监控您的文件。
清理
管道运行完成后,要进行清理,您可以返回项目并输入以下命令:
这将删除为此项目部署的所有服务。
结论
在这篇文章中,我们提出了一种解决方案,可以轻松地将文档图像和 PDF 转换为文本文件。这是使用文档进行生成人工智能和搜索的关键先决条件。要了解有关使用文本训练或微调基础模型的更多信息,请参阅 在 Amazon SageMaker JumpStart 上微调 Llama 2 以生成文本。要与搜索一起使用,请参阅 使用 Amazon Textract 和 Amazon OpenSearch 实施智能文档搜索索引。要了解有关 AWS AI 服务提供的高级文档处理功能的更多信息,请参阅 AWS 上的智能文档处理指南.
作者简介
蒂姆·康德罗 是 Amazon Web Services (AWS) 的高级人工智能 (AI) 和机器学习 (ML) 专家解决方案架构师。 他的研究重点是自然语言处理和计算机视觉。 Tim 喜欢吸收客户的想法并将其转化为可扩展的解决方案。
大卫·吉尔林 是一位高级 AI/ML 解决方案架构师,在设计、领导和开发企业系统方面拥有二十多年的经验。 David 是专业团队的一员,该团队专注于帮助客户学习、创新和利用这些功能强大的服务以及针对其用例的数据。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- PlatoData.Network 垂直生成人工智能。 赋予自己力量。 访问这里。
- 柏拉图爱流。 Web3 智能。 知识放大。 访问这里。
- 柏拉图ESG。 碳, 清洁科技, 能源, 环境, 太阳能, 废物管理。 访问这里。
- 柏拉图健康。 生物技术和临床试验情报。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/create-a-document-lake-using-large-scale-text-extraction-from-documents-with-amazon-textract/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 000
- 1
- 10
- 100
- 12
- 20
- 200
- 7
- 710
- 8
- a
- Able
- 关于
- ACCESS
- 账号管理
- 准确
- 加
- 额外
- 另外
- 推进
- 高级
- 优点
- 后
- 再次
- AI
- 人工智能服务
- AI / ML
- 所有类型
- 让
- 允许
- 沿
- 已经
- 还
- Amazon
- Amazon EC2
- 亚马逊SageMaker
- 亚马逊Textract
- 亚马逊网络服务
- 亚马逊网络服务(AWS)
- 量
- an
- 分析
- 和
- 任何
- API
- APIs
- 应用领域
- 应用的
- 的途径
- 约
- 保健
- 人造的
- 人工智能
- 人工智能(AI)
- AS
- 分配
- At
- 汽车
- 自动
- AWS
- 背部
- 基地
- 基本上
- BE
- 很
- before
- 十亿美元
- 吹氣梢
- 引导
- 都
- 建立
- 建
- 商业
- by
- 呼叫
- 被称为
- 呼叫者
- 调用
- CAN
- 能力
- 能力
- 案件
- 例
- 细胞
- 一定
- 更改
- 查
- 程
- 清洁
- 云端技术
- 码
- 代码库
- 采集
- 评论
- 评论
- 完成
- 完成
- 组件
- 计算
- 一台
- 计算机视觉
- 安慰
- 建设
- 包含
- 容器
- 包含
- 内容
- 继续
- 兑换
- 对应
- 成本
- 可以
- 崩溃
- 创建信息图
- 创建
- 习俗
- 顾客
- 合作伙伴
- data
- 数据库
- David
- 决定
- 默认
- 依赖
- 部署
- 部署
- 部署
- 描述
- 设计
- 设计
- 设计
- 详情
- 检测
- 确定
- 确定
- 发展
- 研发支持
- 不同
- 分布
- 码头工人
- 文件
- 文件
- 不会
- 向下
- 两
- 每
- 此前
- 或
- 使
- 端至端
- 结束
- 输入
- 企业
- 条目
- 环境中
- 等于
- 事件
- 所有的
- 例子
- 超过
- 执行
- 存在
- 期望
- 期望
- 体验
- 延长
- 提取
- 萃取
- 失败
- 失败
- 失败
- 专栏
- 少数
- 字段
- 文件
- 档
- 金融
- 金融服务
- 找到最适合您的地方
- 完
- (名字)
- 第一次
- 柔软
- 专注焦点
- 重点
- 其次
- 以下
- 如下
- 针对
- 形式
- 发现
- 基金会
- 骨架
- 止
- 功能
- 功能
- 功能
- Gain增益
- 其他咨询
- 产生
- 代
- 生成的
- 生成式人工智能
- 得到
- Go
- 指导
- 发生
- 有
- 医疗保健
- 帮助
- 相关信息
- 高度
- 他的
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- i
- ID
- 思路
- 身分
- IDS
- if
- 说明
- 图片
- 实施
- in
- 包括
- 包含
- 增加
- 指数
- 行业
- 行业领先
- 信息
- 基础设施
- 原来
- 开始
- 创新
- 输入
- 可行的洞见
- 安装
- 安装
- 例
- 房源搜索
- 智能化
- 智能文档处理
- 相互作用
- 成
- 库存
- IT
- 项目
- 它的
- 工作
- JPG
- JSON
- 键
- 湖泊
- 车道
- 语言
- 大
- 大规模
- 领导
- 学习用品
- 学习
- 离开
- 左
- 减
- 喜欢
- 清单
- 骆驼
- 位于
- 圖書分館的位置
- 锁定
- 逻辑
- 不再
- 寻找
- 机
- 机器学习
- 主要
- 使
- 制作
- 管理
- 管理
- 许多
- 地图
- 生产力
- 满足
- 提到
- 元数据
- 方法
- 方法
- 指标
- 百万
- 分钟
- ML
- 模型
- 模型
- 显示器
- 更多
- 最先进的
- 移动
- 多
- 必须
- 姓名
- 命名
- 名称
- 自然
- 自然语言处理
- 导航
- 需求
- 打印车票
- 全新
- 下页
- 没有
- 注意
- 笔记本
- 现在
- 数
- 对象
- 对象
- of
- 折扣
- 最多线路
- on
- 一
- 操作
- or
- 管弦乐编曲
- 其他名称
- 除此以外
- 我们的
- 输出
- 产量
- 超过
- 己
- συσκευάζονται
- 页
- 网页
- 部分
- 为
- 权限
- 挑
- 管道
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 点
- 政策
- 人口稠密
- 帖子
- 潜力
- 可能
- 呈现
- 防止
- 市场问题
- 过程
- 过程
- 处理
- 生产
- 项目
- 正确
- 提供
- 提供
- 提供
- 国家
- 放
- 蟒蛇
- 最快
- 很快
- 原
- 阅读
- 准备
- 真实
- 实时的
- 建议
- 建议
- 记录
- 记录
- 参考
- 参考
- 引用
- 重复
- 报告
- 知识库
- 请求
- 必须
- 岗位要求
- 需要
- 弹性
- 导致
- 成果
- 角色
- 行
- 运行
- 运行
- 运行
- 安全
- 实现安全
- sagemaker
- 同
- 保存
- 可扩展性
- 鳞片
- 脚本
- SDK
- 搜索
- 其次
- 部分
- 部分
- 扇形
- 看到
- 选择
- 提交
- 前辈
- 发送
- 序列
- 服务器
- 无服务器
- 服务
- 特色服务
- 会议
- 集
- 应该
- 关闭
- 类似
- 简易
- 只是
- 尺寸
- 智能
- So
- 方案,
- 解决方案
- 一些
- 来源
- 跨度
- 张力
- 专家
- 指定
- 纺
- 堆
- 开始
- 开始
- 开始
- 州/领地
- Status
- 步
- Stop 停止
- 停止
- 停车
- 存储
- 商店
- 存储
- 商店
- 存储
- 简单的
- 串
- 结构化
- 工作室
- 成功
- 这样
- 肯定
- 产品
- 表
- 采取
- 拍摄
- 需要
- 服用
- 团队
- 专业技术
- 终端
- 测试
- 文本
- 比
- 这
- 信息
- 国家
- 其
- 他们
- 然后
- 那里。
- 博曼
- 他们
- Free Introduction
- 那些
- 三
- 通过
- 吞吐量
- Tim
- 次
- 至
- 对于
- TPS
- 跟踪时
- 培训
- 交易
- 谈到
- 狱卒
- 二
- 无法
- 下
- 意外
- 直到
- 更新
- 使用
- 用例
- 使用
- 运用
- 利用
- 利用
- 变量
- 各个
- 版本
- 愿景
- 等待
- 想
- 是
- 了解
- 方法..
- we
- 卷筒纸
- Web服务
- 为
- 什么是
- ,尤其是
- 这
- 全
- 将
- 中
- 也完全不需要
- 工作
- 工作流程
- 令人担忧
- 将
- 包裹
- 写
- 年
- 完全
- 您一站式解决方案
- 和风网