AISQL に AI_PARSE_DOCUMENT

AI_PARSE_DOCUMENT は、ドキュメントからテキスト、データ、レイアウト要素を高い精度で抽出するCortex AISQL 関数です。以下を含むインテリジェントなドキュメント処理ワークフローに使用してください。

  • RAG パイプライン最適化: 高忠実度の抽出により、検索システムは適切なコンテキストを持つ関連コンテンツを確実に見つけ、回答の質を劇的に向上させます。

  • ナレッジベースの構築: 構造化された出力により、大規模なドキュメントコレクション全体でセマンティック検索と AI 推論が可能になります。

  • 自動ドキュメント処理: エンティティを抽出し、要約を生成する、他のCortex AISQL 関数を使用して複雑なドキュメントの分析を実行します。

  • 多言語 AI ワークフロー: グローバルなエンタープライズアプリケーションのために一貫した品質で、12の言語でドキュメントを処理します。

AI_PARSE_DOCUMENT

AI_PARSE_DOCUMENT はテーブル、ヘッダー、読み取り順などの構造を保持しながら、内部または外部ステージに保存されたドキュメントからテキストとレイアウトを抽出する、完全に管理された SQL 関数です。内部的には、ドキュメントの理解とレイアウト分析のための高度な AI モデルを統合し、複雑な複数ページのドキュメントを高い忠実性で処理します。

AI_PARSE_DOCUMENT 関数は、PDF ドキュメント処理のために2つのモードを提供します。

  • LAYOUT モードは、ほとんどのユースケース、特に複雑なドキュメントに適しています。テーブルのようなテキストとレイアウト要素の抽出用に特別に最適化されており、ナレッジベースを構築し、検索システムを最適化し、 AI ベースのアプリケーションを向上させるのに最適なオプションです。

  • OCR モードは、説明書、契約書、商品詳細ページ、保険ポリシー、請求書や SharePointドキュメント などのドキュメントから迅速で高品質なテキストを抽出するために推奨されます。

両方のモードには、応答で複数ページのドキュメントを個別のページに分割するための page_split パラメーターを使用します。AI_PARSE_DOCUMENT は水平方向にスケーラブルであり、複数のドキュメントを同時に効率的にバッチ処理できます。ドキュメントは、不要なデータ移動を回避するために、オブジェクトストレージから直接処理できます。

注釈

AI_PARSE_DOCUMENT は現在、カスタム ネットワークポリシー と互換性がありません。

ドキュメント処理のステージを作成

内部または外部ステージを作成して、処理するドキュメントを格納します。ステージを作成するときに、 サーバー側の暗号化 を有効にします。それ以外の場合は、 AI_PARSE_DOCUMENT が提供されたファイルが期待された形式でない、またはクライアント側で暗号化されているというエラーを返します。

以下の SQL は、適切な内部ステージを作成します。

CREATE OR REPLACE STAGE input_stage
    DIRECTORY = ( ENABLE = true )
    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
Copy

次の SQL はAmazon S3で外部ステージを作成します。AI_PARSE_DOCUMENT は、Google Cloudストレージ外部ステージもサポートしています。

CREATE OR REPLACE STAGE input_stage
    URL='s3://<s3-path>/'
    CREDENTIALS=(AWS_KEY_ID=<aws_key_id>
    AWS_SECRET_KEY=<aws_secret_key>)
    ENCRYPTION=( TYPE = 'AWS_SSE_S3' );
Copy

注釈

AI_PARSE_DOCUMENT は現在、カスタム ネットワークポリシー と互換性がありません。

簡単なレイアウト例

この例では、 AI_PARSE_DOCUMENTの LAYOUT モードを使用して2列の研究論文を処理します。page_split パラメーターを TRUE に設定すると、応答でドキュメントがページに分割されます。AI_PARSE_DOCUMENT はコンテンツをMarkdown形式で返します。次は、元のページの横にある、処理されたページの1つ(JSON 出力のページインデックス4)のレンダリングされたMarkdownを示しています。生のMarkdownは、画像の後の JSON 応答に表示されます。

元のドキュメントからのページ

抽出されたMarkdownは HTML としてレンダリングされました

PDF ドキュメントに表示される科学論文のページ
AI_PARSE_DOCUMENT によってMarkdownがレンダリングされたときに表示されるのと同じページ(ブラウザーの場合)

Tip

これらの画像をより読みやすいサイズで表示するには、クリックするか、タップして選択します。

以下は元のドキュメントを処理する SQL コマンドです。

SELECT AI_PARSE_DOCUMENT (
    TO_FILE('@docs.doc_stage','research-paper-example.pdf'),
    {'mode': 'LAYOUT' , 'page_split': true}) AS research_paper_example;
Copy

AI_PARSE_DOCUMENT からの応答は、次のようにドキュメントのページのメタデータとテキストを含む JSON オブジェクトです。簡潔にするために、一部のページオブジェクトを省略しています。

