类别:

文件函数 (AI Functions)

PARSE_DOCUMENT (SNOWFLAKE.CORTEX)

备注

AI_PARSE_DOCUMENT is the latest version of this function. Use AI_PARSE_DOCUMENT for the latest functionality. You can continue to use PARSE_DOCUMENT (SNOWFLAKE.CORTEX).

以 JSON 格式字符串形式返回从 Snowflake 暂存区上文档中提取的内容。此函数支持两种提取类型:光学字符识别 (OCR) 和布局。有关更多信息,请参阅 AISQL AI_PARSE_DOCUMENT

语法

SNOWFLAKE.CORTEX.PARSE_DOCUMENT( '@<stage>', '<path>', [ <options> ] )
Copy

实参

必填:

stage

Snowflake 暂存区的名称。

path

Snowflake 暂存区上文档的相对路径。

可选:

options

包含用于解析文档的选项的 OBJECT 值。支持的键如下所示。所有键都是可选的。

  • 'mode':指定解析模式。支持的模式为:

    • 'OCR':函数仅提取文本。这是默认模式。

    • 'LAYOUT':函数提取布局和文本,包括表格等结构内容。

  • 'page_split':如果设置为 TRUE,则该函数将文档拆分为多个页面,并分别处理每个页面。仅支持 PDF、PowerPoint (.pptx) 和 Word (.docx) 文档。其他格式的文档会返回错误。默认为 FALSE。

    小技巧

    要处理超出 PARSE_DOCUMENT 令牌限制的长文档,请将此选项设置为 TRUE。

返回

包含提取的数据和关联的元数据的 JSON 对象(字符串形式)。options 实参决定了返回对象的结构。

小技巧

要在 SQL 中使用输出内容,请使用 PARSE_JSON 函数将其转换为 OBJECT 值。

如果设置了 'page_split' 选项,则输出具有以下结构:

  • "pages":一个 JSON 对象数组,每个对象都包含从文档中提取的文本。如果文档只有一页,则输出仍包含一个 "pages" 数组(该数组只包含一个对象)。每个页面都有以下字段:

    • "content":纯文本(在 OCR 模式中)或 Markdown 格式的文本(在 LAYOUT 模式中)。

    • "index":文件中的页面索引,从 0 开始。在文档中指定的页码和格式将被忽略。

  • "errorInformation":如果文档无法被解析,则包含错误信息。

  • "metadata":包含有关文档的元数据,例如页数。

备注

解析成功时,"pages""metadata" 字段会出现在输出中。"errorInformation" 仅在解析失败时才会出现。

如果 'page_split' 为 FALSE 或不存在,则输出具有以下结构:

  • "content":纯文本(在 OCR 模式中)或 Markdown 格式的文本(在 LAYOUT 模式中)。

  • "errorInformation":如果文档无法被解析,则包含错误信息。

  • "metadata":包含有关文档的元数据,例如页数。

备注

解析成功时,"content""metadata" 字段会出现在输出中。"errorInformation" 仅在解析失败时才会出现。

示例

OCR 模式

SELECT TO_VARCHAR(
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT(
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'OCR'})
    ) AS OCR;
Copy

输出:

{
    "content": "content of the document"
}

LAYOUT 模式

此示例解析了一个文档,其中包含以下截图所示的表:

附有表的 PDF 内容示例
SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'LAYOUT'} ) ) AS LAYOUT;
Copy

输出:

{
  "content": "# This is PARSE DOCUMENT example
     Example table:
     |Header|Second header|Third Header|
     |:---:|:---:|:---:|
     |First row header|Data in first row|Data in first row|
     |Second row header|Data in second row|Data in second row|

     Some more text."
 }

拆分页面

此示例将多页文档拆分为多个单独的页面,并使用 'OCR' 模式单独处理这些页面。

SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'OCR', 'page_split': TRUE} ) ) AS MULTIPAGE;
Copy

输出:

{
  "pages": [
    {
      "content": "content of the first page",
      "index": 0
    },
    {
      "content": "content of the second page",
      "index": 1
    },
    {
      "content": "content of the third page",
      "index": 2
    }
  ],
  "metadata": {
    "pageCount": 3
  }
}

限制

Snowflake Cortex 函数不支持动态表。

语言: 中文