카테고리:

파일 함수 (AI 함수)

PARSE_DOCUMENT(SNOWFLAKE.CORTEX)

참고

AI_PARSE_DOCUMENT 는 이 함수의 최신 버전입니다. 최신 기능의 경우 AI_PARSE_DOCUMENT 를 참조하십시오. PARSE_DOCUMENT (SNOWFLAKE.CORTEX) 를 계속 사용할 수 있습니다.

Snowflake 스테이지의 문서에서 추출된 내용을 JSON 형식의 문자열로 반환합니다. 이 함수는 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 모드) 또는 마크다운 형식의 텍스트(LAYOUT 모드)입니다.

    • "index": 파일의 페이지 인덱스로, 0부터 시작합니다. 문서에 지정된 페이지 번호와 형식은 무시됩니다.

  • "errorInformation": 문서를 구문 분석할 수 없는 경우 오류 정보를 포함합니다.

  • "metadata": 페이지 수와 같은 문서에 대한 메타데이터를 포함합니다.

참고

"pages""metadata" 필드는 구문 분석이 성공하는 경우 출력에 표시됩니다. "errorInformation" 는 구문 분석이 실패하는 경우에만 존재합니다.

:code:`’page_split’`이 FALSE이거나 존재하지 않는 경우 출력의 구조는 다음과 같습니다.

  • "content": 일반 텍스트(OCR 모드) 또는 마크다운 형식의 텍스트(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 함수는 동적 테이블을 지원하지 않습니다.