{
  "metadata": {
    "pageCount": 19
  },
  "pages": [
    {
      "content": "# SwiftKV: Fast Prefill-Optimized Inference with Knowledge-Preserving Model Transformation \n\nAurick Qiao
      Zhewei Yao Samyam Rajbhandari Yuxiong He<br>Snowflake AI Research<br>San Mateo, CA, United States<br>Correspondence:
      aurick.qiao@ snowflake.com\n\n\n#### Abstract\n\nLLM inference for enterprise applications, such as summarization, RAG,
      and code-generation, typically observe much longer prompt than generations, leading to high prefill cost and response
      latency. We present SwiftKV, a novel model transformation and distillation procedure targeted at reducing the prefill
      compute (in FLOPs) of prompt tokens while preserving high generation quality. First, SwiftKV prefills later layers' KV
      cache using an earlier layer's output, allowing prompt tokens to skip those later layers. Second, SwiftKV employs a
      lightweight knowledge-preserving distillation procedure that can adapt existing LLMs with minimal accuracy impact. Third,
      SwiftKV can naturally incorporate KV cache compression to improve inference performance in low-memory scenarios. Our
      comprehensive experiments show that SwiftKV can effectively reduce prefill computation by $25-50 \\%$ across several LLM
      families while incurring minimum quality degradation. In the end-to-end inference serving, SwiftKV realizes up to $2
      \\times$ higher aggregate throughput and $60 \\%$ lower time per output token. It can achieve a staggering 560 TFlops/GPU
      of normalized inference throughput, which translates to 16 K tokens/s for Llama-3.1-70B. SwiftKV is open-sourced at
      https://github . com/snowflakedb/arctictraining.\n\n\n## 1 Introduction\n\nLarge Language Models (LLMs) are now an
      integral enabler of enterprise applications and offerings, including code and data co-pilots (Chen et al., 2021; Pourreza
      and Rafiei, 2024), retrieval augmented generation (RAG) (Lewis et al., 2020; Lin et al., 2024), summarization (Pu et al.,
      2023; Zhang et al., 2024), and agentic workflows (Wang et al., 2024; Schick et al., 2023). However, the cost and speed of
      inference determine their practicality, and improving the throughput and latency of LLM inference has become increasingly
      important.\n\nWhile prior works, such as model pruning (Ma et al., 2023; Sreenivas et al., 2024), KV cache compression
      (Hooper et al., 2024; Shazeer, 2019; Ainslie et al., 2023b; Chang et al., 2024), and sparse attention (Zhao et al., 2024;
      Jiang et al., 2024), have been developed to accelerate LLM inference, they typically significantly degrade the model
      quality or work best in niche scenarios, such as lowmemory environments or extremely long contexts requests (e.g. $>100
      \\mathrm{~K}$ tokens). On the other hand, production deployments are often compute-bound rather than memory-bound, and
      such long-context requests are rare amongst diverse enterprise use cases (e.g. those observed at Snowflake).\n\nIn this
      paper, we take a different approach to improving LLM inference based on the key observation that typical enterprise
      workloads process more input tokens than output tokens. For example, tasks like code completion, text-to-SQL,
      summarization, and RAG each submit long prompts but produce fewer output tokens (a 10:1 ratio with average prompt length
      between 500 and 1000 is observed in our production). In these scenarios, inference throughput and latency are often
      dominated by the cost of prompt processing (i.e. prefill), and reducing this cost is key to improving their performance.
      \n\nBased on this observation, we designed SwiftKV, which improves throughput and latency by reducing the prefill
      computation for prompt tokens. SwiftKV (Fig. 1) consists of three key components:\n\nModel transformation. SwiftKV rewires
      an existing LLM so that the prefill stage during inference can skip a number of later transformer layers, and their KV
      cache are computed by the last unskipped layer. This is motivated by the observation that the hidden states of later
      layers do not change significantly (see Sec. 3.2 and (Liu et al., 2024b)). With SwiftKV, prefill compute is reduced by
      approximately the number of layers skipped.\n\nOptionally, for low-memory scenarios, we",
      "index": 0
    },
    ...
    {
      "content": "Efficient Distillation. Since only a few $\\mathbf{W}_{Q K V}$ parameters need training, we can keep just a
      single copy of the original model weights in memory that are frozen during training, and add an extra trainable copy of
      the $\\mathbf{W}_{Q K V}$ parameters for layers $>l$ initialized using the original model (See Fig. 1).\n\nDuring
      training, we create two modes for the later layers $>l$, one with original frozen parameters using original architecture,
      and another with the SwiftKV re-wiring using new QKV projections i.e.,\n\n$$\n\\begin{aligned}\n& \\mathbf{y}_{\\text
      {teacher }}=\\mathbf{M}(\\mathbf{x}, \\text { SwiftKV }=\\text { False }) \\\\\n& \\mathbf{y}_{\\text {student }}=\\mathbf
      {M}(\\mathbf{x}, \\text { SwiftKV }=\\text { True })\n\\end{aligned}\n$$\n\nwhere $\\mathbf{y}$ is the final logits,
      $\\mathbf{M}$ is the model, and $\\mathbf{x}$ is the input. Afterwards, we apply the standard distillation loss (Hinton et
      al., 2015) on the outputs. After the distillation, the original KV projection layers $>l$ are discarded during inference.
      \n\nThis method allows us to distill Llama-3.1-8BInstruct on 680 M tokens of data in 3 hours using 8 H100 GPUs, and
      Llama-3.1-70B-Instruct in 5 hours using 32 H100 GPUs across 4 nodes. In contrast, many prune-and-distill (Sreenivas et
      al., 2024) and layer-skipping (Elhoushi et al., 2024) methods require much larger datasets (e.g. 10-100B tokens) and incur
      greater accuracy gaps than SwiftKV.\n\n### 3.5 Optimized Implementation for Inference\n\nLLM serving systems can be
      complex and incorporate many simultaneous optimizations at multiple layers of the stack, such as PagedAttention (Kwon et
      al., 2023), Speculative Decoding (Leviathan et al., 2023), SplitFuse (Holmes et al., 2024; Agrawal et al., 2024), and
      more. A benefit of SwiftKV is that it makes minimal changes to the model architecture, so it can be integrated into
      existing serving systems without implementing new kernels (e.g. for custom attention operations or sparse computation) or
      novel inference procedures.\n\nImplementation in vLLM and SGLang. To show that the theoretical compute reductions of
      SwiftKV translates to real-world savings, we integrated it with vLLM (Kwon et al., 2023) and SGLang (Zheng et al., 2024).
      Our implementation is compatible with chunked prefill (Holmes et al., 2024; Agrawal et al., 2024), which mixes chunks of
      prefill tokens and decode tokens in each minibatch. During each forward pass, after completing layer $l$, the KV-cache for
      the remaining layers ( $>l$ ) are immediately computed, and only the decode tokens are propagated through the rest of the
      model layers.\n\n## 4 Main Results\n\nWe evaluated SwiftKV in terms of model accuracy (Sec. 4.1) compared to the original
      model and several baselines, and end-to-end inference performance (Sec. 4.2) in a real serving system.\n\nDistillation
      datasets. Our dataset is a mixture of Ultrachat (Ding et al., 2023), SlimOrca (Lian et al., 2023), and OpenHermes-2.5
      (Teknium, 2023), totaling roughly 680M Llama-3.1 tokens. For more details, please see Appendix A.1.\n\nSwiftKV Notation.
      For prefill computation, we report the approximate reduction as $(L-l) / L$ due to SwiftKV, and for KV cache, we report
      the exact memory reduction due to AcrossKV. For example, SwiftKV $(l=L / 2)$ and 4-way AcrossKV is reported as $50 \\%$
      prefill compute reduction and $37.5 \\% \\mathrm{KV}$ cache memory reduction.\n\n### 4.1 Model Quality Impact of
      SwiftKV\n\nTable 2 shows the quality results of all models we evaluated, including Llama-3.1-Instruct, Qwen2.
      5-14B-Instruct, Mistral-Small, and Deepseek-V2. Of these models, we note that the Llama models span two orders of
      magnitude in size (3B to 405B), Llama-3.1-405B-Instruct uses FP8 (W8A16) quantization, and Deepseek-V2-Lite-Chat is a
      mixture-of-experts model that implements a novel latent attention mechanism (DeepSeek-AI et al., 2024).\n\nWe also compare
      with three baselines: (1) FFN-SkipLLM (Jaiswal et al., 2024), a training-free method for skipping FFN layers (no attention
      layers are skipped) based on hidden state similarity, (2) Llama-3.1-Nemotron-51B-Instruct (Sreenivas et al., 2024), which
      is pruned and distilled from Llama-3.1-70B-Instruct using neural architecture search on 40B tokens, and (3) DarwinLM-8.4B
      (Tang et al., 2025), which is pruned and distilled from Qwen2.5-14B-Instruct using 10B tokens.\n\nSwiftKV. For Llama,
      Mistral, and Deepseek, we find the accuracy degradation for $25 \\%$ SwiftKV is less than $0.5 \\%$ from the original
      models (averaged across tasks). Additionally, the accuracy gap is within $1-2 \\%$ even at $40-50 \\%$ SwiftKV. Beyond $50
      \\%$ SwiftKV, model quality drops quickly. For example, Llama-3.1-8B-Instruct incurs a 7\\% accuracy gap at $62.5 \\%$
      SwiftKV. We find that Qwen suffers larger degradations, at $1.1 \\%$ for $25 \\%$ SwiftKV and $7.4 \\%$ for $50 \\%$
      SwiftKV, which may be due to Qwen models having lower simularity between layer at 50-75\\% depth (Fig. 2). Even still,
      SwiftKV",
      "index": 4
    },
    ...
  ]
}

