자습서: Document AI를 사용하여 문서 처리 파이프라인 만들기

소개

Document AI 를 사용하면 다양한 형식의 문서를 처리하고 텍스트가 많은 단락과 로고, 필기 텍스트(서명), 체크 표시 등 텍스트가 포함된 이미지 모두에서 정보를 추출할 수 있습니다. 이 자습서에서는 필요한 오브젝트 및 권한을 설정하고 처리 파이프라인에서 사용할 Document AI 모델 빌드를 생성하여 Document AI 를 소개합니다.

이 자습서에서는 Snowsight 웹 인터페이스를 사용합니다. SQL을 사용해야 하는 단계의 경우 SQL 실행을 지원하는 모든 Snowflake 클라이언트를 사용할 수 있습니다.

알아볼 내용

이 자습서에서는 다음에 대해 설명합니다.

  • Document AI 작업에 필요한 오브젝트 및 권한을 설정합니다.

  • Snowsight 의 Document AI 사용자 인터페이스를 사용하여 Document AI 모델 빌드를 준비하여 비정형 문서에서 데이터를 추출합니다.

  • Document AI 모델 빌드와 스트림 및 작업을 사용하여 스테이지에서 새 문서를 지속적으로 처리할 수 있는 파이프라인을 생성합니다.

전제 조건

이 자습서를 완료하려면 다음과 같은 필수 조건이 필요합니다.

  • 이 자습서에 사용된 사용자 지정 역할을 생성하기 위해 사용되는 ACCOUNTADMIN 역할이 있는 사용자로 연결하고 새 역할에 필요한 권한을 부여해야 합니다.

  • Document AI 에 지원되는 상업용 리전 중 하나에 Snowflake 계정이 있어야 합니다. 지원되는 리전에 대한 자세한 내용은 Document AI 가용성 을 참조하십시오.

  • Document AI 를 사용할 수 있는 웨어하우스가 준비되어 있어야 합니다. 웨어하우스 선택에 대한 자세한 내용은 Document AI 에 대한 최적의 웨어하우스 크기 결정 섹션을 참조하십시오.

필요한 오브젝트 및 권한 설정

이 섹션에서는 다음을 수행합니다.

  • Document AI 모델 빌드를 포함할 데이터베이스와 스키마를 만듭니다.

  • 사용자 지정 역할을 만들어 Document AI 모델 빌드 및 문서 처리 파이프라인을 준비합니다.

  • 사용자 지정 역할에 필요한 권한을 부여합니다.

데이터베이스, 스키마, 사용자 지정 역할 만들기

Document AI 와 함께 사용할 데이터베이스, 스키마 및 역할을 생성하려면 다음을 수행합니다.

  1. Document AI 모델 빌드를 생성할 데이터베이스와 스키마를 만듭니다.

    CREATE DATABASE doc_ai_db;
    CREATE SCHEMA doc_ai_db.doc_ai_schema;
    
    Copy
  2. 사용자 지정 역할 doc_ai_role 을 생성하여 Document AI 모델 빌드를 준비하고 처리 파이프라인을 만듭니다.

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE doc_ai_role;
    
    Copy

필수 권한 부여

Document AI 작업에 필요한 권한을 부여하려면, 다음을 수행합니다.

  1. SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR 데이터베이스 역할을 doc_ai_role 역할에 부여합니다.

    GRANT DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR TO ROLE doc_ai_role;
    
    Copy
  2. doc_ai_role 역할에 웨어하우스 사용 및 운영 권한을 부여합니다.

    GRANT USAGE, OPERATE ON WAREHOUSE <your_warehouse> TO ROLE doc_ai_role;
    
    Copy
  3. doc_ai_role 에 생성한 데이터베이스 및 스키마를 사용할 수 있는 권한을 부여합니다.

    GRANT USAGE ON DATABASE doc_ai_db TO ROLE doc_ai_role;
    GRANT USAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    
    Copy
  4. 추출할 문서를 저장할 수 있도록 doc_ai_role 역할에 스키마에 대한 생성 스테이지 권한을 부여합니다.

    GRANT CREATE STAGE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    
    Copy
  5. 모델 빌드(DOCUMENT_INTELLIGENCE 클래스의 인스턴스)를 생성할 수 있는 권한을 doc_ai_role 역할에 부여합니다.

    GRANT CREATE SNOWFLAKE.ML.DOCUMENT_INTELLIGENCE ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    
    Copy
  6. 스트림 및 작업을 사용하여 처리 파이프라인을 생성하는 데 필요한 권한을 doc_ai_role 역할에 부여합니다.

    GRANT CREATE STREAM, CREATE TABLE, CREATE TASK, CREATE VIEW ON SCHEMA doc_ai_db.doc_ai_schema TO ROLE doc_ai_role;
    GRANT EXECUTE TASK ON ACCOUNT TO ROLE doc_ai_role;
    
    Copy
  7. 자습서의 다음 단계에서 사용할 수 있도록 자습서 사용자에게 doc_ai_role 을 부여합니다.

    GRANT ROLE doc_ai_role TO USER <your_user_name>;
    
    Copy

