문서 처리

이 빠른 시작에서는 ABAP SDK for Google Cloud의 SAP BTP 버전을 통해 Document AI API의 일괄 처리 기능을 사용하여 소스 Cloud Storage 버킷에서 문서(인보이스)를 처리하고 처리된 문서(JSON 파일)를 대상 버킷에 저장하는 방법을 보여줍니다.

시작하기 전에

이 빠른 시작을 실행하기 전에 직접 또는 관리자가 다음 기본 요건을 완료했는지 확인합니다.

  • Google Cloud 프로젝트에 Document AI API가 사용 설정되어 있는지 확인합니다.

    API 라이브러리로 이동

  • Document AI Workbench에서 INVOICE_PROCESSOR 유형의 프로세서를 만듭니다. 자세한 내용은 프로세서 만들기 및 관리를 참조하세요.

  • Cloud Storage에서 처리할 인보이스를 저장할 소스 버킷을 만들고 이 버킷에 인보이스를 배치합니다. 자세한 내용은 버킷 만들기를 참조하세요.

  • Cloud Storage에서 처리된 파일을 저장할 대상 버킷을 만듭니다.

문서 처리를 위한 ABAP 클래스 만들기

  1. 패키지를 만듭니다.

    1. ADT에서 프로젝트 탐색기로 이동합니다.
    2. ZLOCAL 패키지를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > ABAP 패키지를 선택합니다.
    3. 패키지에 대한 다음 세부정보를 입력합니다.

      • 이름: ZABAPSDK_TEST를 입력합니다.
      • 설명: ABAP SDK Test Package를 입력합니다.
    4. 다음을 클릭합니다.

    5. 전송 요청 선택 대화상자에서 새 요청 만들기 체크박스를 선택합니다.

    6. 전송 요청에 대한 설명을 입력합니다.

    7. 마침을 클릭합니다.

  2. Document AI API를 호출하는 ABAP 클래스를 만듭니다.

    1. ABAP 패키지를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > ABAP 클래스를 선택합니다.
    2. ABAP 클래스에 대해 다음 세부정보를 입력합니다.

      • 이름: ZGOOG_CL_QS_DOCUMENT_AI를 입력합니다.
      • 설명: Quick start for Document AI API를 입력합니다.
    3. 다음을 클릭합니다.

    4. 전송 요청을 선택하고 마침을 클릭합니다.

  3. 코드 편집기에서 기본 코드를 다음 코드 스니펫으로 바꿉니다.

    " --------------------------------------------------------------------
    "  Copyright 2024 Google LLC                                         -
    "                                                                    -
    "  Licensed under the Apache License, Version 2.0 (the "License");   -
    "  you may not use this file except in compliance with the License.  -
    "  You may obtain a copy of the License at                           -
    "      https://www.apache.org/licenses/LICENSE-2.0                   -
    "  Unless required by applicable law or agreed to in writing,        -
    "  software distributed under the License is distributed on an       -
    "  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      -
    "  either express or implied.                                        -
    "  See the License for the specific language governing permissions   -
    "  and limitations under the License.                                -
    " --------------------------------------------------------------------
    CLASS zcl_qs_process_documents DEFINITION
      PUBLIC FINAL
      CREATE PUBLIC.
    
      PUBLIC SECTION.
        INTERFACES if_oo_adt_classrun.
    ENDCLASS.
    
    
    CLASS zcl_qs_process_documents IMPLEMENTATION.
      METHOD if_oo_adt_classrun~main.
        DATA lv_p_projects_id   TYPE string.
        DATA lv_p_locations_id  TYPE string.
        DATA lv_p_processors_id TYPE string.
        DATA ls_input           TYPE /goog/cl_documentai_v1=>ty_017.
        DATA lo_docai           TYPE REF TO /goog/cl_documentai_v1.
    
        TRY.
    
            " Open HTTP connection
            lo_docai = NEW #( iv_key_name = 'DEMO_DOC_PROCESSING' ).
    
            " Populate relevant parameters to be passed to API
            lv_p_projects_id  = 'PROJECT_ID'.
            lv_p_locations_id = 'LOCATION_ID'.
            lv_p_processors_id = 'PROCESSOR_ID'.
            ls_input-input_documents-gcs_prefix-gcs_uri_prefix = 'SOURCE_BUCKET_URI'.
            ls_input-document_output_config-gcs_output_config-gcs_uri = 'TARGET_BUCKET_URI'.
    
            " Call API method
            lo_docai->batch_process_processors( EXPORTING iv_p_projects_id   = lv_p_projects_id
                                                          iv_p_locations_id  = lv_p_locations_id
                                                          iv_p_processors_id = lv_p_processors_id
                                                          is_input           = ls_input
                                                IMPORTING
                                                          es_output          = DATA(ls_output)
                                                          ev_ret_code        = DATA(lv_ret_code)
                                                          ev_err_text        = DATA(lv_err_text)
                                                          es_err_resp        = DATA(ls_err_resp) ).
    
            IF lo_docai->is_success( lv_ret_code ) = abap_true.
              out->write( |API call successful| ).
            ELSE.
              out->write( |Error occurred during API call| ).
              out->write( lv_err_text ).
            ENDIF.
    
            " Close HTTP connection
            lo_docai->close( ).
    
          CATCH /goog/cx_sdk INTO DATA(lo_exception). " TODO: variable is assigned but never used (ABAP cleaner)
            " Handle exception here
        ENDTRY.
      ENDMETHOD.
    ENDCLASS.
    

    다음을 바꿉니다.

    • DEMO_DOC_PROCESSING: 클라이언트 키 이름입니다.
    • PROJECT_ID: Document AI API가 사용 설정된 Google Cloud 프로젝트의 ID입니다.
    • LOCATION_ID: 프로세서의 위치입니다.
    • PROCESSOR_ID: 프로세서의 ID입니다.
    • SOURCE_BUCKET_URI: 소스 문서 처리를 위해 유지되는 Cloud Storage 버킷 폴더의 URI입니다.
    • TARGET_BUCKET_URI: 처리된 문서(JSON 파일)를 저장할 Cloud Storage 버킷의 URI입니다.
  4. 변경사항을 저장하고 활성화합니다.

  5. 애플리케이션을 실행합니다.

    1. ABAP 클래스 ZGOOG_CL_QS_DOCUMENT_AI를 선택합니다.
    2. 실행 > 다음 권한으로 실행 > ABAP 애플리케이션(콘솔)을 클릭합니다. 또는 F9를 누릅니다.
  6. 결과를 확인하기 위해 다음 단계를 수행합니다.

    1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

      버킷으로 이동

    2. 대상 버킷을 엽니다. 처리된 문서는 JSON 파일 형식으로 저장됩니다.

다음 단계