GSP1140

概览
Document AI 是一种文档理解解决方案,接受非结构化数据(例如文档、邮件、账单、表单等),使数据更易于理解、分析和使用。该 API 通过内容分类、实体提取、高级搜索等功能提供结构化数据。
在本实验中,您将学习如何使用 Document AI 专用处理器,通过 Python 对专用文档进行分类和解析。对于解析和实体提取,我们将以账单为例进行说明。此过程和示例代码适用于 Document AI 支持的任何专用文档。
目标
在本实验中,您将学习如何执行以下任务:
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 启用 Document AI API
您必须先启用 Cloud Document AI API,然后才能开始使用 Document AI。
-
点击控制台顶部的激活 Cloud Shell 按钮,打开 Cloud Shell。
-
在 Cloud Shell 中,运行以下命令以启用 Document AI API。
gcloud services enable documentai.googleapis.com
您应会看到类似下图的界面:
Operation "operations/..." finished successfully.
您还需要安装 Pandas,这是适用于 Python 的开源数据分析库。
- 运行以下命令以安装 Pandas。
pip3 install --upgrade pandas
- 运行以下命令,安装 Document AI 的 Python 客户端库。
pip3 install --upgrade google-cloud-documentai
您应会看到类似下图的界面:
...
Installing collected packages: google-cloud-documentai
Successfully installed google-cloud-documentai-2.15.0
现在,您可以使用 Document AI API 了!
点击检查我的进度以验证是否完成了以下目标:
启用 Document AI API
任务 2. 创建表单解析器处理器
在本教程中,您必须先创建一个表单解析器处理器实例,以便在 Document AI Platform 中使用。
- 在导航菜单中,点击人工智能下的查看所有产品,然后选择 Document AI。

- 点击探索处理器,向下滚动到专用,然后在账单解析器中点击创建处理器。

-
将其命名为 lab-invoice-parser,并从列表中选择距离最近的区域。
-
点击创建以创建处理器。
-
复制您的处理器 ID。您稍后必须在代码中使用此 ID

