ラベルスタジオ

データセットのラベル付けにはLabel Studioを使用します。

Oracleのデータ・ラベリング・サービスは非推奨になりました。ラベル付きデータセットは、オープン・ソースおよびマーケットプレイスでサポートされているラベリング・ツールであるLabel Studioに移行する必要があります。データ・ラベリングが非推奨になった場合、この項では、データ・ラベリング・スナップ・ショット・エクスポートをLabel StudioインポートおよびLabel Studio JSONエクスポート形式に変換する方法について説明します。これらの形式は、Label Studioまたは直接モデル・トレーニングでさらに注釈として使用できます。

カスタム・モデルをトレーニングするには、次の2つのファイルが必要です。

マニフェストファイル
このファイルには注釈ファイルに関するメタデータが含まれ、通常は.jsonl拡張子が付きます。
レコード・ファイル

これは、注釈の後にLabel Studioからエクスポートされたデータセットです。ファイルの拡張子は.jsonです。

  • カスタムKVの場合、レコード・ファイルはJSON-MIN形式です。

  • カスタムDCの場合、レコード・ファイルは標準JSON形式です。

1.Label Studio環境の設定

仮想環境またはCondaを使用できます:
  1. requirement.txtファイルを作成します。
    label-studio==1.19.0
    pdf2image
    oci
    label-studio-ml
  2. 環境を作成します。
    • 仮想環境の使用:
      python3 -m venv env_name
    • Condaの使用:
      conda create --name env_name
  3. 環境のアクティブ化:
    • 仮想環境の使用:
      source env_name/bin/activate
    • Condaの使用:
      conda activate env_name
  4. Label Studioの依存関係をインストールする
    pip install -r requirements.txt
  5. ローカルファイルの提供を有効にします。
    ファイルはローカルに格納されるため、次の環境変数をエクスポートして、Label Studioでアクセスして注釈を付けることができるようにする必要があります。
    export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
    export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=<absolute-path-to-parent-directory-of-folder-where-documents-are-stored>
    詳細は、Label Studioのドキュメントの環境変数の設定を参照してください。

1.1 ラベルスタジオの開始

  1. Label Studioを起動します。
    デフォルトでは、Label Studioはポート8080で実行されます。そのポートがすでに使用されている場合、または別のポートを指定する場合は、次のコマンドでLabel Studioを起動します。
    label-studio start --port <port_number>
    詳細は、Label StudioのドキュメントのStart Label Studioを参照してください。
  2. アカウントを作成します

    最初にLabel Studioを起動すると、サインアップ画面が表示されます。

    1. Eメール・アドレスとパスワードを使用してアカウントを作成します。
    2. Label Studioにログインします。

2. カスタム・キー値抽出のラベル付けワークフロー

詳細は、Label StudioでPDF注釈をネイティブにサポートしていません。Label StudioドキュメントのPDFラベリングの基本ツールを参照してください。

ページ区切りマルチイメージラベリングには回避方法があります。

PDFにラベルを付けるには、次のステップに従います。

  1. PDFをイメージに変換します。詳細は、このコード・チュートリアルを参照してください。
  2. Label Studioからアクセス可能な場所に画像を保存します。
  3. 新しいLabel Studioプロジェクトを作成し、データをアップロードします。
    タスクごとに、ドキュメント内の各イメージ(またはページ)の場所に対応するURLのリストがあります。これらは、ドキュメントがホストされているURLです。
  4. 新しい複数ページ・ドキュメント注釈テンプレートを使用して、ラベル付けを構成します。
  5. データのラベル付けを行います。
  6. ユーティリティ・スクリプトをダウンロードし、キー値注釈のutility_scripts_kv.zipを抽出します。

2.1 タスク・リストの生成

研修文書がPDF形式の場合は、まずそれらをイメージに変換する必要があります。pdf_to_imagesファンクションは、この変換を実行し、指定された入力ディレクトリのルートに作成されるoutput_imagesフォルダ(Images_input_root)にイメージを保存します。PDFごとに、対応するイメージを格納するために、output_imagesディレクトリ内に個別のフォルダ(PDFファイルの後に名前が付けられます)が作成されます。

  1. Label Studio注釈の場合は、タスク・リストを生成する必要があります。各タスクは、単一のドキュメントの注釈に対応しています。
  2. コマンドラインから、前のタスクのステップ6でダウンロードしたユーティリティ・スクリプトに含まれているファイルgenerate_tasks.kv.pvを実行します。

2.2 事前注釈用のOCR統合の設定

注釈ワークフローを効率化し、手作業を最小限に抑えるために、Label Studioでインタラクティブな事前注釈を有効にできます。この設定により、OCRサービスを使用して境界ボックスが自動的に生成されます。OCI OCRはMLバックエンドとして統合され、キー値注釈のイメージに境界ボックスを生成します。次のリポジトリをクローニングし、必要な依存関係をインストールします。

