ドキュメントを処理する

このクイックスタートでは、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 で、Project Explorer に移動します。
    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 ファイル形式で保存されています。

次のステップ