テーブル構造抽出の例

この例では、10-K提出書類からテーブルを含む構造レイアウトを抽出しています。以下は、処理されたページの1つのレンダリング結果を示しています(JSON 出力のページインデックス28)。

元のドキュメントからのページ

抽出されたMarkdownは HTML としてレンダリングされました

PDF ドキュメントに掲載されている SEC 10-K提出書類のページ
AI_PARSE_DOCUMENT によってMarkdownがレンダリングされたときに表示されるのと同じページ(ブラウザーの場合)

Tip

これらの画像をより読みやすいサイズで表示するには、クリックするか、タップして選択します。

以下は元のドキュメントを処理する SQL コマンドです。

SELECT AI_PARSE_DOCUMENT (
    TO_FILE('@docs.doc_stage','10K-example.pdf'),
    {'mode': 'LAYOUT', 'page_split': true}) AS sec_10k_example;
Copy

AI_PARSE_DOCUMENT からの応答は、次のようにドキュメントのページのメタデータとテキストを含む JSON オブジェクトです。以前に表示されたページを除くすべての結果は、簡潔にするために省略されています。

{
  "metadata": {
    "pageCount": 53
  },
  "pages": [
    {
      "content": ...
      "index": 0
    },
    ....
    {
      "content": "# Key Operational and Business Metrics \n\nIn addition to the measures presented in our interim condensed
      consolidated financial statements, we use the following key operational and business metrics to evaluate our business,
      measure our performance, develop financial forecasts, and make strategic decisions.\n\n|  | Three Months Ended March 31, |  |
      \n| :--: | :--: | :--: |\n|  | 2025 | 2024 |\n| Ending Paid Connected Fitness Subscriptions ${ }^{(1)}$ | 2,880,176 | $3,051,
      451$ |\n| Average Net Monthly Paid Connected Fitness Subscription Churn ${ }^{(1)}$ | $1.2 \\%$ | $1.2 \\%$ |\n| Ending Paid
      App Subscriptions ${ }^{(1)}$ | 572,775 | 675,190 |\n| Average Monthly Paid App Subscription Churn ${ }^{(1)}$ | $8.1 \\%$ |
      $9.0 \\%$ |\n| Subscription Gross Profit (in millions) | \\$ 288.8 | \\$ 298.1 |\n| Subscription Contribution (in millions) $
      { }^{(2)}$ | \\$ 304.9 | \\$ 316.4 |\n| Subscription Gross Margin | $69.0 \\%$ | $68.1 \\%$ |\n| Subscription Contribution
      Margin ${ }^{(2)}$ | $72.9 \\%$ | $72.3 \\%$ |\n| Net loss (in millions) | \\$ $(47.7)$ | \\$ $(167.3)$ |\n| Adjusted EBITDA
      (in millions) ${ }^{(3)}$ | \\$ 89.4 | \\$ 5.8 |\n| Net cash provided by operating activities (in millions) | \\$ 96.7 | \\$
      11.6 |\n| Free Cash Flow (in millions) ${ }^{(4)}$ | \\$ 94.7 | \\$ 8.6 |\n\n[^0]\n## Ending Paid Connected Fitness
      Subscriptions\n\nEnding Paid Connected Fitness Subscriptions includes all Connected Fitness Subscriptions for which we are
      currently receiving payment (a successful credit card billing or prepaid subscription credit or waiver). We do not include
      paused Connected Fitness Subscriptions in our Ending Paid Connected Fitness Subscription count.\n\n## Average Net Monthly
      Paid Connected Fitness Subscription Churn\n\nTo align with the definition of Ending Paid Connected Fitness Subscriptions
      above, our quarterly Average Net Monthly Paid Connected Fitness Subscription Churn is calculated as follows: Paid Connected
      Fitness Subscriber \"churn count\" in the quarter, divided by the average number of beginning Paid Connected Fitness
      Subscribers each month, divided by three months. \"Churn count\" is defined as quarterly Connected Fitness Subscription
      churn events minus Connected Fitness Subscription unpause events minus Connected Fitness Subscription reactivations.\n\nWe
      refer to any cancellation or pausing of a subscription for our All-Access Membership as a churn event. Because we do not
      receive payment for paused Connected Fitness Subscriptions, a paused Connected Fitness Subscription is treated as a churn
      event at the time the pause goes into effect, which is the start of the next billing cycle. An unpause event occurs when a
      pause period elapses without a cancellation and the Connected Fitness Subscription resumes, and is therefore counted as a
      reduction in our churn count in that period. Our churn count is shown net of reactivations and our new quarterly Average Net
      Monthly Paid Connected Fitness Subscription Churn metric averages the monthly Connected Fitness churn percentage across the
      three months of the reported quarter.\n\n## Ending Paid App Subscriptions\n\nEnding Paid App Subscriptions include all App
      One, App+, and Strength+ subscriptions for which we are currently receiving payment.\n\n## Average Monthly Paid App
      Subscription Churn\n\nWhen a Subscriber to App One, App+, or Strength+ cancels their membership (a churn event) and
      resubscribes in a subsequent period, the resubscription is considered a new subscription (rather than a reactivation that is
      counted as a reduction in our churn count). Average Paid App Subscription Churn is calculated as follows: Paid App
      Subscription cancellations in the quarter, divided by the average number of beginning Paid App Subscriptions each month,
      divided by three months.\n\n\n[^0]:    (1) Beginning January 1, 2025, the Company migrated its subscription data model for
      reporting Ending Paid Connected Fitness Subscriptions, Average Net Monthly Paid Connected Fitness Subscription Churn, Ending
      Paid App Subscriptions, and Average Monthly Paid App Subscription Churn to a new data model that provides greater visibility
      to changes to a subscription's payment status when they occur. The new model gives the Company more precise and timely data
      on subscription pause and churn behavior. Prior period information has been revised to conform with current period
      presentation. The impact of this change in the model on Ending Paid Connected Fitness Subscriptions, Average Net Monthly
      Paid Connected Fitness Subscription Churn, Ending Paid App Subscriptions and Average Monthly Paid App Subscription Churn for
      the three months ended March 31, 2025 and 2024 is immaterial.\n    (2) Please see the section titled \"Non-GAAP Financial
      Measures—Subscription Contribution and Subscription Contribution Margin\" for a reconciliation of Subscription Gross Profit
      to Subscription Contribution and an explanation of why we consider Subscription Contribution and Subscription Contribution
      Margin to be helpful measures for investors.\n    (3) Please see the section titled \"Non-GAAP Financial Measures—Adjusted
      EBITDA\" for a reconciliation of Net loss to Adjusted EBITDA and an explanation of why we consider Adjusted EBITDA to be a
      helpful measure for investors.\n    (4) Please see the section titled \"Non-GAAP Financial Measures-Free Cash Flow\" for a
      reconciliation of net cash provided by (used in) operating activities to Free Cash Flow and an explanation of why we
      consider Free Cash Flow to be a helpful measure for investors.",
      "index": 28
    },
    ...
    {
      "content": "# CERTIFICATION OF PRINCIPAL FINANCIAL OFFICER PURSUANT TO 18 U.S.C. SECTION 1350, AS ADOPTED PURSUANT TO
      SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002 \n\nI, Elizabeth F Coddington, Chief Financial Officer of Peloton Interactive,
      Inc. (the \"Company\"), do hereby certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the
      Sarbanes-Oxley Act of 2002, that to the best of my knowledge:\n\n1. the Quarterly Report on Form 10-Q of the Company for the
      fiscal quarter ended March 31, 2025 (the \"Report\") fully complies with the requirements of Section 13(a) or 15(d) of the
      Securities Exchange Act of 1934, as amended; and\n2. the information contained in the Report fairly presents, in all
      material respects, the financial condition, and results of operations of the Company.\n\nDate: May 8, 2025\n\nBy: /s/
      Elizabeth F Coddington\nElizabeth F Coddington\nChief Financial Officer\n(Principal Financial Officer)",
      "index": 52
    }
  ]
}

スライドデッキの例

この例では、プレゼンテーションから構造レイアウトを抽出します。 以下に、処理されたスライドの1つのレンダリング結果を示します(JSON 出力のページインデックス17)。

元のドキュメントからのスライド

抽出されたMarkdownは HTML としてレンダリングされました

PowerPoint のプレゼンテーションからのスライド
AI_PARSE_DOCUMENT によってMarkdownが返されたときに表示されるのと同じスライド(ブラウザーの場合)

Tip

これらの画像をより読みやすいサイズで表示するには、クリックするか、タップして選択します。

以下は元のドキュメントを処理する SQL コマンドです。

SELECT AI_PARSE_DOCUMENT (TO_FILE('@docs.doc_stage','presentation.pptx'),
    {'mode': 'LAYOUT' , 'page_split': true}) as presentation_output;
Copy

AI_PARSE_DOCUMENT からの応答は、次のようにプレゼンテーションのスライドのメタデータとテキストを含む JSON オブジェクトです。一部のスライドの結果は、簡潔にするために省略されています。

{
  "metadata": {
    "pageCount": 38
  },
  "pages": [
    {
      "content": "![img-0.jpeg](img-0.jpeg)\n\n# **SNOWFLAKE INVESTOR PRESENTATION**\n\nFirst Quarter Fiscal 2026\n\n© 2026 Snowflake Inc. All Rights Reserved",
      "index": 0
    },
    ...
    {
      "content": "# Our Consumption Model \n\n## Revenue Recognition Consumption\n\nSnowflake recognizes the substantial majority of its revenue as customers consume the platform\n\nPro: Enables faster growth\nPro: Aligned with customer value\nPro: Aligned with usage-based costs\nConsider: Revenue is variable based on customers' usage\n\n## Pricing Model Consumption\n\nThe platform is priced based on consumption of compute, storage, and data transfer resources\n\nPro: Customers don't pay for shelfware\n\nConsider: Performance improvements inherently reduce customer cost\n\n## Billings Terms Typically Upfront\n\nSnowflake typically bills customers annually in advance for their capacity contracts\n\nSome customers consume on-demand and/or are billed in-arrears\n\nPro: Bookings represent contractual minimum\n\nPro: Variable consumption creates upside for renewal cycle\n\nConsider: Payment terms are evolving",
      "index": 17
    },
    ...
    {
      "content": "![img-23.jpeg](img-23.jpeg)\n\n# PRODUCT REVENUE\n\n## $996.8M + 26% YoY Growth\n\n## NET REVENUE RETENTION RATE\n\n## $124%\n\n## TOTAL CUSTOMERS\n\n## $1M+ CUSTOMERS\n\n## $0.5 + 27% YoY Growth\n\nCustomers with Trailing 12-Month Product Revenue Greater than $1M\n\n## FORBES GLOBAL 2000 CUSTOMERS\n\n## $754 + 4% YoY Growth\n\n## SNOWFLAKE MARKETPLACE LISTINGS\n\n## AI/ML ADOPTION\n\n## 5,200+ Accounts using Snowflake AI/ML\n\n## SNOWFLAKE AI DATA CLOUD\n\n### Unified Platform and Connected Ecosystem\n\n- **Data Engineering**\n- **Analytics**\n- **AI**\n- **Applications & Collaboration**\n\n### Fully Managed | Cross-Cloud | Interoperable | Secure | Governed\n\n1. For the three months ended April 30, 2025.\n2. As of April 30, 2025. Please see our Q1FY26 earnings press release for definitions of net revenue retention rate, customers with trailing 12-month product revenue greater than $1 million (which definition includes a description of our total customer count), and Forbes Global 2000 customers.\n3. As of April 30, 2025. Each live dataset, package of datasets, or data service published by a data provider as a single product offering on Snowflake Marketplace is counted as a unique listing. A listing may be available in one or more regions where Snowflake Marketplace is available.\n4. Adoption is based on capacity and on-demand accounts using Snowflake AI/ML features on a weekly basis via our internal classification. We take the average of the last 4 weeks of the quarter ended April 30, 2025.",
      "index": 36
    },
    {
      "content": "# THANK YOU\n\n![img-24.jpeg](img-24.jpeg)",
      "index": 37
    }
  ]
}

多言語ドキュメントの例

この例では、ドイツ語の記事から構造レイアウトを抽出することで、 AI_PARSE_DOCUMENT の多言語対応力を示しています。AI_PARSE_DOCUMENT は、画像や引用符が存在する場合でも、本文の読み取り順序を保持します。

元のドキュメントからのページ

抽出されたMarkdownは HTML としてレンダリングされました

PowerPoint のプレゼンテーションからのスライド
AI_PARSE_DOCUMENT によってMarkdownが返されたときに表示されるのと同じスライド(ブラウザーの場合)

Tip

これらの画像をより読みやすいサイズで表示するには、クリックするか、タップして選択します。

以下は元のドキュメントを処理する SQL コマンドです。ドキュメントは単一のページであるため、この例ではページ分割は必要ありません。

SELECT AI_PARSE_DOCUMENT (TO_FILE('@docs.doc_stage','german_example.pdf'),
    {'mode': 'LAYOUT'}) AS german_article;
Copy

AI_PARSE_DOCUMENT からの応答は、次のようにドキュメントのメタデータとテキストを含む JSON オブジェクトです。

{
  "metadata": {
    "pageCount": 1
  }
  "content": "![img-0.jpeg](img-0.jpeg)\n\nSchulen haben es verdient, gute Orte zu sein. Hier sollen wir Wissen und Fähigkeiten
  erlernen, die uns durch das Leben tragen. Hier verbringen viele einen Großteil ihres Tages, und das in einer Lebensphase, in
  der sich Zeit beinahe grenzenlos und eine Doppelstunde wie ein halbes Leben anfühlen kann.\n\nOb es die Freundin ist, ohne die
  man auf dem Schulhof verloren wäre. Der Lehrer, mit dem man nicht klarkommt, den man aber trotzdem jeden Tag aushalten muss.
  Die Klassenfahrt, auf der man zum ersten Mal das Meer sieht und knutscht. In Schulen entstehen Erfahrungen, Beziehungen und
  Erinnerungen, die uns ein ganzes Leben prägen.\n\nDie Erwartungen an Schulen sind dementsprechend hoch. Trotzdem werden sie
  von der Gesellschaft schnell vergessen und von der Politik hinten angestellt. Seit Jahrzehnten kriegt das deutsche Schulsystem
  verheerende Zeugnisse.\n\nNoch immer entscheiden Bildungsgrad und Kontostand der Eltern darüber, welchen Schulabschluss Kinder
  und Jugendliche machen. Noch immer funktioniert es vielerorts nur auf dem Papier, dass alle gut zusammen lernen. Im Alltag
  fehlen dann die Lehrkräfte und Mittel, um zum Beispiel einen geflüchteten Jugendlichen oder einen mit ADHS so zu unterstützen,
  dass alle möglichst gleichberechtigt in einem Klassenraum sitzen. Auch die gesellschaftliche Einsicht, dass alle
  Schulabschlüsse ihren Wert haben und gebraucht werden, muss erst wieder zurückgewonnen werden.\n\nJetzt aber hoch mit
  euch!\nDass Schule so irre früh anfangen muss, ist kein Gesetz. Und auch gar nicht ratsam: Jugendliche haben einen anderen
  Biorhythmus und brauchen mehr Schlaf als Erwachsene. Ein Schulbeginn gegen 9 oder 10 Uhr wäre für die meisten besser, da ist
  sich die Forschung einig\n\nAn Schulen tritt die Realität sehr schnell ein. Während sich die Gesellschaft noch fragt, wie mit
  künstlicher Intelligenz umzugehen ist, nutzen sie Lehrkräfte, Schülerinnen und Schüler längst für ihre Zwecke. Während über
  Jahre diskutiert wurde, ob Deutschland ein Einwanderungsland sei, war es das an Schulen längst. Und während andere Themen den
  Klimawandel in der Öffentlichkeit verdrängen, sind es besonders Schülerinnen und Schüler, die laut auf das drängendste Problem
  unserer Zeit hinweisen. Die Herausforderungen und Fragen, die sich an Schulen stellen, betreffen uns alle. Schule ist Zukunft.
  \n\nSchulleitungen, Lehrkräfte, pädagogisches Personal und alle, die sich sonst noch um das Gelingen des Schulalltags kümmern,
  stellen sich dem jeden Tag aufs Neue. Sie versuchen, Schule trotz vieler Probleme und fehlender Wertschätzung zu gestalten,
  sie versuchen, den Schülerinnen und Schülern zu vermitteln, dass es auf sie ankommt. Damit sie selbst an sich glauben. Sie
  haben es verdient.",
}

Snowflake Cortexは、サポートされている言語(この場合は英語、言語コード 'en')への翻訳を生成できます。

SNOWFLAKE.CORTEX.TRANSLATE (ger_example, '', 'en') from german_article;
Copy

翻訳は次のとおりです。

"Schools deserve to be good places. Here, we are supposed to learn knowledge and skills that will carry us through life. Many
spend a large part of their day here, and this is during a phase of life when time can seem almost endless and a double period
can feel like half a lifetime.

Whether it's the friend you would be lost without in the schoolyard. The teacher you can't get along with, but still have to
endure every day. The class trip where you see the sea for the first time and make out. In schools, experiences,
relationships, and memories are created that shape us for a lifetime.

The expectations for schools are correspondingly high. Nevertheless, they are quickly forgotten by society and pushed to the
back by politics. For decades, the German school system has been receiving devastating reports.

Even now, the level of education and the financial status of the parents still determine which school certificate children and
young people receive. It still only works on paper that everyone learns well together. In everyday life, the teachers and
resources are lacking to support, for example, a refugee youth or a student with ADHD so that they can sit in a classroom on
an equal footing. The societal insight that all school certificates have value and are needed also needs to be regained.

Now, let's get going!

The fact that school has to start so early is not a law. And it's not advisable either: teenagers have a different biological
rhythm and need more sleep than adults. A start time of 9 or 10 o'clock would be better for most, research agrees.

Reality sets in very quickly at schools. While society is still wondering how to deal with artificial intelligence, teachers,
students, and pupils are already being used for their purposes. While it was debated for years whether Germany is an
immigration country, it has been one in schools for a long time. And while other topics are pushing climate change out of the
public eye, it is especially students who are loudly pointing out the most pressing problem of our time. The challenges and
questions that schools face affect us all. School is the future.

School administrations, teachers, educational staff, and all those who take care of the success of everyday school life face
this every day. They try to shape school despite many problems and lack of appreciation, they try to convey to the students
that it's up to them. So that they believe in themselves. They deserve it."

OCR モードの使用

OCR モードは、スクリーンショットやテキスト画像を含む PDFs などのスキャンされたドキュメントからテキストを抽出します。レイアウトは保持されません。

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

出力:

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

複数ドキュメントの処理

次のような SQL を使用して、単一のクエリでステージから複数のドキュメントを処理するには、 AI_PARSE_DOCUMENT を使用します。

SELECT AI_PARSE_DOCUMENT(to_file(file_url), {'mode': 'layout'})
    FROM DIRECTORY(@documents) WHERE relative_path LIKE '%format%';
Copy

入力要件

AI_PARSE_DOCUMENT はデジタル作成およびスキャン済みドキュメントの両方に最適化されています。次のテーブルは、入力ドキュメントの制限と要件のリストです。

最大ファイルサイズ

100 MB

1ドキュメントあたりの最大ページ数

300

許可されたファイルタイプ

PDF 、 PPTX 、 DOCX 、 JPEG 、 JPG 、 PNG 、 TIFF 、 TIF 、 HTML 、 TXT

ステージ暗号化

サーバー側の暗号化

文字サイズ

最良の結果を得るには8ポイント以上

サポートされるドキュメントの機能と制限

ページオリエンテーション

AI_PARSE_DOCUMENT は自動的にページオリエンテーションを検出します。

文字

AI_PARSE_DOCUMENT は以下の文字を検出します。

  • a-z

  • A-Z

  • 0-9

  • À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ą ą Ć ć Č č Đ đ Ę ę ı Ł ł Ń ń ō Œ œ Ś ś Š š Ÿ Ź ź Ż ż Ž ž ʒ β δ ε з Ṡ

  • ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~ ¡ ¢ £ ¥ § © ª « ­ ® ¯ ° ± ² ³ ´ µ ¶ · º » ¿ ' † ‡ • ‣ ⁋ ₣ ₤ ₦ ₩ € ₭ ₹ ™ ← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↰ ↱ ↲ ↳ ↴ ↵

画像

AI_PARSE_DOCUMENT はドキュメント内の画像のマークアップを生成しますが、現在実際の画像は抽出しません。

構造化要素

AI_PARSE_DOCUMENT は自動的にテーブルとフォームを検出して抽出します。

フォント

AI_PARSE_DOCUMENT は、ほとんどのセリフおよびサンセリフフォントのテキストを認識しますが、装飾やスクリプトフォントでは難しい場合があります。機能はハンドを認識しません。

注釈

AI_PARSE_DOCUMENT は文字を認識するためのトレーニングがされていません。

サポートされている言語

AI_PARSE_DOCUMENT は以下の言語でトレーニングされます。

OCR モード

LAYOUT モード

  • 英語

  • フランス語

  • ドイツ語

  • イタリア語

  • ノルウェー語

  • ポーランド語

  • ポルトガル語

  • スペイン語

  • スウェーデン語

  • 中国語

  • 英語

  • フランス語

  • ドイツ語

  • ヒンディー語

  • イタリア語

  • ポルトガル語

  • ルーマニア語

  • ロシア語

  • スペイン語

  • トルコ語

  • ウクライナ語

リージョンの可用性

AI_PARSE_DOCUMENT のサポートは、以下のSnowflakeリージョンのアカウントで利用可能です。

AWS

Azure

Google Cloud Platform

US 西部2(オレゴン州)

東 US 2(バージニア)

US 中央部1(アイオワ)

US 東部(オハイオ)

西 US 2(ワシントン)

US 東部1(北部バージニア)

ヨーロッパ (オランダ)

ヨーロッパ(アイルランド)

ヨーロッパ中部1(フランクフルト)

アジア太平洋(シドニー)

アジア太平洋(東京)

AI_PARSE_DOCUMENT にはクロスリージョンサポートがあります。Cortex AI クロスリージョンのサポートの有効化については、 クロスリージョン推論 をご参照ください。

アクセス制御の要件

さらに、 AI_PARSE_DOCUMENT 関数を使用するには、 ACCOUNTADMIN ロールは、 SNOWFLAKE.CORTEX_USER データベースロールを関数を呼び出せるユーザーに付与する必要があります。詳細については 必要な権限 をご参照ください。

コストの考慮事項

Cortex AI_PARSE_DOCUMENT 関数は、処理されるドキュメントごとのページ数に基づいて計算コストが発生します。各ページは970トークンとして請求されます。以下では、さまざまなファイル形式のページがどのようにカウントされるかについて説明します。

  • ページ化されたファイル形式の場合(PDF 、 DOCX)、ドキュメントの各ページはページごとに請求されます。

  • 画像ファイル形式 (JPEG, JPG, TIF, TIFF, PNG) の場合、個々の画像ファイルは1ページとして請求されます。

  • HTML および TXT ファイルの場合、3,000文字の各チャンクは、最後のチャンク(3,000文字未満になる場合があります)も含めて1ページとして課金されます。

Snowflake は、Cortex AI_PARSE_DOCUMENT 関数を呼び出すクエリを、小規模なウェアハウス(MEDIUM 以下)で実行することを推奨しています。ウェアハウスが大きくなってもパフォーマンスは向上しません。

エラー条件

Snowflake Cortex AI_PARSE_DOCUMENT は以下のエラーメッセージを生成する可能性があります。

メッセージ

説明

ドキュメントにサポートされていない言語が含まれています。

入力ドキュメントにサポートされていない言語が含まれています。

プロバイダーのファイル形式 {file_extension} はサポートされていません。サポートされている形式: .['.docx', '.pptx', '.pdf']。

ドキュメントがサポートされていない形式の場合に返されます。

プロバイダーのファイル形式.binはサポートされていません。対応形式: ['.docx', '.pptx', '.pdf']。ファイルがサーバー側で暗号化されて保存されていることを確認してください。

ファイル形式がサポートされておらず、バイナリファイルとして理解できない場合に返されます。ステージがサーバー側の暗号化を使用していることを確認します。

最大ページ数300ページを超えました。

300ページを超える場合は PDF が返されます。

最大ファイルサイズ104857600バイトを超えました。

ドキュメントが100 MB より大きい場合に返されます。

プロバイダーファイルが見つかりません。

ファイルは存在しません。

プロバイダーのファイルにアクセスできません。

権限不足のため、ファイルにアクセスできません。

Parse Document関数が許容時間内に応答しませんでした。

タイムアウトが発生しました。

内部エラー。

システムエラーが発生しました。待って、もう一度お試しください。