이 섹션에서 학습한 내용

이 섹션에서는 다음 내용에 대해 살펴봤습니다.

  • Document AI 모델 빌드를 포함할 데이터베이스와 스키마 만들기.

  • doc_ai_role 사용자 지정 역할 만들기.

  • doc_ai_role 역할에 필요한 권한을 부여하고 해당 역할을 자습서 사용자에게 부여.

Document AI 모델 빌드 준비

이 섹션에서는 모델 빌드를 생성하고 모델을 테스트할 문서를 업로드하여 Document AI 모델 빌드를 준비합니다.

Document AI 모델 빌드는 문서의 단일 유형을 나타냅니다. 이 자습서에서는 검사 검토에서 정보를 추출하기 위한 모델 빌드를 만들어 보겠습니다. Document AI 모델 빌드에는 모델, 추출할 데이터 값, 모델 테스트를 위해 업로드한 문서가 포함됩니다.

Document AI 모델 빌드 만들기

Document AI 모델 빌드를 생성하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 AI & ML » Document AI 를 선택합니다.

  3. 웨어하우스를 선택합니다.

  4. + Build 를 선택합니다.

  5. 대화 상자가 나타나면 모델 빌드 이름으로 inspection_reviews 를 입력하고 위치(doc_ai_db 데이터베이스 및 doc_ai_schema 스키마)를 선택합니다.

  6. Create 를 선택합니다.

Document AI 모델 빌드에 문서 업로드

새로 생성된 Document AI 모델 빌드에 문서를 업로드하려면 다음을 수행합니다.

  1. 모델 빌드 테스트 자습서에 필요한 문서를 얻으려면 zip 파일 을 로컬 파일 시스템에 다운로드합니다.

  2. PDF 문서가 포함된 콘텐츠의 압축을 풉니다.

  3. inspection_reviews 모델 빌드에서 Build Details 탭을 선택합니다.

  4. Upload documents 를 선택합니다.

  5. Browse 를 선택하거나 다운로드한 문서를 끌어다 놓습니다.

  6. Upload 를 선택합니다.

이 섹션에서 학습한 내용

이 섹션에서는 다음 내용에 대해 살펴봤습니다.

  • Document AI 모델 빌드를 만듭니다.

  • 문서를 업로드하여 Document AI 모델 빌드를 테스트합니다.

데이터 값 정의 및 결과 검토

이 섹션에서는 자연어로 Document AI 모델에 질문하여 데이터 값을 정의합니다. 그런 다음 모델이 제공하는 답변을 검토합니다.

데이터 값은 문서에서 추출할 정보입니다. 값은 값 이름과 자연어로 묻는 질문으로 구성됩니다.

Document AI 모델 빌드에 대한 값을 정의하려면:

  1. inspection_reviews 모델 빌드에서 Build Details 탭을 선택합니다.

  2. Define values 를 선택합니다.

  3. Documents review 뷰에서 + Value 를 선택합니다.

  4. 각 문서에 대해 다음의 값 이름 및 질문 쌍을 입력합니다.

    • inspection_date: 검사일은 언제입니까?

    • inspection_grade: 등급은 무엇입니까?

    • inspector: 검사한 사용자가 누구입니까?

    • list_of_units: 모든 단위는 무엇입니까?

  5. 각 문서와 데이터 값에 대해 모델이 제공하는 답변을 검토합니다.

    • 답변이 올바르면, 체크 표시를 선택합니다.

    • 답변이 틀렸다면, 직접 올바른 값을 입력합니다.

이 섹션에서 학습한 내용

