メインコンテンツへスキップ
Box AIが公開するインテリジェントな抽出機能により、開発者は、1回のAPIコールでドキュメントから自動的にキー/値ペアを抽出できます。この強力な機能は、非構造化ドキュメントのコンテンツを、手動によるデータ入力なしで実用的なメタデータに変換するため、請求書、フォーム、契約書などのビジネスドキュメントのドキュメント処理ワークフローが効率化されます。 このクイックスタートでは、Box Python SDKを構成し、Box AIを使用して、Boxに保存されている源泉徴収票からデータを抽出する方法を紹介します。
1

Boxアプリケーションを作成して構成する

任意のBox Platform統合では、最初のステップとして、Boxアプリケーションを作成して構成します。
  1. Box開発者コンソールに移動します。
  2. このクイックスタートでは、アプリケーションの種類としてClient Credentials Grantを使用してアプリを作成します。
  3. アプリが作成されたら、以下のスコープを有効にします。
  • Boxに格納されているすべてのファイルとフォルダの読み取り
  • Boxに格納されているすべてのファイルとフォルダへの書き込み
  • AIを管理する
Boxアプリケーションの新規作成の詳細については、最初のアプリケーションの作成を参照してください。
2

テストファイルをアップロードする

テンプレートを準備したら、テストするファイルを選択します。このクイックスタートでは、こちらの源泉徴収票のサンプルを使用してください。
  1. テスト用ドキュメントをダウンロードして、Boxアカウントにドラッグアンドドロップします。
  2. ファイルIDを確認するには、Boxでファイルを開いてURLを調べます。パスの最後の部分がファイルIDです。たとえば、次のようなURLがあるとします: https://app.box.com/file/2064123286902 この場合、ファイルIDは2064123286902です。
3

環境を設定する

抽出を実行するために、開発環境を設定します。このクイックスタートでは、PythonとBox Python SDKバージョン10を使用します。お使いのマシンにPython 3.11以上がインストールされていることを確認してください。
  1. プロジェクト用に新しいディレクトリを作成し、そのディレクトリに移動します。
  2. 仮想環境を作成します。
    python3 -m venv .venv
    source .venv/bin/activate
    
  3. Box Python SDKをインストールします。
    pip install "boxsdk~=10"
    
  4. .envファイルから環境変数を読み込むためにpython-dotenvパッケージをインストールします。
    pip install python-dotenv
    
  5. プロジェクトディレクトリのルートに.envファイルを作成し、以下の環境変数を追加します。その際、プレースホルダの値を実際のBoxアプリの資格情報と前の手順で確認したIDに置き換えます。
     BOX_DEVELOPER_TOKEN=your_box_developer_token
    
     BOX_METADATA_TEMPLATE_KEY=your_metadata_template_key
     BOX_FILE_ID=your_box_file_id
    
開発者トークンを取得するには、Box開発者コンソールに移動します。アプリを開き、[構成] タブに移動します。
  1. [開発者トークンを生成] をクリックして新しいトークンを作成します。
簡略化するために、このクイックスタートでは、有効期間の短い開発者トークンを使用します。実稼働環境では、開発者トークンではなく、お使いのアプリに設定された方法 (クライアント資格情報許可など) で認証する必要があります。
4

freeform-extract.pyファイルを作成する

開発環境の準備ができました。Box AIを使用してドキュメントからデータを抽出するPythonスクリプトを作成できます。
  1. プロジェクトディレクトリのルートにfreeform-extract.pyという名前の新しいファイルを作成し、以下のコードを追加します。
    import os
    
    from dotenv import load_dotenv
    
    from box_sdk_gen import (
        AiItemBase,
        BoxClient,
        BoxDeveloperTokenAuth
    )
    
    # Set up environment variables
    load_dotenv()
    
    developer_token = os.getenv("BOX_DEVELOPER_TOKEN")
    file_id = os.getenv("BOX_FILE_ID")
    
    def get_box_client(token: str) -> BoxClient:
        
        if not developer_token:
            raise ValueError("BOX_DEVELOPER_TOKEN is not set in environment variables.")
        
        auth = BoxDeveloperTokenAuth(token=token)
        client = BoxClient(auth=auth)
    
        return client
    
    def main():
        client = get_box_client(token=developer_token)
    
        # Get the current user and print the ID to validate the client is working
        me = client.users.get_user_me()
        print(f"My user ID is {me.id}")
    
    if __name__ == "__main__":
        main()
    
    このコードは、環境変数を.envファイルから読み込み、Box SDKクライアントを初期化し、現在のユーザーのIDを出力して、クライアントが正しく動作していることを確認します。
  2. ターミナルで次のコマンドを使用してスクリプトを実行します。
    python freeform-extract.py
    
    Box SDKクライアントが正しく設定されると、コンソールにはユーザーIDが表示されます。次に例を示します。
    My user ID is 123456789
    
5

データを抽出する

Box SDKクライアントが動作を開始したら、Box AIを使用してドキュメントからデータを抽出するためのコードを追加できます。
  1. get_box_client関数とmain関数の間に次の関数を追加します。
    def extract_metadata(client: BoxClient, file_id: str) -> str:
    
        prompt = """
        firstName, lastName, wages, federalTaxWithheld, 
        socialSecurityWages, socialSecurityTaxWithheld, 
        medicareWagesAndTips, medicareTaxWithheld, 
        stateWages, stateTaxWithheld, 
        localWagesAndTips, localTaxWithheld
        """
    
        metadata = client.ai.create_ai_extract(
            prompt,
            [AiItemBase(id=file_id)]
        )
        
        return metadata.to_dict()['answer']
    
    この関数では、Box AIのcreate_ai_extractメソッドを使用して、指定したファイルからメタデータを抽出します。BoxClientとファイルIDは関数に送信され、この関数により、抽出されたメタデータがディクショナリとして返されます。
  2. main関数でメタデータを抽出する関数呼び出しを追加します。新しいmain関数に次のロジックが含まれていることを確認します。
    def main():
        client = get_box_client(token=developer_token)
    
        me = client.users.get_user_me()
        print(f"My user ID is {me.id}")
    
        metadata = extract_metadata(client=client, file_id=file_id)
    
        print(f"\n\nExtracted Metadata: {metadata}")
    
    SDKはBox AIへのAPIコールを処理し、抽出されたメタデータをAiExtractResponseオブジェクトとして返します。このクイックスタートでは、このコードによって、このオブジェクトがディクショナリに変換され、抽出されたキー/値ペアを含むanswerフィールドが返されます。
  3. ターミナルで次のコマンドを実行して、抽出されたメタデータをコンソールに出力し、抽出が成功したかどうかを確認します。
    python freeform-extract.py
    
    抽出が成功した場合、コンソールでは、ユーザーIDの後に、源泉徴収票から抽出されたメタデータが表示されます。
    My user ID is 123456789
    
    Extracted Metadata: {"firstName": "Wayne", "lastName": "Gatsby", "wages": "355000", "federalTaxWithheld": "125600", "socialSecurityWages": "355000", "socialSecurityTaxWithheld": "12300", "medicareWagesAndTips": "355000", "medicareTaxWithheld": "13200", "stateWages": "355,000", "stateTaxWithheld": "15000", "localWagesAndTips": "355000", "localTaxWithheld": "8000"}
    

リソース