詳細は、Label Studioのドキュメントの独自のMLバックエンドの記述を参照してください。

  1. label-studio-ml-backendをインストールします。
    git clone https://github.com/HumanSignal/label-studio-ml-backend.git
    cd label-studio-ml-backend/
    pip install -e .
  2. OCIテキスト抽出サービスをコールするためのパラメータを構成します。
    CONFIG_PROFILE = "DEFAULT"
    COMPARTMENT_ID = "ocid1.compartment.oc1.xxxxxxxxxxxxxxxxxxxxxxxx"
    SERVICE_ENDPOINT = "https://document-preprod.aiservice.xxxxxxxxxxxxxxxx"
    LANGUAGE="ENG"
  3. テキスト抽出サービスの開始:
    1. ユーティリティ・スクリプトをダウンロードし、ociocr.zipの内容をlabel-studio-ml-backend/label_studio_ml/examples/ディレクトリに抽出します。
    2. 次のコマンドを実行して、OCRサービスを起動します。
      label-studio-ml start ./ociocr --port <port>

2.3 プロジェクトの作成および構成

  1. Label Studioのドキュメントのステップに従って、新しいプロジェクトを作成します。
  2. ソース・データ記憶域を追加します。
    1. 「設定」で、「クラウド・ストレージ」を選択します。
    2. 「ローカル・ファイル」を選択します。
    3. input_pdfフォルダおよびoutput_imagesフォルダへのローカル・ファイル・ストレージ・パスを入力します。詳細は、Label Studioのローカルストレージに関するドキュメントを参照してください。
  3. ラベル付け構成を設定します。
    1. 「設定」で、「ラベル付けインタフェース」を選択します。
    2. 「コード」を選択します。
    3. ラベリング構成に次のコードを追加します。
      <View>
        <Repeater on="$pages" indexFlag="{{idx}}" mode="pagination">
          <View style="display:flex;align-items:start;gap:8px;flex-direction:row">
            <Image name="page_{{idx}}" value="$pages[{{idx}}].page" inline="true"/>
              <Labels name="labels_{{idx}}" toName="page_{{idx}}" showInline="false">
                <Label value="ignore" background="#FFA39E"/>
                <Label value="Invoice_Number" background="#a59eff"/>
                <Label value="Invoice_Date" background="#0dd377"/>
                <Label value="Total" background="#ffdf6b"/>
              </Labels>
          </View>
           
          <Rectangle name="bbox_{{idx}}" smart="true" toName="page_{{idx}}" strokeWidth="3"/>
          <TextArea name="transcription_{{idx}}" toName="page_{{idx}}" editable="true" perRegion="true" required="true" maxSubmissions="1" rows="5" placeholder="Recognized Text" displayMode="region-list"/>
        
        </Repeater>
      </View>
    4. 保存します。
    5. 必要に応じて、「ビジュアル」を選択してラベルを追加または削除します。
  4. 対話型の事前注釈付けを有効にします(OCI OCRをコールするには、接続モデル・オプションを設定します)。
    1. 「設定」で、「モデル」を選択します。
    2. 「モデルの追加」を選択します。
    3. 次のものを追加または更新します:
      • Label Studioのプロジェクト設定で「モデルの接続」を有効にします。

      • OCI OCRエンドポイントを指すようにバックエンドURLを構成します。

      • OCI OCRに安全に接続するために、必要な認証キーが.envファイルにあることを確認します。

      • 接続後、Label Studioはアップロードされた各ドキュメントをOCI OCRサービスに自動的に送信し、予測境界ボックスを事前注釈として表示します。

      • 事前注釈付きの結果は、対話形式で確認、変更または受諾できます。

2.4 Label Studioのデータセット注釈

  1. 新しいデータセット注釈を作成します。
    1. セクション2.1「タスク・リストの生成」の説明に従って、注釈用のタスクJSONを生成します。
    2. 注釈用にインポートします。
  2. Label Studioで既存のデータ・ラベリング注釈付きデータを拡張します。
    1. データ・ラベリング注釈付きデータセットをLabel Studio互換フォーマットに移行します。
    2. 変換後、これらのデータセットをLabel Studioにインポートして、必要に応じて注釈を拡張、調整または完了できます。ユーティリティ・スクリプトからスクリプトDLS2LS_conversion_ky.pyを使用します。
  3. 注釈のタスクをインポートします。
    1. 新規注釈のためにステップ1aで作成した、生成されたtasks.jsonファイルをインポートします。
    2. 既存のデータ・ラベリング注釈の場合は、それらをLabel Studio形式に変換します。
    3. 必要に応じて、Label Studioにインポートして、注釈を拡張、調整または完了します。
  4. Label Studioのドキュメントのステップに従って、ラベル付けを開始します。
  5. 注釈をJSON-MIN形式でエクスポートします。

    レコード・ファイルは、注釈プロセスの完了後にLabel Studioから直接エクスポートされます。

  6. ユーティリティ・スクリプトから、スクリプトGenerate_manifest.pyを使用してマニフェスト・ファイルを生成します。
  7. マニフェスト・ファイル、レコード・ファイルおよびイメージまたはPDFドキュメントを、マニフェストで定義されているバケットおよびパスにアップロードします。
    ノート

    ローカルのdocument_rootディレクトリは、クラウド上の<bucket_name/prefix>にマップされます。ローカル記憶域と同じフォルダ構造を維持します。トレーニング・パイプラインは、この構造を想定し、ファイルを正しく検索するためにこの構造に依存します。