创建处理器
下载示例文档
我们提供了一些示例文档,供您在此实验中使用。
- 运行以下命令,将示例表单下载到 Cloud Shell。
gcloud storage cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/procurement_multi_document.pdf .
gcloud storage cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/google_invoice.pdf .
- 使用以下命令确认文件已下载到 Cloud Shell:
ls
您应会看到类似下图的界面:
google_invoice.pdf procurement_multi_document.pdf
任务 3. 提取实体
现在,您可以从文件中提取架构化实体,包括置信度得分、属性和标准化值。
发出 API 请求的代码与上一步相同,可以通过在线请求或批量请求完成。
您将从实体中获取以下信息:
-
实体类型
- (例如
invoice_date、receiver_name、total_amount)
-
原始值
-
标准化值
-
置信度值
某些实体类型(例如 line_item)也可能包含属性,属性属于嵌套实体,例如 line_item/unit_price 和 line_item/description。此示例对嵌套结构进行扁平化处理,以便于查看。
账单解析器
- 在 Cloud Shell 中,创建一个名为
extraction.py 的文件,并将以下代码粘贴到该文件中:
import pandas as pd
from google.cloud import documentai_v1 as documentai
def online_process(
project_id: str,
location: str,
processor_id: str,
file_path: str,
mime_type: str,
) -> documentai.Document:
"""
使用 Document AI Online Processing API 处理文档。
"""
opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}
# 实例化客户端
documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts)
# 处理器的完整资源名称,例如:
# projects/project-id/locations/location/processor/processor-id
# 您必须先在 Cloud 控制台中创建新处理器
resource_name = documentai_client.processor_path(project_id, location, processor_id)
# 将文件读入内存
with open(file_path, "rb") as file:
file_content = file.read()
# 将二进制数据加载到 Document AI RawDocument 对象中
raw_document = documentai.RawDocument(content=file_content, mime_type=mime_type)
# 配置处理请求
request = documentai.ProcessRequest(name=resource_name, raw_document=raw_document)
# 使用 Document AI 客户端处理示例表单
result = documentai_client.process_document(request=request)
return result.document
PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "YOUR_PROJECT_LOCATION" # 格式为“us”或“eu”
PROCESSOR_ID = "INVOICE_PARSER_ID" # 在 Cloud 控制台中创建处理器
# 当前工作目录中的本地文件
FILE_PATH = "google_invoice.pdf"
# 请参阅 https://cloud.google.com/document-ai/docs/processors-list
# 了解支持的文件类型
MIME_TYPE = "application/pdf"
document = online_process(
project_id=PROJECT_ID,
location=LOCATION,
processor_id=PROCESSOR_ID,
file_path=FILE_PATH,
mime_type=MIME_TYPE,
)
types = []
raw_values = []
normalized_values = []
confidence = []
# 获取每个键值对及其对应的置信度得分。
for entity in document.entities:
types.append(entity.type_)
raw_values.append(entity.mention_text)
normalized_values.append(entity.normalized_value.text)
confidence.append(f"{entity.confidence:.0%}")
# 获取具有置信度得分的属性(子实体)
for prop in entity.properties:
types.append(prop.type_)
raw_values.append(prop.mention_text)
normalized_values.append(prop.normalized_value.text)
confidence.append(f"{prop.confidence:.0%}")
# 创建 Pandas DataFrame,以表格格式打印值。
df = pd.DataFrame(
{
"Type": types,
"Raw Value": raw_values,
"Normalized Value": normalized_values,
"Confidence": confidence,
}
)
print(df)
-
将 INVOICE_PARSER_ID 替换为您之前创建的账单解析器处理器的 ID,并使用文件 google_invoice.pdf。
-
将 YOUR_PROJECT_ID 和 YOUR_PROJECT_LOCATION 分别替换为您的 Google Cloud 项目 ID 和处理器位置。
-
运行脚本:
python3 extraction.py
输出应如下所示:
Type Raw Value Normalized Value Confidence
0 due_date Sep 30, 2019 2019-09-30 99%
1 net_amount 22,379.39 22379.39 99%
2 total_amount 19,647.68 19647.68 99%
3 invoice_date Sep 24, 2019 2019-09-24 98%
4 total_tax_amount 1,767.97 1767.97 94%
5 receiver_name Jane Smith, 88%
6 receiver_address 1600 Amphitheatre Pkway Mountain View, CA 94043 77%
7 invoice_id 23413561D 60%
8 freight_amount 199.99 199.99 60%
9 invoice_type invoice_statement 59%
10 currency $ USD 58%
11 supplier_name Google Google 37%
12 line_item 9.99 12 12 ft HDMI cable 119.88 100%
13 line_item/unit_price 9.99 9.99 95%
14 line_item/quantity 12 12 75%
15 line_item/description 12 ft HDMI cable 64%
16 line_item/amount 119.88 119.88 90%
17 line_item 12 399.99 27" Computer Monitor 4,799.88 100%
18 line_item/quantity 12 12 76%
19 line_item/unit_price 399.99 399.99 95%
20 line_item/description 27" Computer Monitor 42%
21 line_item/amount 4,799.88 4799.88 93%
22 line_item Ergonomic Keyboard 12 59.99 719.88 100%
23 line_item/description Ergonomic Keyboard 42%
24 line_item/quantity 12 12 75%
25 line_item/unit_price 59.99 59.99 94%
26 line_item/amount 719.88 719.88 85%
27 line_item Optical mouse 12 19.99 239.88 100%
28 line_item/description Optical mouse 55%
29 line_item/quantity 12 12 72%
30 line_item/unit_price 19.99 19.99 94%
31 line_item/amount 239.88 239.88 81%
32 line_item Laptop 12 1,299.99 15,599.88 100%
33 line_item/description Laptop 65%
34 line_item/quantity 12 12 71%
35 line_item/unit_price 1,299.99 1299.99 94%
36 line_item/amount 15,599.88 15599.88 91%
37 line_item Misc processing fees 899.99 899.99 1 100%
38 line_item/description Misc processing fees 54%
39 line_item/unit_price 899.99 899.99 92%
40 line_item/amount 899.99 899.99 82%
41 line_item/quantity 1 1 68%
- 创建 Cloud Storage 存储桶,并将命令
docai_outputs.txt 生成的输出上传到该存储桶。
# 创建存储桶
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb gs://$PROJECT_ID-docai
# 创建并上传文件
python3 extraction.py > docai_outputs.txt
gsutil cp docai_outputs.txt gs://$PROJECT_ID-docai
创建 Cloud Storage 存储桶并上传输出文件
可选:试用其他专用处理器
您已成功使用用于处理采购单据的 Document AI 对文档进行分类,并解析账单。Document AI 还支持下面列出的其他专用解决方案:
您可以按照相同的步骤,使用相同的代码来处理任何专用处理器。
如果您想试用其他专用解决方案,可以重新执行实验,使用其他处理器类型和专用示例文档。
注意:部分身份证件、借贷单据和合同处理器目前仅限部分用户使用。如果您有适用于这些处理器的商业应用场景,请先填写并提交相应的申请表单,然后再继续操作。
示例文档
以下是一些示例文档,您可以使用它们试用其他专用处理器。
您可以在文档中找到其他示例文档和处理器输出。
恭喜!
恭喜!您已成功使用 Document AI 解析了账单。您还学习了如何使用 Python 客户端库调用 Document AI API。
后续步骤/了解详情
请查看以下资源,详细了解 Document AI 和 Python 客户端库:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 11 月 7 日
上次测试实验的时间:2024 年 11 月 7 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。