카테고리:

파일 함수 (AI 함수)

PARSE_DOCUMENT(SNOWFLAKE.CORTEX)

참고

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

Snowflake 스테이지의 문서에서 추출된 내용을 JSON 형식의 문자열로 반환합니다. 이 함수는 OCR(광학 문자 인식) 및 레이아웃의 두 가지 추출 타입을 지원합니다. 자세한 내용은 Parsing documents with AI_PARSE_DOCUMENT 섹션을 참조하세요.

구문

SNOWFLAKE.CORTEX.PARSE_DOCUMENT( '@<stage>', '<path>', [ <options> ] )
Copy

인자

필수:

stage

Snowflake 스테이지의 이름입니다.

path

Snowflake 스테이지의 문서에 대한 상대 경로입니다.

선택 사항:

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