3. カスタム文書分類のラベル付けワークフロー

詳細は、Label StudioでPDF注釈をネイティブにサポートしていません。Label StudioドキュメントのPDFラベリングの基本ツールを参照してください。

ページ区切りマルチイメージラベリングには回避方法があります。

PDFにラベルを付けるには、次のステップに従います。

  1. PDFをイメージに変換します。詳細は、このコード・チュートリアルを参照してください。
  2. Label Studioからアクセス可能な場所に画像を保存します。
  3. 新しいLabel Studioプロジェクトを作成し、データをアップロードします。
    タスクごとに、ドキュメント内の各イメージ(またはページ)の場所に対応するURLのリストがあります。これらは、ドキュメントがホストされているURLです。
  4. 新しい複数ページ・ドキュメント注釈テンプレートを使用して、ラベル付けを構成します。
  5. データのラベル付けを行います。
  6. ユーティリティ・スクリプトをダウンロードし、ドキュメント分類注釈のutility_scripts_dc.zipを抽出します。

3.1 タスク・リストの生成

研修文書がPDF形式の場合は、まずそれらをイメージに変換する必要があります。pdf_to_imagesファンクションは、この変換を実行し、指定された入力ディレクトリのルートに作成されるoutput_imagesフォルダ(Images_input_root)にイメージを保存します。PDFごとに、対応するイメージを格納するために、output_imagesディレクトリ内に個別のフォルダ(PDFファイルの後に名前が付けられます)が作成されます。

  1. Label Studio注釈の場合は、タスク・リストを生成する必要があります。各タスクは、単一のドキュメントの注釈に対応しています。
  2. コマンドラインから、前のタスクのステップ6でダウンロードしたユーティリティ・スクリプトに含まれるファイルgenerate_tasks_dc.pvを実行します。

3.2 プロジェクトの作成および構成

  1. Label Studioのドキュメントのステップに従って、新しいプロジェクトを作成します。
  2. ソース・データ記憶域を追加します。
    1. 「設定」で、「クラウド・ストレージ」を選択します。
    2. 「ローカル・ファイル」を選択します。
    3. input_pdfフォルダおよびoutput_imagesフォルダへのローカル・ファイル・ストレージ・パスを入力します。詳細は、Label Studioのローカルストレージに関するドキュメントを参照してください。
  3. ラベル付け構成を設定します。
    1. 「設定」で、「ラベル付けインタフェース」を選択します。
    2. 「コード」を選択します。
    3. ラベリング構成に次のコードを追加します。
      <View style="display: flex; flex-direction: row;">
        <Image valueList="$pages" name="pdf"/>
        <Choices name="choices" toName="pdf" choice="single" perItem="true" layout="vertical" style="margin-left: 20px;">
          <Choice value="Label1"/>
          <Choice value="Label2"/>
        </Choices>
      </View>

      単一のラベルの場合は、choice="single"を設定します。マルチラベル分類の場合は、choice="multiple"を設定します。

    4. 保存します。
    5. 必要に応じて、「ビジュアル」を選択してラベルを追加または削除します。

3.3 Label Studioでのドキュメント分類のデータセット注釈

  1. 新しいデータセット注釈を作成します。
    1. セクション3.1「タスク・リストの生成」の説明に従って、注釈用のタスクJSONを生成します。
    2. 注釈用にインポートします。
  2. Label Studioで既存のデータ・ラベリング注釈付きデータを拡張します。
    1. データ・ラベリング注釈付きデータセットをLabel Studio互換フォーマットに移行します。
    2. 変換後、これらのデータセットをLabel Studioにインポートして、必要に応じて注釈を拡張、調整または完了できます。ユーティリティ・スクリプトからスクリプトDLS2LS_conversion_dc.pyを使用します。
  3. 注釈のタスクをインポートします。
    1. 新規注釈のためにステップ1aで作成した、生成されたtasks.jsonファイルをインポートします。
    2. 既存のデータ・ラベリング注釈の場合は、それらをLabel Studio形式に変換します。
    3. 必要に応じて、Label Studioにインポートして、注釈を拡張、調整または完了します。
  4. 各ページにラベルを割り当てます。
  5. 注釈をJSON形式でエクスポートします。

    レコード・ファイルは、注釈プロセスの完了後にLabel Studioから直接エクスポートされます。

  6. ユーティリティ・スクリプトから、スクリプトGenerate_manifest.pyを使用してマニフェスト・ファイルを生成します。
  7. マニフェスト・ファイル、レコード・ファイルおよびイメージまたはPDFドキュメントを、マニフェストで定義されているバケットおよびパスにアップロードします。
    ノート

    ローカルのdocument_rootディレクトリは、クラウド上の<bucket_name/prefix>にマップされます。ローカル記憶域と同じフォルダ構造を維持します。トレーニング・パイプラインは、この構造を想定し、ファイルを正しく検索するためにこの構造に依存します。