Label Studio

Utilisez Label Studio pour étiqueter les jeux de données.

Le service Data Labeling d'Oracle est en phase d'abandon. Vous devez migrer tous les jeux de données étiquetés vers Label Studio, un outil d'étiquetage open source et pris en charge par Marketplace. Avec l'abandon de Data Labeling, cette section fournit des détails sur la conversion des exports de clichés Data Labeling en formats d'import et d'export JSON Label Studio. Vous pouvez utiliser ces formats pour d'autres annotations dans Label Studio ou pour l'entraînement direct de modèles.

Pour entraîner des modèles personnalisés, vous avez besoin des deux fichiers suivants :

Fichier manifeste
Ce fichier contient des métadonnées sur les fichiers d'annotation et porte généralement l'extension .jsonl.
Fichier d'enregistrement

Il s'agit du jeu de données exporté à partir de Label Studio après l'annotation. Le fichier porte l'extension .json.

  • Pour le fichier KV personnalisé, le fichier d'enregistrement est au format JSON-MIN.

  • Pour le centre de données personnalisé, le fichier d'enregistrement est au format JSON standard.

1. Configurer l'environnement Label Studio

Vous pouvez utiliser un environnement virtuel ou une conda :
  1. Créez le fichier requirement.txt :
    label-studio==1.19.0
    pdf2image
    oci
    label-studio-ml
  2. Créez l'environnement :
    • Utilisation de l'environnement virtuel :
      python3 -m venv env_name
    • Utilisation de Conda :
      conda create --name env_name
  3. Activez l'environnement :
    • Utilisation de l'environnement virtuel :
      source env_name/bin/activate
    • Utilisation de Conda :
      conda activate env_name
  4. Installer Label Studio avec ses dépendances
    pip install -r requirements.txt
  5. Activez le traitement des fichiers locaux.
    Etant donné que les fichiers sont stockés localement, vous devez exporter les variables d'environnement suivantes pour permettre à Label Studio d'y accéder et de les annoter :
    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>
    Pour plus d'informations, voir : Définir des variables d'environnement dans la documentation Label Studio.

1.1 Démarrer Label Studio

  1. Démarrez Label Studio.
    Par défaut, Label Studio est exécuté sur le port 8080. Si ce port est déjà utilisé ou pour spécifier un autre port, démarrez Label Studio à l'aide de la commande suivante :
    label-studio start --port <port_number>
    Pour plus d'informations, reportez-vous à Démarrage de Label Studio dans la documentation Label Studio.
  2. Créer un compte

    Lorsque vous commencez à démarrer Label Studio, l'écran d'inscription s'affiche.

    1. Créez un compte avec votre adresse électronique et un mot de passe.
    2. Connectez-vous à Label Studio.

2. Workflow d'étiquetage pour l'extraction de valeur-clé personnalisée

Label Studio ne prend pas en charge nativement l'annotation PDF pour plus d'informations. Pour plus d'informations, reportez-vous à Outils fondamentaux pour l'étiquetage PDF dans la documentation Label Studio.

Il existe une solution de contournement pour l'étiquetage multi-image paginée.

Pour étiqueter les PDF, procédez comme suit :

  1. Convertissez les PDF en images. Pour plus d'informations, voir ce tutoriel sur le code.
  2. Stockez les images quelque part accessibles par Label Studio.
  3. Créez un projet Label Studio et chargez les données.
    Pour chaque tâche, vous avez une liste d'URL correspondant à l'emplacement de chaque image (ou page) dans le document. Il s'agit des URL où le document est hébergé.
  4. Utilisez le nouveau modèle d'annotation de document sur plusieurs pages pour configurer l'étiquetage.
  5. Intitulez les données.
  6. Téléchargez les scripts d'utilitaire et extrayez utility_scripts_kv.zip pour l'annotation clé-valeur.

2.1 Générer la liste des tâches

