カテゴリ:

ファイル関数 (AI 関数)

PARSE_DOCUMENT (SNOWFLAKE.CORTEX)

注釈

AI_PARSE_DOCUMENT はこの関数の最新バージョンです。最新の機能を使用するには、 AI_PARSE_DOCUMENT を使用してください。PARSE_DOCUMENT (SNOWFLAKE.CORTEX) は引き続き使用できます。

Snowflakeステージ上のドキュメントから抽出したコンテンツを JSON形式の文字列として返します。この関数は、光学式文字認識(OCR)とレイアウトの2種類の抽出をサポートしています。詳細については、 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 です。

    Tip

    PARSE_DOCUMENT のトークン制限を超える長いドキュメントを処理するには、このオプションを TRUE に設定します。

戻り値

抽出されたデータと関連するメタデータを含む JSON オブジェクト(文字列として)。options 引数は、返されるオブジェクトの構造を決定します。

Tip

SQL で出力を使用するには、PARSE_JSON 関数を使用して OBJECT 値に変換します。

'page_split' オプションが設定されている場合、出力は次のような構造になります。

  • "pages":JSON オブジェクトの配列。それぞれにドキュメントから抽出されたテキストが含まれます。ドキュメントが1ページのみである場合、出力には引き続き "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関数は動的テーブルをサポートしていません。