이 섹션에서는 다음 내용에 대해 살펴봤습니다.

  • 자연어로 모델 질문을 하여 추출할 데이터 값을 정의합니다.

  • 모델이 제공한 답을 확인하거나 수정하여 결과를 검토합니다.

Document AI 모델 빌드 게시

이 섹션에서는 처리 파이프라인에서 추출에 사용할 수 있도록 Document AI 모델 빌드를 게시합니다. 모델 빌드를 게시하면 프로덕션에서 최신 버전의 모델 빌드를 사용할 수 있습니다.

모델 빌드를 게시하려면 다음을 수행합니다.

  1. inspection_reviews 모델 빌드에서 Build Details 탭을 선택합니다.

  2. Model accuracy 에서 Publish version 를 선택합니다.

  3. 이때 나타나는 대화 상자에서 Publish 를 선택하여 확인합니다.

참고

모델 정확도와 결과가 만족스럽지 않은 경우 선택적으로 모델을 미세 조정하여 개선할 수 있습니다. 이 자습서에는 미세 조정이 포함되지 않습니다. 모델 평가 및 교육에 대한 자세한 내용은 Document AI 모델 평가 섹션을 참조하십시오.

이 섹션에서 학습한 내용

이 섹션에서는 처리 파이프라인에서 추출을 위한 모델 빌드를 사용하기 위해 Document AI 모델 빌드를 게시했습니다.

문서 처리 파이프라인 만들기

이 섹션에서는 이미 준비된 Document AI 모델 빌드, 스트림 및 작업을 사용하여 처리 파이프라인을 생성합니다. 파이프라인은 내부 스테이지에 저장된 새로운 검사 문서에서 정보를 추출합니다.

처리 파이프라인을 만들려면:

  • 스트림과 작업을 사용하여 파이프라인을 설정합니다.

  • 새로운 문서를 내부 스테이지에 업로드합니다.

  • 추출된 정보를 봅니다.

