- 类别:
文件函数 (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> ] )
实参¶
必填:
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;
输出:
{
"content": "content of the document"
}
LAYOUT 模式¶
此示例解析了一个文档,其中包含以下截图所示的表:

SELECT
TO_VARCHAR (
SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
'@PARSE_DOCUMENT.DEMO.documents',
'document_1.pdf',
{'mode': 'LAYOUT'} ) ) AS LAYOUT;
输出:
{
"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;
输出:
{
"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 函数不支持动态表。