Si les documents de formation sont au format PDF, vous devrez d'abord les convertir en images. La fonction pdf_to_images effectue cette conversion et enregistre les images dans un dossier output_images (Images_input_root), qui est créé à la racine du répertoire d'entrée fourni. Pour chaque PDF, un dossier distinct (nommé d'après le fichier PDF) est créé dans le répertoire output_images pour stocker les images correspondantes.

  1. Pour l'annotation Label Studio, vous devez générer une liste de tâches. Chaque tâche correspond à l'annotation d'un document unique.
  2. A partir d'une ligne de commande, exécutez le fichier generate_tasks.kv.pv contenu dans les scripts utilitaires téléchargés à l'étape 6 de la tâche précédente.

2.2 Configurer l'intégration OCR pour la préannotation

Pour rationaliser le flux de travail des annotations et minimiser les efforts manuels, la préannotation interactive peut être activée dans Label Studio. Cette configuration permet de générer automatiquement des boîtes englobantes à l'aide du service OCR. OCI OCR est intégré en tant que back-end de machine learning pour générer des boîtes de délimitation sur les images pour l'annotation clé-valeur. Clonez le référentiel suivant et installez les dépendances requises :

Pour plus d'informations, reportez-vous à Ecriture de votre propre back-end ML dans la documentation Label Studio.

  1. Installez le back-end label-studio-ml :
    git clone https://github.com/HumanSignal/label-studio-ml-backend.git
    cd label-studio-ml-backend/
    pip install -e .
  2. Configurez les paramètres pour appeler le service d'extraction de texte OCI :
    CONFIG_PROFILE = "DEFAULT"
    COMPARTMENT_ID = "ocid1.compartment.oc1.xxxxxxxxxxxxxxxxxxxxxxxx"
    SERVICE_ENDPOINT = "https://document-preprod.aiservice.xxxxxxxxxxxxxxxx"
    LANGUAGE="ENG"
  3. Démarrer le service d'extraction de texte :
    1. Téléchargez les scripts d'utilitaire et extrayez le contenu de ociocr.zip dans le répertoire label-studio-ml-backend/label_studio_ml/examples/.
    2. Exécutez la commande fiollowing pour démarrer le service OCR :
      label-studio-ml start ./ociocr --port <port>

2.3 Création et Configuration de Projet

  1. Créez un projet en suivant les étapes de la documentation Label Studio.
  2. Ajouter un stockage de données source.
    1. Sous Paramètres, sélectionnez Stockage cloud.
    2. Sélectionnez Fichiers locaux.
    3. Entrez les chemins de stockage des fichiers locaux vers le dossier input_pdf et le dossier output_images. Pour plus d'informations, reportez-vous à la documentation Label Studio sur le stockage local.
  3. Configurez la configuration de l'étiquetage.
    1. Sous Paramètres, sélectionnez Interface d'étiquetage.
    2. Sélectionnez Code.
    3. Ajoutez le code suivant pour la configuration de l'étiquetage :
      <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. Enregistrez-le.
    5. Sélectionnez Visuel pour ajouter ou enlever des libellés, le cas échéant.
  4. Activer la préannotation interactive (définir l'option de modèle de connexion pour appeler le registre OCR OCI).
    1. Sous Paramètres, sélectionnez Modèle.
    2. Sélectionnez Ajouter un modèle.
    3. Ajouter ou mettre à jour les éléments suivants :
      • Activez le modèle de connexion dans les paramètres de projet de Label Studio.

      • Configurez l'URL de back-end pour pointer vers l'adresse OCR OCI.

      • Assurez-vous que les clés d'authentification requises se trouvent dans le fichier .env pour vous connecter en toute sécurité à OCI OCR.

      • Après la connexion, Label Studio envoie automatiquement chaque document téléchargé vers le service OCR OCI et affiche les zones de délimitation prévues comme préannotations.

      • Vous pouvez consulter, modifier ou accepter les résultats préannotés de manière interactive.

2.4 Annotation de jeu de données dans Label Studio

  1. Créez une annotation d'ensemble de données.
    1. Générez un fichier JSON de tâche pour l'annotation comme indiqué dans la section 2.1 Générer la liste des tâches.
    2. Importez-les pour annotation.
  2. Etendez les données existantes annulées par Data Labeling dans Label Studio.
    1. Migrez les jeux de données annulés par Data Labeling au format compatible avec Label Studio.
    2. Après la conversion, ces jeux de données peuvent être importés dans Label Studio pour étendre, affiner ou compléter les annotations selon vos besoins. Utilisez le script, DLS2LS_conversion_ky.py, des scripts d'utilitaire.
  3. Importez les tâches pour les annotations.
    1. Importez le fichier tasks.json généré tel qu'il a été créé à l'étape 1a pour une nouvelle annotation.
    2. Pour les annotations Data Labeling existantes, convertissez-les au format Label Studio.
    3. Importez les annotations dans Label Studio pour les étendre, les affiner ou les compléter si nécessaire.
  4. Commencez l'étiquetage en suivant les étapes de la documentation Label Studio.
  5. Exportez les annotations au format JSON-MIN.

    Les fichiers d'enregistrement sont exportés directement à partir de Label Studio une fois le processus d'annotation terminé.

  6. Générez le fichier manifeste à l'aide du script Generate_manifest.py à partir des scripts d'utilitaire.
  7. Chargez le fichier manifeste, le fichier d'enregistrement et l'image ou les documents PDF dans le bucket et le chemin définis dans le manifeste.
    Remarque

    Le répertoire document_root local est mis en correspondance avec <bucket_name/prefix> sur le cloud. Conservez la même structure de dossiers que dans le stockage local. Le pipeline d'entraînement attend cette structure et s'appuie sur elle pour trouver les fichiers correctement.

3. Workflow d'étiquetage pour la classification de document personnalisée

Label Studio ne prend pas en charge nativement l'annotation PDF pour plus d'informations. Pour plus d'informations, reportez-vous à Outils fondamentaux pour l'étiquetage PDF dans la documentation Label Studio.

Il existe une solution de contournement pour l'étiquetage multi-image paginée.

Pour étiqueter les PDF, procédez comme suit :

  1. Convertissez les PDF en images. Pour plus d'informations, reportez-vous à ce tutoriel sur le code.
  2. Stockez les images quelque part accessibles par Label Studio.
  3. Créez un projet Label Studio et chargez les données.
    Pour chaque tâche, vous avez une liste d'URL correspondant à l'emplacement de chaque image (ou page) dans le document. Il s'agit des URL où le document est hébergé.
  4. Utilisez le nouveau modèle d'annotation de document sur plusieurs pages pour configurer l'étiquetage.
  5. Intitulez les données.
  6. Téléchargez les scripts d'utilitaire et extrayez utility_scripts_dc.zip pour l'annotation de classification de document.

3.1 Générer une liste de tâches

Si les documents de formation sont au format PDF, vous devrez d'abord les convertir en images. La fonction pdf_to_images effectue cette conversion et enregistre les images dans un dossier output_images (Images_input_root), qui est créé à la racine du répertoire d'entrée fourni. Pour chaque PDF, un dossier distinct (nommé d'après le fichier PDF) est créé dans le répertoire output_images pour stocker les images correspondantes.

  1. Pour l'annotation Label Studio, vous devez générer une liste de tâches. Chaque tâche correspond à l'annotation d'un document unique.
  2. A partir d'une ligne de commande, exécutez le fichier generate_tasks_dc.pv contenu dans les scripts utilitaires téléchargés à l'étape 6 de la tâche précédente.

3.2 Création et Configuration de Projet

  1. Créez un projet en suivant les étapes de la documentation Label Studio.
  2. Ajouter un stockage de données source.
    1. Sous Paramètres, sélectionnez Stockage cloud.
    2. Sélectionnez Fichiers locaux.
    3. Entrez les chemins de stockage des fichiers locaux vers le dossier input_pdf et le dossier output_images. Pour plus d'informations, reportez-vous à la documentation Label Studio sur le stockage local.
  3. Configurez la configuration de l'étiquetage.
    1. Sous Paramètres, sélectionnez Interface d'étiquetage.
    2. Sélectionnez Code.
    3. Ajoutez le code suivant pour la configuration de l'étiquetage :
      <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>

      Pour les étiquettes uniques, définissez choice="single". Pour la classification multi-étiquettes, définissez choice="multiple".

    4. Enregistrez-le.
    5. Sélectionnez Visuel pour ajouter ou enlever des libellés, le cas échéant.

3.3 Annotation de jeu de données pour la classification de documents dans Label Studio

  1. Créez une annotation d'ensemble de données.
    1. Générez un fichier JSON de tâche pour l'annotation comme indiqué dans la section 3.1 Générer la liste des tâches.
    2. Importez-les pour annotation.
  2. Etendez les données existantes annulées par Data Labeling dans Label Studio.
    1. Migrez les jeux de données annulés par Data Labeling au format compatible avec Label Studio.
    2. Après la conversion, ces jeux de données peuvent être importés dans Label Studio pour étendre, affiner ou compléter les annotations selon vos besoins. Utilisez le script, DLS2LS_conversion_dc.py, des scripts d'utilitaire.
  3. Importez les tâches pour les annotations.
    1. Importez le fichier tasks.json généré tel qu'il a été créé à l'étape 1a pour une nouvelle annotation.
    2. Pour les annotations Data Labeling existantes, convertissez-les au format Label Studio.
    3. Importez les annotations dans Label Studio pour les étendre, les affiner ou les compléter si nécessaire.
  4. Affectez un libellé à chaque page.
  5. Exportez les annotations au format JSON.

    Les fichiers d'enregistrement sont exportés directement à partir de Label Studio une fois le processus d'annotation terminé.

  6. Générez le fichier manifeste à l'aide du script Generate_manifest.py à partir des scripts d'utilitaire.
  7. Chargez le fichier manifeste, le fichier d'enregistrement et l'image ou les documents PDF dans le bucket et le chemin définis dans le manifeste.
    Remarque

    Le répertoire document_root local est mis en correspondance avec <bucket_name/prefix> sur le cloud. Conservez la même structure de dossiers que dans le stockage local. Le pipeline d'entraînement attend cette structure et s'appuie sur elle pour trouver les fichiers correctement.