教程:使用文档 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,请执行以下操作:

  1. 创建在其中创建 Document AI 模型构建的数据库和架构:

    CREATE DATABASE doc_ai_db;
    CREATE SCHEMA doc_ai_db.doc_ai_schema;
    
    Copy
  2. 创建自定义角色 doc_ai_role 以准备 Document AI 模型构建和创建处理管道:

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE doc_ai_role;
    
    Copy

授予所需的权限

要授予使用 Document AI 所需的权限,请执行以下操作:

  1. doc_ai_role 角色授予 SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR 数据库角色:

    GRANT DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR TO ROLE doc_ai_role;
    
    Copy
  2. doc_ai_role 角色授予仓库使用和操作权限:

    GRANT USAGE, OPERATE ON WAREHOUSE <your_warehouse> TO ROLE doc_ai_role;
    
    Copy
  3. 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;
    
    Copy
  4. doc_ai_role 角色授予在架构上创建暂存区的权限,以存储要提取的文档:

    GRANT CREATE STAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    
    Copy
  5. doc_ai_role 角色授予创建模型构建(DOCUMENT_INTELLIGENCE 类的实例)的权限:

    GRANT CREATE SNOWFLAKE.ML.DOCUMENT_INTELLIGENCE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    
    Copy
  6. 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;
    
    Copy
  7. 向教程用户授予 doc_ai_role,以便在教程的后续步骤中使用:

    GRANT ROLE doc_ai_role TO USER <your_user_name>;
    
    Copy

本部分所学内容

在本部分中,您学习了如何:

  • 创建包含 Document AI 模型构建的数据库和架构。

  • 创建 doc_ai_role 自定义角色。

  • doc_ai_role 角色授予所需的权限,并将该角色授予教程用户。

准备 Document AI 模型构建

在本部分中,您将通过创建模型构建并上传文档以测试模型来准备 Document AI 模型构建。

Document AI 模型构建表示文档的单一类型。对于本教程,您将创建用于从检查审查中提取信息的模型构建。Document AI 模型构建包括模型、要提取的数据值以及上传的用于测试模型的文档。

创建 Document AI 模型构建

要创建 Document AI 模型构建,请执行以下操作:

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 AI & ML » Document AI

  3. 选择仓库。

  4. 选择 + Build

  5. 在显示的对话框中,输入 inspection_reviews 作为模型构建的名称,选择位置(doc_ai_db 数据库和 doc_ai_schema 架构)。

  6. 选择 Create

将文档上传到 Document AI 模型构建

要将文档上传到新创建的 Document AI 模型构建,请执行以下操作:

  1. 要获取测试模型构建的教程所需的文档,请将 zip 文件 下载到本地文件系统。

  2. 解压缩内容,其中包括 PDF 文档。

  3. inspection_reviews 模型构建中,选择 Build Details 选项卡。

  4. 选择 Upload documents

  5. 选择 Browse 或拖动您下载的文档。

  6. 选择 Upload

本部分所学内容

在本部分中,您学习了如何:

  • 创建 Document AI 模型构建。

  • 上传文档以测试 Document AI 模型构建。

定义数据值并审查结果

在本部分中,您将通过用自然语言询问 Document AI 模型问题来定义数据值。然后,您将审查该模型提供的答案。

数据值是您希望从文档中提取的信息。值由值名称和使用自然语言提出的问题组成。

要定义 Document AI 模型构建的值,请执行以下操作:

  1. inspection_reviews 模型构建中,选择 Build Details 选项卡。

  2. 选择 Define values

  3. Documents review 视图中,选择 + Value

  4. 对于每个文档,输入以下值名称和问题对:

    • inspection_date:检查日期是什么?

    • inspection_grade:等级是什么?

    • inspector:谁进行了检查?

    • list_of_units:所有的单位是什么?

  5. 对于每个文档和数据值,请审查模型提供的答案:

    • 如果答案正确,请选择复选标记。

    • 如果答案不正确,请手动输入正确的值。

本部分所学内容

在本部分中,您学习了如何:

  • 通过用自然语言向模型提问来定义要提取的数据值。

  • 通过确认或更正模型提供的答案来审查结果。

