教程:使用文档 AI 创建文档处理管道¶
简介¶
使用 Document AI,您可以处理各种格式的文档,并从包含大量文本的段落和包含文本的图像(如徽标、手写文本 [签名] 或复选标记)中提取信息。本教程通过设置所需的对象和权限,以及创建要在处理管道中使用的 Document AI 模型构建,向您介绍 Document AI。
教程使用 Snowsight Web 界面。对于需要使用 SQL 的步骤,您可以使用任何支持执行 SQL 的 Snowflake 客户端。
您将学习以下内容¶
在本教程中,您将学习如何进行以下操作:
设置使用 Document AI 所需的对象和权限。
使用 Snowsight 中的 Document AI 用户界面准备 Document AI 模型构建,以便从非结构化文档中提取数据。
使用 Document AI 模型构建以及流和任务创建用于连续处理暂存区中新文档的管道。
先决条件¶
要完成本教程,需要满足以下先决条件:
您必须作为具有 ACCOUNTADMIN 角色的用户进行连接,该角色用于创建本教程中使用的自定义角色,并授予新角色所需的权限。
您必须在 Document AI 支持的其中一个商业区域拥有 Snowflake 账户。有关受支持区域的更多信息,请参阅 Document AI 可用性。
您必须拥有一个可以使用 Document AI 的仓库。有关选择仓库的详细信息,请参阅 确定 Document AI 的最佳仓库规模。
设置所需的对象和权限¶
在本节中,您将执行以下操作:
创建包含 Document AI 模型构建的数据库和架构。
创建自定义角色以准备 Document AI 模型构建和文档处理管道。
向自定义角色授予所需的权限。
创建数据库、架构和自定义角色¶
要创建数据库、架构和角色以使用 Document AI,请执行以下操作:
创建在其中创建 Document AI 模型构建的数据库和架构:
CREATE DATABASE doc_ai_db; CREATE SCHEMA doc_ai_db.doc_ai_schema;
创建自定义角色
doc_ai_role
以准备 Document AI 模型构建和创建处理管道:USE ROLE ACCOUNTADMIN; CREATE ROLE doc_ai_role;
授予所需的权限¶
要授予使用 Document AI 所需的权限,请执行以下操作:
向
doc_ai_role
角色授予 SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR 数据库角色:GRANT DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR TO ROLE doc_ai_role;
向
doc_ai_role
角色授予仓库使用和操作权限:GRANT USAGE, OPERATE ON WAREHOUSE <your_warehouse> TO ROLE doc_ai_role;
向
doc_ai_role
授予使用您创建的数据库和架构的权限:GRANT USAGE ON DATABASE doc_ai_db TO ROLE doc_ai_role; GRANT USAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
向
doc_ai_role
角色授予在架构上创建暂存区的权限,以存储要提取的文档:GRANT CREATE STAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
向
doc_ai_role
角色授予创建模型构建(DOCUMENT_INTELLIGENCE 类的实例)的权限:GRANT CREATE SNOWFLAKE.ML.DOCUMENT_INTELLIGENCE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
向
doc_ai_role
角色授予使用流和任务创建处理管道所需的权限:GRANT CREATE STREAM, CREATE TABLE, CREATE TASK, CREATE VIEW ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role; GRANT EXECUTE TASK ON ACCOUNT TO ROLE doc_ai_role;
向教程用户授予
doc_ai_role
,以便在教程的后续步骤中使用:GRANT ROLE doc_ai_role TO USER <your_user_name>;
本部分所学内容¶
在本部分中,您学习了如何:
创建包含 Document AI 模型构建的数据库和架构。
创建
doc_ai_role
自定义角色。向
doc_ai_role
角色授予所需的权限,并将该角色授予教程用户。
准备 Document AI 模型构建¶
在本部分中,您将通过创建模型构建并上传文档以测试模型来准备 Document AI 模型构建。
Document AI 模型构建表示文档的单一类型。对于本教程,您将创建用于从检查审查中提取信息的模型构建。Document AI 模型构建包括模型、要提取的数据值以及上传的用于测试模型的文档。
创建 Document AI 模型构建¶
要创建 Document AI 模型构建,请执行以下操作:
登录 Snowsight。
在导航菜单中,选择 AI & ML » Document AI。
选择仓库。
选择 + Build。
在显示的对话框中,输入
inspection_reviews
作为模型构建的名称,选择位置(doc_ai_db
数据库和doc_ai_schema
架构)。选择 Create。
将文档上传到 Document AI 模型构建¶
要将文档上传到新创建的 Document AI 模型构建,请执行以下操作:
要获取测试模型构建的教程所需的文档,请将
zip 文件
下载到本地文件系统。解压缩内容,其中包括 PDF 文档。
在
inspection_reviews
模型构建中,选择 Build Details 选项卡。选择 Upload documents。
选择 Browse 或拖动您下载的文档。
选择 Upload。
本部分所学内容¶
在本部分中,您学习了如何:
创建 Document AI 模型构建。
上传文档以测试 Document AI 模型构建。
定义数据值并审查结果¶
在本部分中,您将通过用自然语言询问 Document AI 模型问题来定义数据值。然后,您将审查该模型提供的答案。
数据值是您希望从文档中提取的信息。值由值名称和使用自然语言提出的问题组成。
要定义 Document AI 模型构建的值,请执行以下操作:
在
inspection_reviews
模型构建中,选择 Build Details 选项卡。选择 Define values。
在 Documents review 视图中,选择 + Value。
对于每个文档,输入以下值名称和问题对:
inspection_date
:检查日期是什么?inspection_grade
:等级是什么?inspector
:谁进行了检查?list_of_units
:所有的单位是什么?
对于每个文档和数据值,请审查模型提供的答案:
如果答案正确,请选择复选标记。
如果答案不正确,请手动输入正确的值。
本部分所学内容¶
在本部分中,您学习了如何:
通过用自然语言向模型提问来定义要提取的数据值。
通过确认或更正模型提供的答案来审查结果。
发布 Document AI 模型构建¶
在本部分中,您将发布 Document AI 模型构建,以便在处理管道中使用它进行提取。发布模型构建会启用在生产中使用模型构建的最新版本。
要发布模型构建,请执行以下操作:
在
inspection_reviews
模型构建中,选择 Build Details 选项卡。在 Model accuracy 下,选择 Publish version。
在显示的对话框中,选择 Publish 以确认。
备注
如果模型精度和结果不令人满意,您可以选择微调模型来改进模型。微调不是本教程的一部分。有关评估和训练模型的详细信息,请参阅 评估 Document AI 模型。
本部分所学内容¶
在本部分中,您发布了 Document AI 模型构建,以便在处理管道中使用模型构建进行提取。
创建文档处理管道¶
在本部分中,您将使用已经准备的 Document AI 模型构建、流和任务创建处理管道。管道将从内部暂存区存储的新检查文档中提取信息。
要创建处理管道,请执行以下操作:
使用流和任务设置管道。
将新文档上传到内部暂存区。
查看提取的信息。
设置处理管道¶
创建内部
my_pdf_stage
暂存区以存储文档:CREATE OR REPLACE STAGE my_pdf_stage DIRECTORY = (ENABLE = TRUE) ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
在
my_pdf_stage
暂存区中创建my_pdf_stream
流:CREATE STREAM my_pdf_stream ON STAGE my_pdf_stage;
刷新将存储暂存文档文件的目录表的元数据:
ALTER STAGE my_pdf_stage REFRESH;
指定数据库和架构:
USE DATABASE doc_ai_db; USE SCHEMA doc_ai_schema;
创建
pdf_reviews
表以存储有关文档(如file_name
)的信息和要从 PDF 文档中提取的数据:CREATE OR REPLACE TABLE pdf_reviews ( file_name VARCHAR, file_size VARIANT, last_modified VARCHAR, snowflake_file_url VARCHAR, json_content VARCHAR );
json_content
列将包括 JSON 格式的提取信息。创建
load_new_file_data
任务以处理暂存区中的新文档:CREATE OR REPLACE TASK load_new_file_data WAREHOUSE = <your_warehouse> SCHEDULE = '1 minute' COMMENT = 'Process new files in the stage and insert data into the pdf_reviews table.' WHEN SYSTEM$STREAM_HAS_DATA('my_pdf_stream') AS INSERT INTO pdf_reviews ( SELECT RELATIVE_PATH AS file_name, size AS file_size, last_modified, file_url AS snowflake_file_url, inspection_reviews!PREDICT(GET_PRESIGNED_URL('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content FROM my_pdf_stream WHERE METADATA$ACTION = 'INSERT' );
请注意,新创建的任务会自动暂停。
启动新创建的任务:
ALTER TASK load_new_file_data RESUME;
备注
文档 AI 不支持 无服务器任务。
将新文档上传到内部暂存区¶
要获取教程所需的文档,请将
zip 文件
下载到本地文件系统。解压缩内容,其中包括 PDF 文件。
在 Snowsight 中,选择 Data » Databases。
选择
doc_ai_db
数据库、doc_ai_schema
和my_pdf_stage
暂存区。选择 + Files。
在显示的 Upload Your Files 对话框中,选择您刚刚下载的文件。
选择 Upload。
查看提取的信息¶
将文档上传到暂存区后,查看从新文档提取的信息:
SELECT * FROM pdf_reviews;
创建
pdf_reviews_2
表以分析在单独列中提取的信息:CREATE OR REPLACE TABLE doc_ai_db.doc_ai_schema.pdf_reviews_2 AS ( WITH temp AS ( SELECT RELATIVE_PATH AS file_name, size AS file_size, last_modified, file_url AS snowflake_file_url, inspection_reviews!PREDICT(get_presigned_url('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content FROM directory(@my_pdf_stage) ) SELECT file_name, file_size, last_modified, snowflake_file_url, json_content:__documentMetadata.ocrScore::FLOAT AS ocrScore, f.value:score::FLOAT AS inspection_date_score, f.value:value::STRING AS inspection_date_value, g.value:score::FLOAT AS inspection_grade_score, g.value:value::STRING AS inspection_grade_value, i.value:score::FLOAT AS inspector_score, i.value:value::STRING AS inspector_value, ARRAY_TO_STRING(ARRAY_AGG(j.value:value::STRING), ', ') AS list_of_units FROM temp, LATERAL FLATTEN(INPUT => json_content:inspection_date) f, LATERAL FLATTEN(INPUT => json_content:inspection_grade) g, LATERAL FLATTEN(INPUT => json_content:inspector) i, LATERAL FLATTEN(INPUT => json_content:list_of_units) j GROUP BY ALL );
查看输出:
SELECT * FROM pdf_reviews_2;
该表使用 FLATTEN 函数将 json_content
JSON 解析为单独的列,以便于查看。
该表包含为检查文档准备模型构建时定义的数据值(如 inspection_grade_value
、inspection_date_value
)以及相应的置信度分数(inspection_grade_score
、inspection_date_score
)。
本部分所学内容¶
在本部分中,您学习了如何:
创建一个内部暂存区以存储新文档。
创建准备处理管道所需的流和任务。
将文档上传到内部暂存区。
查看表中提取的信息。
了解详情¶
恭喜!您已成功完成本教程。您现在已经准备好开始使用 Document AI 处理自己的用例了。
在此过程中,您学习了如何:
设置使用 Document AI 所需的对象和权限。
创建 Document AI 模型构建。
将文档上传到 Document AI 模型构建以测试模型。
通过用自然语言向模型提问来定义要提取的数据值。
通过确认或更正模型提供的答案来审查结果。
发布 Document AI 模型构建,以便在处理管道中使用模型构建进行提取。
通过创建流和任务并使用 Document AI 模型构建从新文档中提取信息来准备文档处理管道。
其他资源¶
使用以下资源继续学习: