본문으로 건너뛰기
snowflake검색
AI

문서 처리 (AI_EXTRACT, AI_PARSE_DOCUMENT, Document AI 종료)

2026년 3월 Document AI 화면과 PREDICT 메서드가 종료된 뒤의 문서 처리 방법, AI_PARSE_DOCUMENT 로 텍스트와 레이아웃을 뽑고 AI_EXTRACT 로 필드를 추출하는 파이프라인, 스테이지 준비, 비용과 한계를 정리합니다.

Document AIAI_EXTRACTAI_PARSE_DOCUMENTarctic-extractOCR스테이지2026-10 기준, 약 7분상태 표시 설명

Document AI 는 끝났습니다

Snowflake 는 2026년 3월 16일 Document AI 의 화면(UI)과 <모델 빌드 이름>!PREDICT 메서드를 종료했습니다. 기존 모델 빌드는 화면에서 볼 수 없고, Model Registry 로 옮기지 않은 모델은 추론에 쓸 수 없습니다. 대신 문서 추출은 arctic-extract 모델 기반의 AI_EXTRACT 함수로 옮겨 왔습니다.

예전 (Document AI)지금
화면에서 모델 빌드, 주석 달기, 학습Document Processing Playground (2026-01 GA) 에서 프롬프트 시험, 필요하면 arctic-extract 미세 조정 (2026-04 GA)
model!PREDICT(GET_PRESIGNED_URL(...))AI_EXTRACT(file => TO_FILE(...), responseFormat => ...)
Document AI 의 기존 과금 방식토큰 단위 과금 (공식 문서도 비용이 달라진다고 안내)

주의 Model Registry 로 옮긴 예전 모델은 AI_EXTRACT 의 Document AI 레거시 모델 방식으로 추론은 되지만 새로 미세 조정할 수는 없습니다. 장기적으로는 프롬프트 기반 추출이나 arctic-extract 미세 조정으로 다시 만드는 편이 낫습니다.

도구 고르기

함수결과쓰임
AI_PARSE_DOCUMENT (OCR 모드)텍스트스캔 문서 글자 뽑기
AI_PARSE_DOCUMENT (LAYOUT 모드)표와 제목 구조를 살린 MarkdownRAG 용 청크, 표 보존
AI_PARSE_DOCUMENT 이미지 추출문서 안 그림그림 설명, 멀티모달 검색 (2026-04 GA)
AI_EXTRACT정해진 질문에 대한 값 (JSON)송장 번호, 금액, 계약 당사자
AI_COMPLETE 문서 입력자유 생성문서 요약, 질의응답 (2026-04 GA)
AI_CLASSIFY 문서 분류범주문서 종류 나누기 (2026-05 PuPr)

스테이지 준비

CREATE STAGE docs.invoices
  DIRECTORY = (ENABLE = TRUE)
  ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');   -- 서버 측 암호화