发布 Document AI 模型构建

在本部分中,您将发布 Document AI 模型构建,以便在处理管道中使用它进行提取。发布模型构建会启用在生产中使用模型构建的最新版本。

要发布模型构建,请执行以下操作:

  1. inspection_reviews 模型构建中,选择 Build Details 选项卡。

  2. Model accuracy 下,选择 Publish version

  3. 在显示的对话框中,选择 Publish 以确认。

备注

如果模型精度和结果不令人满意,您可以选择微调模型来改进模型。微调不是本教程的一部分。有关评估和训练模型的详细信息,请参阅 评估 Document AI 模型

本部分所学内容

在本部分中,您发布了 Document AI 模型构建,以便在处理管道中使用模型构建进行提取。

创建文档处理管道

在本部分中,您将使用已经准备的 Document AI 模型构建、流和任务创建处理管道。管道将从内部暂存区存储的新检查文档中提取信息。

要创建处理管道,请执行以下操作:

  • 使用流和任务设置管道。

  • 将新文档上传到内部暂存区。

  • 查看提取的信息。

设置处理管道

  1. 创建内部 my_pdf_stage 暂存区以存储文档:

    CREATE OR REPLACE STAGE my_pdf_stage
      DIRECTORY = (ENABLE = TRUE)
      ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
    
    Copy
  2. my_pdf_stage 暂存区中创建 my_pdf_stream 流:

    CREATE STREAM my_pdf_stream ON STAGE my_pdf_stage;
    
    Copy
  3. 刷新将存储暂存文档文件的目录表的元数据:

    ALTER STAGE my_pdf_stage REFRESH;
    
    Copy
  4. 指定数据库和架构:

    USE DATABASE doc_ai_db;
    USE SCHEMA doc_ai_schema;
    
    Copy
  5. 创建 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
    );
    
    Copy

    json_content 列将包括 JSON 格式的提取信息。

  6. 创建 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'
    );
    
    Copy

    请注意,新创建的任务会自动暂停。

  7. 启动新创建的任务:

    ALTER TASK load_new_file_data RESUME;
    
    Copy

备注

文档 AI 不支持 无服务器任务

将新文档上传到内部暂存区

  1. 要获取教程所需的文档,请将 zip 文件 下载到本地文件系统。

  2. 解压缩内容,其中包括 PDF 文件。

  3. 在 Snowsight 中,选择 Data » Databases

  4. 选择 doc_ai_db 数据库、doc_ai_schemamy_pdf_stage 暂存区。

  5. 选择 + Files

  6. 在显示的 Upload Your Files 对话框中,选择您刚刚下载的文件。

  7. 选择 Upload

查看提取的信息

  1. 将文档上传到暂存区后,查看从新文档提取的信息:

    SELECT * FROM pdf_reviews;
    
    Copy
  2. 创建 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
    );
    
    Copy
  3. 查看输出:

    SELECT * FROM pdf_reviews_2;
    
    Copy

该表使用 FLATTEN 函数将 json_content JSON 解析为单独的列,以便于查看。

该表包含为检查文档准备模型构建时定义的数据值(如 inspection_grade_valueinspection_date_value)以及相应的置信度分数(inspection_grade_scoreinspection_date_score)。

本部分所学内容

在本部分中,您学习了如何:

  • 创建一个内部暂存区以存储新文档。

  • 创建准备处理管道所需的流和任务。

  • 将文档上传到内部暂存区。

  • 查看表中提取的信息。

了解详情

恭喜!您已成功完成本教程。您现在已经准备好开始使用 Document AI 处理自己的用例了。

在此过程中,您学习了如何:

  • 设置使用 Document AI 所需的对象和权限。

  • 创建 Document AI 模型构建。

  • 将文档上传到 Document AI 模型构建以测试模型。

  • 通过用自然语言向模型提问来定义要提取的数据值。

  • 通过确认或更正模型提供的答案来审查结果。

  • 发布 Document AI 模型构建,以便在处理管道中使用模型构建进行提取。

  • 通过创建流和任务并使用 Document AI 模型构建从新文档中提取信息来准备文档处理管道。

其他资源

使用以下资源继续学习:

语言: 中文