自动化 PDF 表单处理
本文介绍了一个 Azure 体系结构,可用于将成本高昂且不灵活的表单处理方法替换为经济高效且灵活的自动 PDF 处理方法。
体系结构
下载此体系结构的 PowerPoint 文件。
工作流
- 指定的 Outlook 电子邮件帐户以附件形式接收 PDF 文件。 电子邮件到达后会触发逻辑应用来处理电子邮件。 逻辑应用是使用 Azure 逻辑应用的功能生成的。
- 逻辑应用将 PDF 文件上传到 Azure Data Lake Storage 中的容器。
- 还可以手动或以编程方式将 PDF 文件上传到同一 PDF 容器。
- PDF 容器中的 PDF 文件到达后会触发另一个逻辑应用来处理 PDF 文件中的 PDF 表单。
- 逻辑应用将 PDF 文件的位置发送到函数应用进行处理。 函数应用是使用 Azure Functions 的功能生成的。
- 函数应用接收文件的位置并执行以下操作:
- 如果文件有多个页,它会将文件拆分为单个页。 每页包含一个独立的表单。 拆分的文件将保存到 Data Lake Storage 中的第二个容器。
- 它使用 HTTPS POST(一种 Azure REST API)将单页 PDF 文件的位置发送给 AI 文档智能进行处理。 当 Azure AI 文档智能完成其处理时,它将响应发送回功能应用,该应用将信息放入数据结构中。
- 它会创建包含响应数据的 JSON 数据文件,并将该文件存储在 Data Lake Storage 中的第三个容器中。
- 表单处理逻辑应用接收已处理的响应数据。
- 表单处理逻辑应用将已处理的数据发送到 Azure Cosmos DB,后者将数据保存在数据库和集合中。
- Power BI 从 Azure Cosmos DB 获取数据,并提供见解和仪表板。
- 可以根据需要对 Azure Cosmos DB 中的数据实施进一步处理。
组件
- Azure AI 文档智能,这是一项基于云的服务,可用于构建智能文档处理解决方案。 它应用高级机器学习来自动准确地从文档中提取文本、键值对、表和结构。 在此体系结构中,它是用于从 PDF 文档中提取信息的智能文档处理服务。
- Azure 逻辑应用是一个无服务器云服务,用于创建和运行集成了应用、数据、服务和系统的自动化工作流。 在此体系结构中,它用于协调用户输入、文档存储、文档处理、结果存储以及已处理文档的分析。
-
Azure Functions 是一款无服务器解决方案,可以让你减少代码编写、减少需要维护的基础结构并节省成本。 在此体系结构中,后端服务配置输入以利用 azure AI 文档智能
,并存储输出。 - Azure Data Lake Storage 是在 Azure 上构建企业数据湖的基础。 在此体系结构中,它用于存储原始 PDF 文档、机器学习结果和已处理的输出。
- Azure Cosmos DB 是一种用于新式应用开发的完全托管的 NoSQL 数据库和关系数据库。 在此体系结构中,它用于存储每个 PDF 文档中提取的见解。 Power BI 利用这些信息来生成见解。
- Power BI 是软件服务、应用和连接器的集合,它们共同协作,让你能够将不相关的数据源转换为一致、直观的交互式见解。 在此体系结构中,它用于分析文档处理结果。
备选方法
- 可以使用 Microsoft Fabric 将已处理的输出引入 Lakehouse,然后对输出数据执行进一步分析和处理,而不是使用 Power BI。
方案详细信息
表单处理通常是一项关键的业务功能。 许多公司仍然依赖于成本高昂、耗时且容易出错的手动流程。 替换手动流程可降低成本和风险,并使公司更加敏捷。
本文介绍了一种体系结构,可用于替换手动 PDF 表单处理或自动执行 PDF 表单处理的昂贵旧系统。 Azure AI 文档智能处理 PDF 表单,Logic Apps 提供工作流,Functions 提供数据处理功能。
有关部署信息,请参阅本文中的部署此方案。
可能的用例
本文中所述的解决方案可以处理多种类型的表单,包括:
- 发票和付款记录
- 采购订单
- 安全、事件和合规记录
- 健康筛查表单
- 客户反馈表
- 员工记录
- 学术和研究论文
- 带有手写注释的文档
- 来自您的域的自定义文档
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可靠性
可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单。
可靠的工作负荷是可复原且可用的工作负荷。 复原能力是指系统从故障中恢复并继续正常运行的能力。 复原能力的目标是在故障发生后将应用程序恢复到可完全正常运行的状态。 可用性衡量的是用户在需要时能否访问你的工作负荷。
此体系结构旨在用作入门体系结构,你可以快速部署该体系结构并创建其原型以提供业务解决方案。 如果原型成功,则可以根据需要扩展和增强体系结构,以满足其他要求。
此体系结构利用可缩放且可复原的 Azure 基础结构和技术。 例如,Azure Cosmos DB 具有内置的冗余和全局覆盖范围,你可以根据需要对其进行配置。
有关此解决方案使用的 Azure 服务的可用性保证,请参阅联机服务的服务级别协议 (SLA)。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅可靠性设计审查检查表。
此体系结构中使用的 Outlook 电子邮件帐户是以附件形式接收 PDF 表单的专用电子邮件帐户。 最好是将发件人限制为仅受信任的参与方,并防止恶意参与者向电子邮件帐户发送垃圾邮件。
部署此方案中所述的此体系结构的实现采取以下措施来提高安全性:
- PowerShell 和 Bicep 部署脚本使用 Azure 密钥保管库来存储敏感信息,使这些信息不会显示在终端屏幕上或存储在部署日志中。
- 托管标识在 Microsoft Entra ID 中提供了一个自动托管标识,供应用程序在连接到支持 Microsoft Entra 身份验证的资源时使用。 函数应用使用托管标识,以便代码不依赖于单个主体,并且不包含敏感标识信息。
成本优化
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单。
以下是关于优化成本的一些准则:
- 对体系结构使用即用即付策略,并根据需要横向扩展,而不是一开始就投资大规模资源。
- 部署此方案中所述的体系结构实现部署了适用于概念证明的初始解决方案。 部署脚本创建了具有最低资源要求的工作体系结构。 例如,部署脚本创建了一个最小的无服务器 Linux 主机来运行函数应用。
性能效率
性能效率是工作负荷以高效方式缩放的能力,以满足用户对它的需求。 有关详细信息,请参阅性能效率设计评审核对清单。
此体系结构使用具有内置缩放功能的服务,你可以用来提高性能效率。 下面是一些示例:
- 可以在无服务器基础结构中托管 Azure 逻辑应用和 Azure Functions。 有关详细信息,请参阅 Azure 无服务器概述:使用 Azure 逻辑应用和 Azure Functions 创建基于云的应用和解决方案
- 可以将 Azure Cosmos DB 配置为自动缩放其吞吐量。 有关详细信息,请参阅 在 Azure Cosmos DB - API for NoSQL 中的数据库或容器上预配自动缩放吞吐量。
部署此方案
可以部署此体系结构的基本版本,并将其用作部署自己的解决方案的起点。 存储库包括代码、部署脚本和部署指南。
示例会接收 PDF 表单,提取数据字段,并将数据保存在 Azure Cosmos DB 中。 Power BI 将数据可视化。 该设计使用模块化、元数据驱动的方法。 没有硬编码的表单字段。 它可以处理任何 PDF 表单。
无需修改代码即可按原样使用存储库来处理和可视化任何单页 PDF 表单,例如安全表单、发票、事件记录等。 要使用它,只需收集示例 PDF 表单,训练新模型以理解表单的布局,并将模型插入解决方案。 还需要重新设计数据集的 Power BI 报表,以便它提供所需的见解。
该实现使用 Azure AI Document Intelligence Studio 创建自定义模型。 此示例使用机器学习模型中保存的字段名称作为处理其他表单的引用。 创建自定义生成的机器学习模型只需要五个示例表单。 可以合并多达 100 个自定义生成的模型,以创建可以处理各种表单的复合机器学习模型。
部署存储库
此示例的代码位于 Azure PDF 表单处理自动化解决方案 GitHub 存储库中。 请遵循存储库中的部署指南进行操作。
部署注意事项
要处理新型 PDF 表单,请使用示例 PDF 文件创建新的机器学习模型。 模型准备就绪后,将模型 ID 插入解决方案。
此容器名称可在从 GitHub 存储库获取的部署脚本中配置。
该体系结构无法满足任何高可用性 (HA) 或灾难恢复 (DR) 要求。 如果要扩展和增强当前用于生产部署的体系结构,请考虑以下建议和最佳做法:
- 根据要求设计 HA/DR 体系结构,并在适用的情况下使用内置冗余功能。
- 更新 Bicep 部署代码以创建可以应对你的处理量的计算环境。
- 更新 Bicep 部署代码以创建更多体系结构组件的实例,以满足 HA/DR 要求。
- 在设计和预配存储时,请遵循 Azure 存储冗余中的准则。
- 在设计和预配逻辑应用时,请遵循业务连续性和灾难恢复中的准则。
- 在设计和预配函数应用时,请遵循 Azure Functions 中的可靠性中的准则。
- 在设计和预配使用 Azure Cosmos DB 创建的数据库时,请遵循使用 Azure Cosmos DB 实现高可用性中的准则。
- 如果考虑将此系统投入生产以处理大量 PDF 表单,可以修改部署脚本以创建具有更多资源的 Linux 主机。 为此,请修改 deploy-functionsapp.bicep 中的代码。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
首席作者:
- 盖尔周 |首席软件工程师
其他参与者:
- Said Nikjou | 高级云解决方案架构师
- 纳利尼·钱迪 |主要软件工程管理器
- 史蒂夫·德马科 |首席技术专家
- 特拉维斯·希尔伯特 |软件工程师 II
- DB Lee |首席软件工程师
- 马洛里·罗斯 |高级软件工程师
- Oscar Shimabukuro | 高级云解决方案架构师
- 回声王 |解决方案架构师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 视频:Azure PDF 表单处理自动化。
- Azure PDF 表单处理自动化解决方案 GitHub 存储库
- Azure 发票流程自动化解决方案 GitHub 存储库
- 业务流程自动化 GitHub 存储库
- 教程:创建使用 Azure 逻辑应用、Azure Functions 和 Azure 存储处理电子邮件的工作流
相关资源
- Azure 上的自定义文档处理模型
- 使用 Azure AI 搜索 索引文件内容和元数据
- 使用 Durable Functions 自动执行文档标识、分类和搜索
- 使用 Azure AI 文档智能自动化文档处理