-- 파일 올리기 (Snowflake CLI 예)
-- snow stage copy ./invoices/*.pdf @docs.invoices --overwrite

ALTER STAGE docs.invoices REFRESH;   -- 디렉터리 테이블 갱신
SELECT relative_path, size FROM DIRECTORY(@docs.invoices);

예전에는 내부 스테이지가 서버 측 암호화여야 했지만, 2026년 8월부터 클라이언트 측 암호화 스테이지와 네트워크가 제한된 계정에서도 AI_EXTRACT 와 AI_PARSE_DOCUMENT 를 쓸 수 있습니다 (GA).

텍스트와 레이아웃 뽑기

CREATE OR REPLACE TABLE docs.parsed AS
SELECT relative_path,
       AI_PARSE_DOCUMENT(TO_FILE('@docs.invoices', relative_path),
                         {'mode': 'LAYOUT', 'page_split': TRUE}) AS parsed
FROM DIRECTORY(@docs.invoices);
  • 2026년 4월 페이지 한도가 2,000 페이지로 늘었고, OCR 품질 개선이 5월에 반영되었습니다.
  • 페이지 필터로 필요한 페이지만 처리하면 토큰을 아낍니다.
  • LAYOUT 결과를 청크로 나눠 Cortex Search 에 넣으면 문서 검색과 RAG 가 됩니다.

필드 추출 (AI_EXTRACT)

SELECT relative_path,
       AI_EXTRACT(
         file => TO_FILE('@docs.invoices', relative_path),
         responseFormat => {
           'invoice_no': '송장 번호는?',
           'issue_date': '발행일은? YYYY-MM-DD 로',
           'total': '부가세 포함 총액은? 숫자만',
           'vendor': '공급자 회사 이름은?'
         }
       ) AS fields
FROM DIRECTORY(@docs.invoices);

-- 결과 꺼내기
SELECT fields:response:invoice_no::STRING AS invoice_no,
       TRY_TO_NUMBER(fields:response:total::STRING) AS total
FROM ...;
  • 질문은 짧고 형식을 분명하게 씁니다. 날짜, 숫자 형식을 지정하면 후처리가 쉬워집니다.
  • 표 형태의 값(품목 목록)은 JSON 스키마 형식의 responseFormat 으로 배열을 받을 수 있습니다.
  • 2026년 3월 큰 문서를 빠르게 처리하는 scale factor 매개변수가, 5월 필드별 추출 점수(extraction scores) 가 GA 가 되었습니다. 점수가 낮은 건만 사람이 검토하는 흐름을 만들 수 있습니다.

운영 파이프라인

  1. 버킷이나 내부 스테이지에 문서가 들어오면 디렉터리 테이블 위의 스트림이 새 파일을 잡습니다.
  2. 트리거 태스크가 새 파일에만 AI_EXTRACT 를 실행해 결과 테이블에 넣습니다.
  3. 추출 점수가 낮거나 필수 필드가 비면 검토 큐 테이블로 보냅니다.
  4. 원본 PDF 경로와 추출 결과를 함께 남겨 감사에 대비합니다.
CREATE STREAM docs.invoices_new ON STAGE docs.invoices;

CREATE TASK docs.t_extract
  TARGET_COMPLETION_INTERVAL = '15 MINUTES'
  WHEN SYSTEM$STREAM_HAS_DATA('docs.invoices_new')
  AS
  INSERT INTO docs.invoice_fields
  SELECT relative_path, AI_EXTRACT(file => TO_FILE('@docs.invoices', relative_path), responseFormat => {...})
  FROM docs.invoices_new WHERE METADATA$ACTION = 'INSERT';

비용과 한계

  • 문서 함수는 토큰 단위 AI Credits 로 과금됩니다. 페이지 수와 해상도가 토큰을 좌우하므로 쓸데없는 페이지는 빼고 처리합니다.
  • 실행 쿼리의 웨어하우스 시간이 따로 듭니다. 작은 웨어하우스로 충분합니다.
  • 지원 파일 형식, 파일 크기, 페이지 한도, 리전 가용성은 함수마다 다르므로 공식 표를 확인합니다. 2026년 7월에는 GCP 중동(Dammam) 리전에도 들어왔습니다.

트러블슈팅

  • 증상: AI_EXTRACT 가 일부 문서에서 NULL 만 돌려줍니다.

  • 원인: 스캔 품질이 낮거나, 질문이 문서 표현과 맞지 않거나, 페이지 한도를 넘었습니다.

  • 해결: AI_PARSE_DOCUMENT 로 그 문서의 텍스트가 제대로 나오는지 먼저 보고, 질문을 문서에 쓰인 용어로 바꿉니다. 반복되는 양식이라면 arctic-extract 미세 조정을 검토합니다.

  • 증상: 예전 !PREDICT 를 쓰던 태스크가 3월 이후 실패합니다.

  • 원인: Document AI 종료입니다.

  • 해결: 모델을 Model Registry 로 옮겼다면 AI_EXTRACT 레거시 모델 방식으로, 아니면 프롬프트 기반 AI_EXTRACT 로 파이프라인을 다시 씁니다.

공식 문서

이 문서에서