从文档中提取信息
注释
有关更多详细信息,请参阅 “文本和图像 ”选项卡!
如今的业务流程在很大程度上依赖于表单、收据和发票等文档中包含的数据。 手动处理可能会引入延迟和错误,使数据提取自动化比以往更加重要。
Azure 内容理解的工作原理
Azure 内容理解遵循模型驱动的提取工作流,其中非结构化内容作为结构化数据引入、分析和返回。
引入内容:将内容提交到 Azure 内容理解。
AI 支持的分析:该服务使用:光学字符识别(OCR)、语音识别、自然语言理解和多模式 AI 模型的组合来分析内容。
结构化输出:服务返回与模型匹配的结构化结果(例如 JSON),使数据易于存储、搜索或集成到下游系统。
注释
JSON (JavaScript 对象表示法)是一种基于文本的数据格式,用于在系统之间存储和交换结构化数据。 人类很容易读取和写入,并且计算机易于分析和生成。
了解架构
OCR(光学字符识别)允许计算机从图片中“读取”文本,如扫描的文档、收据的照片或打印页面的图像,并将该文本转换为可编辑和可搜索的数字文本。 基本 OCR 用于识别印刷体文本,重点是文本提取,并且 不 了解字词之间的含义、上下文或关系。
Azure 内容理解的文档分析功能除了简单的基于 OCR 的文本提取之外,还包括 基于架构 的字段提取及其值。 架构驱动的方法是将 Azure 内容理解与基本 OCR 或听录服务区分开来。
架构描述 要提取哪些信息 以及如何 构造该信息。 定义架构时,指定要提取的字段。 架构列出了你关注的特定字段或实体。
例如,假设你定义了一个架构,该架构包含通常在发票中找到的常用字段,例如:
- 供应商名称
- 发票号码
- 发票日期
- 客户名称
- 自定义地址
- 项目 - 订购的项目,其中每个项目包括:
- 项目描述
- 单价
- 订购数量
- 行项总计
- 发票小计
- 税款
- 寄送费用
- 发票总计
现在,假设需要从以下发票中提取此信息:
Azure 内容理解可以将发票架构应用于发票,并标识相应的字段,即使这些字段标有不同的名称(或根本不标记)。 生成的分析生成如下所示的结果:
架构还定义字段结构。 架构支持 结构化字段和嵌套字段,而不仅仅是平面文本。 例如:
-
Items是集合 - 每个项都有
description、unit price、quantity和line total
识别结构化字段可确保 Azure 内容理解能够理解值之间的关系,而仅靠 OCR 是无法做到的。
在发票示例中,对于每个检测到 的字段,可以提取嵌套值:
- 供应商名称:Adventure Works Cycles
- 发票编号:1234
- 发票日期:2025/03/07
- 客户名称:John Smith
- 自定义地址:123 河街,马什敦,英格兰马什敦,GL1 234
-
项目:
- 项目 1:
- 项目说明:38 英寸赛车自行车(红色)
- 单价:1299.00
- 订购数量:1
- 行项总计:1299.00
- 项目 2:
- 项目说明:自行车头盔(黑色)
- 单价:25.99
- 订购数量:1
- 行项总计:25.99
- 项目 3:
- 项目说明:自行车衬衫 (L)
- 单价:42.50
- 订购数量:2
- 行项总计:85.00
- 项目 1:
- 发票小计:1409.99
- 税:140.99
- 发货费用:35.00
- 发票总计:1585.98
Azure 内容理解提取预期的含义,而不仅仅是标签。 模式在语义上应用,这意味着:
- 即使标签不同,也可以提取字段
- 即使缺少标签,也可以提取字段
例如, 发票编号、 发票 #或未标记的数字都可以映射到 InvoiceNumber 分析器是否确定它们表示相同的概念。
了解分析器
分析器是 Azure 内容理解中的一个单元,它采用输入、应用 AI 分析并生成结构化结果。 分析器一致地对所有传入内容应用相同的提取逻辑。 配置后,分析器可确保每次分析请求都一致地重复使用架构。 分析器还会生成可预测的 JSON 结果。 结构化结果使下游处理(存储、搜索、自动化)更加轻松。
Azure 内容理解为常见方案提供预生成分析器,并支持根据需求定制的自定义分析器。 在高级别中:
- 选择或创建分析器。
- 分析器包括定义字段和结构的架构。
- 您提交内容以供分析
- 服务应用架构
- 你会收到与架构匹配的结构化 JSON 结果
在 Foundry 门户中使用 Azure 内容理解
注释
Foundry 门户具有经典用户界面(UI)和新用户界面。
创建 Microsoft Foundry 资源后,可以使用 经典 Foundry 门户界面 测试 Azure 内容理解。 Foundry 门户提供内容示例,并允许上传自己的材料进行分析。
可以使用可视界面选择源文档并提取默认信息字段。 例如,在文档图像上试用 Azure 内容理解时,该服务将返回文档文本和文本布局信息。
Azure 内容理解的分析器可识别文档中的文本值,并将其映射到特定字段。 例如,给定发票后,服务将返回字段(如供应商地址)和字段中的数据(如 123 456th Street)。
在 Foundry 门户中,还可以查看处理的 JSON 结果。
使用 Azure 内容理解生成客户端应用程序
可以使用 内容理解 API 生成以编程方式提取数据的轻型客户端应用程序。
注释
客户端应用程序是在用户的设备上运行的软件程序,它通过网络从另一个系统(通常是服务器)请求服务或数据。 客户端是用户与之交互的应用程序的一部分,而服务器在后台执行繁重的工作。 应用程序可以从服务请求数据或作,并使用 API 接收结构化响应。
使用内容理解 API 时,可以选择预生成分析器或创建自定义分析器。 预生成分析器包括: prebuilt-invoice、 prebuilt-imageSearch、 prebuilt-audioSearch和 prebuilt-videoSearch。 向分析器提交要分析的内容时,分析是 异步的,这意味着稍后在分析器准备就绪时会得到结果。 由于分析是异步的,因此需要轮询操作位置 URL(或 analyzerResults),直到作业成功。
使用 Azure 内容理解 Python SDK
让我们看看如何使用 Python SDK 从 URL 分析发票的过程。
- 安装 Azure 内容理解 Python SDK。
python -m pip install azure-ai-contentunderstanding
确定 Foundry 资源终结点和 API 密钥或 Microsoft Entra ID。 终结点通常如下所示:
https://<your-resource-name>.services.ai.azure.com/创建并运行客户端应用程序代码。
analzyer_id是预生成分析器的 ID。 可 在此处找到预生成分析器 ID 值的列表。
import os
from azure.ai.contentunderstanding import ContentUnderstandingClient
from azure.core.credentials import AzureKeyCredential
endpoint = os.environ["FOUNDRY_ENDPOINT"]
key = os.environ["FOUNDRY_KEY"]
client = ContentUnderstandingClient(endpoint=endpoint, credential=AzureKeyCredential(key))
# 1) start analysis with analyzer id + inputs
analyzer_id = "prebuilt-invoice"
inputs = [
{"url": "https://github.com/Azure-Samples/azure-ai-content-understanding-python/raw/refs/heads/main/data/invoice.pdf"}
]
# 2) wait for the Long Running Operation (LRO) to complete
poller = client.begin_analyze(analyzer_id=analyzer_id, inputs=inputs) # starts LRO
result = poller.result() # waits for completion (polling handled by SDK)
# 3) read structured fields + markdown
# The result typically includes extracted "fields" and "markdown" per input content item.
for content in result.contents:
print(content.markdown)
print(content.fields)
生成的输出是 JSON,显示提取的 markdown、字段、字段中的数据和置信度分数。 例如:
{
"status": "Succeeded",
"result": {
"analyzerId": "prebuilt-invoice",
"apiVersion": "2025-05-01-preview",
"contents": [
{
"markdown": "# INVOICE\n\nCONTOSO LTD.\n\nContoso Headquarters\n123 456th St\nNew York, NY, 10001\n\nINVOICE: INV-100\n\nINVOICE DATE: 11/15/2019\n\nDUE DATE: 12/15/2019\n\nCUSTOMER NAME: MICROSOFT CORPORATION\n",
"fields": {
"CustomerName": {
"type": "string",
"valueString": "MICROSOFT CORPORATION",
"confidence": 0.95,
},
"InvoiceDate": {
"type": "date",
"valueDate": "2019-11-15",
"confidence": 0.994,
}
}
}
]
}
}
接下来,了解如何使用 Azure 内容理解分析器从音频和视频中提取结构化数据。