처리 파이프라인 설정

  1. 문서를 저장할 내부 my_pdf_stage 스테이지를 생성합니다.

    CREATE OR REPLACE STAGE my_pdf_stage
      DIRECTORY = (ENABLE = TRUE)
      ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
    
    Copy
  2. my_pdf_stage 스테이지에 my_pdf_stream 스트림을 생성합니다.

    CREATE STREAM my_pdf_stream ON STAGE my_pdf_stage;
    
    Copy
  3. 스테이징된 문서 파일을 저장할 디렉터리 테이블의 메타데이터를 새로 고칩니다.

    ALTER STAGE my_pdf_stage REFRESH;
    
    Copy
  4. 데이터베이스 및 스키마를 지정합니다.

    USE DATABASE doc_ai_db;
    USE SCHEMA doc_ai_schema;
    
    Copy
  5. 문서에 대한 정보(예: file_name)와 PDF 문서에서 추출할 데이터를 저장할 pdf_reviews 테이블을 생성합니다.

    CREATE OR REPLACE TABLE pdf_reviews (
      file_name VARCHAR,
      file_size VARIANT,
      last_modified VARCHAR,
      snowflake_file_url VARCHAR,
      json_content VARCHAR
    );
    
    Copy

    json_content 열에는 추출된 정보가 JSON 형식으로 포함됩니다.

  6. 스테이지에서 새 문서를 처리할 load_new_file_data 작업을 생성합니다.

    CREATE OR REPLACE TASK load_new_file_data
      WAREHOUSE = <your_warehouse>
      SCHEDULE = '1 minute'
      COMMENT = 'Process new files in the stage and insert data into the pdf_reviews table.'
    WHEN SYSTEM$STREAM_HAS_DATA('my_pdf_stream')
    AS
    INSERT INTO pdf_reviews (
      SELECT
        RELATIVE_PATH AS file_name,
        size AS file_size,
        last_modified,
        file_url AS snowflake_file_url,
        inspection_reviews!PREDICT(GET_PRESIGNED_URL('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content
      FROM my_pdf_stream
      WHERE METADATA$ACTION = 'INSERT'
    );
    
    Copy

    새로 생성된 작업은 자동으로 일시 중단됩니다.

  7. 새로 생성된 작업을 시작합니다.

    ALTER TASK load_new_file_data RESUME;
    
    Copy

참고

Document AI는 서버리스 작업 을 지원하지 않습니다.

내부 스테이지에 새 문서 업로드

  1. 자습서에 필요한 문서를 얻으려면 zip 파일 을 로컬 파일 시스템에 다운로드합니다.

  2. PDF 파일이 포함된 콘텐츠의 압축을 풉니다.

  3. Snowsight에서 Data » Databases 를 선택합니다.

  4. doc_ai_db 데이터베이스, doc_ai_schemamy_pdf_stage 스테이지를 선택합니다.

  5. + Files 를 선택합니다.

  6. 표시되는 Upload Your Files 대화 상자에서 방금 다운로드한 파일을 선택합니다.

  7. Upload 를 선택합니다.

추출된 정보 보기

  1. 문서를 스테이지에 업로드한 후, 새 문서에서 추출된 정보를 봅니다.

    SELECT * FROM pdf_reviews;
    
    Copy
  2. pdf_reviews_2 테이블을 생성하여 추출된 정보를 별도의 열로 분석합니다.

    CREATE OR REPLACE TABLE doc_ai_db.doc_ai_schema.pdf_reviews_2 AS (
     WITH temp AS (
       SELECT
         RELATIVE_PATH AS file_name,
         size AS file_size,
         last_modified,
         file_url AS snowflake_file_url,
         inspection_reviews!PREDICT(get_presigned_url('@my_pdf_stage', RELATIVE_PATH), 1) AS json_content
       FROM directory(@my_pdf_stage)
     )
    
     SELECT
       file_name,
       file_size,
       last_modified,
       snowflake_file_url,
       json_content:__documentMetadata.ocrScore::FLOAT AS ocrScore,
       f.value:score::FLOAT AS inspection_date_score,
       f.value:value::STRING AS inspection_date_value,
       g.value:score::FLOAT AS inspection_grade_score,
       g.value:value::STRING AS inspection_grade_value,
       i.value:score::FLOAT AS inspector_score,
       i.value:value::STRING AS inspector_value,
       ARRAY_TO_STRING(ARRAY_AGG(j.value:value::STRING), ', ') AS list_of_units
     FROM temp,
       LATERAL FLATTEN(INPUT => json_content:inspection_date) f,
       LATERAL FLATTEN(INPUT => json_content:inspection_grade) g,
       LATERAL FLATTEN(INPUT => json_content:inspector) i,
       LATERAL FLATTEN(INPUT => json_content:list_of_units) j
     GROUP BY ALL
    );
    
    Copy
  3. 출력을 확인합니다.

    SELECT * FROM pdf_reviews_2;
    
    Copy

이 테이블은 FLATTEN 함수를 사용하여 json_content JSON을 별도의 열로 구문 분석하여 쉽게 볼 수 있도록 합니다.

이 테이블에는 검사 문서를 위해 모델 빌드를 준비할 때 정의된 데이터 값(예: inspection_grade_value, inspection_date_value)과 해당 신뢰도 점수(inspection_grade_score, inspection_date_score)가 포함되어 있습니다.

이 섹션에서 학습한 내용

이 섹션에서는 다음 내용에 대해 살펴봤습니다.

  • 새로운 문서를 저장할 내부 스테이지를 생성합니다.

  • 처리 파이프라인을 준비하는 데 필요한 스트림과 작업을 만듭니다.

  • 내부 스테이지에 문서를 업로드합니다.

  • 추출된 정보를 테이블로 봅니다.

자세히 알아보기

축하합니다! 이 자습서를 성공적으로 완료했습니다. 이제 자체 사용 사례에서 Document AI 를 사용하여 작업을 시작할 준비가 되었습니다.

이 과정에서 다음 내용에 대해 알아봤습니다.

  • Document AI 작업에 필요한 오브젝트와 권한을 설정합니다.

  • Document AI 모델 빌드를 만듭니다.

  • Document AI 모델 빌드에 문서를 업로드하여 모델을 테스트합니다.

  • 자연어로 모델 질문을 하여 추출할 데이터 값을 정의합니다.

  • 모델이 제공하는 답을 확인하거나 수정하여 결과를 검토합니다.

  • 처리 파이프라인에서 추출을 위한 모델 빌드를 사용하기 위해 Document AI 모델 빌드를 게시합니다.

  • 스트림과 작업을 만들고 Document AI 모델 빌드를 사용해 새 문서에서 정보를 추출하여 문서 처리 파이프라인을 준비합니다.

추가 리소스

다음 리소스를 활용하여 계속 알아보십시오.