Studio d'étiquettes

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

Le service d'étiquetage de données d'Oracle est en cours d'abandon. Vous devez migrer tous les jeux de données étiquetés vers Label Studio, un outil d'étiquetage à source ouverte et pris en charge par le marché des applications. Avec l'abandon du service d'étiquetage de données, cette section fournit des détails sur la conversion des exportations d'instantané du service d'étiquetage de données aux formats d'importation et d'exportation 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 a généralement une extension .jsonl.
Fichier d'enregistrement

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

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

  • Pour CD personnalisé, le fichier d'enregistrement est au format JSON standard.

1. Configuration de l'environnement Label Studio

Vous pouvez utiliser l'environnement virtuel ou 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. Activer le service de fichiers local.
    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 s'exécute sur le port 8080. Si ce port est déjà utilisé ou pour spécifier un autre port, démarrez Label Studio avec la commande suivante :
    label-studio start --port <port_number>
    Pour plus d'informations, voir Démarrer Label Studio dans la documentation Label Studio.
  2. Créer un compte.

    Lorsque vous démarrez Label Studio pour la première fois, l'écran d'inscription s'affiche.

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

2. Flux de travail d'étiquetage pour l'extraction de valeurs de clé personnalisée

Label Studio ne prend pas en charge l'annotation PDF de manière native pour plus d'informations. Voir Outils fondamentaux pour l'étiquetage PDF dans la documentation Label Studio.

Il existe une solution de rechange pour l'étiquetage paginé à images multiples.

Suivez ces étapes pour étiqueter les PDF :

  1. Convertissez les PDF en images. Pour plus d'informations, voir ce tutoriel sur le code.
  2. Stockez les images dans un endroit accessible par Label Studio.
  3. Créez un projet Label Studio et chargez les données.
    Pour chaque tâche, vous disposez d'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 multipages pour configurer l'étiquetage.
  5. Étiqueter les données.
  6. Téléchargez les scripts d'utilitaire et extrayez utility_scripts_kv.zip pour l'annotation des valeurs de clé.

2.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), 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 seul document.
  2. À 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 du registre OCR pour la préannotation

Pour rationaliser le flux de travail d'annotation et réduire les tâches manuelles, la préannotation interactive peut être activée dans Label Studio. Cette configuration permet de générer automatiquement des zones englobantes à l'aide du service ROC. OCI OCR est intégré en tant que serveur dorsal d'apprentissage automatique pour générer des zones englobantes sur les images pour l'annotation clé-valeur. Clonez le référentiel suivant et installez les dépendances requises :

Pour plus d'informations, voir Écrire votre propre serveur dorsal d'apprentissage automatique dans la documentation Label Studio.

  1. Installez label-studio-ml-backend :
    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 projets

  1. Créez un projet en suivant les étapes de la documentation sur Label Studio.
  2. Ajouter un stockage de données source.
    1. Sous Paramètres, sélectionnez Stockage en nuage.
    2. Sélectionner des fichiers locaux.
    3. Entrez les chemins de stockage de fichiers locaux vers le dossier input_pdf et le dossier output_images. Pour plus d'informations, voir la documentation d'Label Studio sur le stockage local.
  3. définition de 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 d'é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 supprimer des étiquettes, au besoin.
  4. Activer la préannotation interactive (configurer 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. Ajoutez ou mettez à jour les éléments suivants :
      • Activez le modèle de connexion dans les paramètres de projet de Label Studio.

      • Configurez l'URL dorsale pour pointer vers le point d'extrémité ROC OCI.

      • Assurez-vous que les clés d'authentification requises se trouvent dans le fichier .env pour une connexion sécurisée au registre OCR OCI.

      • Après la connexion, Label Studio envoie automatiquement chaque document chargé au service ROC OCI et affiche les zones englobantes prédites en tant que préannotations.

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

2.4 Annotation de jeu de données dans Label Studio

  1. Créer une annotation de jeu de données.
    1. Générer un fichier JSON de tâche pour annotation comme indiqué dans la section 2.1 Générer une liste de tâches.
    2. Importez-les pour annotation.
  2. Étendre les données existantes annotées par le service d'étiquetage de données dans Label Studio.
    1. Migrer les jeux de données non étiquetés dans le 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 les besoins. Utilisez le script, DLS2LS_conversion_ky.py, provenant 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 d'étiquetage de données existantes, convertissez-les au format Label Studio.
    3. Importez-le dans Label Studio pour étendre, affiner ou compléter les annotations si nécessaire.
  4. Commencez à étiqueter, en suivant les étapes de la documentation d'Label Studio.
  5. Exportez les annotations au format JSON-MIN.

    Les fichiers d'enregistrement sont exportés directement depuis Label Studio après avoir terminé le processus d'annotation.

  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 les documents image ou pdf dans le seau et le chemin définis dans le manifeste.
    Note

    Le répertoire document_root local est mappé à <bucket_name/prefix> dans le nuage. 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. Flux de travail d'étiquetage pour la classification de documents personnalisée

Label Studio ne prend pas en charge l'annotation PDF de manière native pour plus d'informations. Voir Outils fondamentaux pour l'étiquetage PDF dans la documentation Label Studio.

Il existe une solution de rechange pour l'étiquetage paginé à images multiples.

Suivez ces étapes pour étiqueter les PDF :

  1. Convertissez les PDF en images. Pour plus d'informations, voir ce tutoriel sur le code.
  2. Stockez les images dans un endroit accessible par Label Studio.
  3. Créez un projet Label Studio et chargez les données.
    Pour chaque tâche, vous disposez d'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 multipages pour configurer l'étiquetage.
  5. Étiqueter 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), 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 seul document.
  2. À partir d'une ligne de commande, exécutez le fichier generate_tasks_dc.pv contenu dans les scripts d'utilitaire téléchargés à l'étape 6 de la tâche précédente.

3.2 Création et configuration de projets

  1. Créez un projet en suivant les étapes de la documentation sur Label Studio.
  2. Ajouter un stockage de données source.
    1. Sous Paramètres, sélectionnez Stockage en nuage.
    2. Sélectionner des fichiers locaux.
    3. Entrez les chemins de stockage de fichiers locaux vers le dossier input_pdf et le dossier output_images. Pour plus d'informations, voir la documentation d'Label Studio sur le stockage local.
  3. définition de 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 d'é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 d'étiquettes multiples, définissez choice="multiple".

    4. Enregistrez-le.
    5. Sélectionnez Visuel pour ajouter ou supprimer des étiquettes, au besoin.

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

  1. Créer une annotation de jeu de données.
    1. Générer un fichier JSON de tâche pour annotation comme indiqué dans la section 3.1 Générer une liste de tâches.
    2. Importez-les pour annotation.
  2. Étendre les données existantes annotées par le service d'étiquetage de données dans Label Studio.
    1. Migrer les jeux de données non étiquetés dans le 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 les besoins. Utilisez le script, DLS2LS_conversion_dc.py, provenant 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 d'étiquetage de données existantes, convertissez-les au format Label Studio.
    3. Importez-le dans Label Studio pour étendre, affiner ou compléter les annotations si nécessaire.
  4. Associez une étiquette à chaque page.
  5. Exportez les annotations au format JSON.

    Les fichiers d'enregistrement sont exportés directement depuis Label Studio après avoir terminé le processus d'annotation.

  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 les documents image ou pdf dans le seau et le chemin définis dans le manifeste.
    Note

    Le répertoire document_root local est mappé à <bucket_name/prefix> dans le nuage. 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.