- 类别:
文件函数 (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) 和布局。有关更多信息,请参阅 Parsing documents with AI_PARSE_DOCUMENT。
语法¶
SNOWFLAKE.CORTEX.PARSE_DOCUMENT( '@<stage>', '<path>', [ <options> ] )
实参¶
必填:
stageSnowflake 暂存区的名称。
pathSnowflake 暂存区上文档的相对路径。
可选:
options包含用于解析文档的选项的 OBJECT 值。支持的键如下所示。所有键都是可选的。
'mode':指定解析模式。支持的模式为:'OCR':函数仅提取文本。这是默认模式。'LAYOUT':函数提取布局和文本,包括表格等结构内容。
'page_split': If set to TRUE, the function splits the output of the function to return content per page. Only PDF, PowerPoint (.pptx), and Word (.docx) documents are supported. Documents in other formats return an error. The default is FALSE.
返回¶
包含提取的数据和关联的元数据的 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 函数不支持动态表。