Label Studio

Verwenden Sie Label Studio für das Labeling von Datasets.

Der Data Labeling-Service von Oracle ist veraltet. Sie müssen beschriftete Datasets in Label Studio migrieren, ein Open Source- und Marketplace-unterstütztes Labelingtool. Mit der Einstellung von Data Labeling enthält dieser Abschnitt Details zum Konvertieren von Data Labeling-Snap-Shot-Exporten in Label Studio-Import- und Label Studio-JSON-Exportformate. Sie können diese Formate für weitere Anmerkungen in Label Studio oder direktes Modelltraining verwenden.

Um benutzerdefinierte Modelle zu trainieren, benötigen Sie die folgenden beiden Dateien:

Manifestdatei
Diese Datei enthält Metadaten zu den Annotationsdateien und hat in der Regel die Erweiterung .jsonl.
Datensatzdatei

Dies ist das Dataset, das nach der Annotation aus Label Studio exportiert wurde. Die Datei hat die Erweiterung .json.

  • Bei benutzerdefiniertem KV hat die Datensatzdatei das JSON-MIN-Format.

  • Bei benutzerdefiniertem DC hat die Datensatzdatei das Standard-JSON-Format.

1. Label Studio-Umgebung einrichten

Sie können die virtuelle Umgebung oder Conda verwenden:
  1. Erstellen Sie die Datei requirement.txt:
    label-studio==1.19.0
    pdf2image
    oci
    label-studio-ml
  2. Erstellen Sie die Umgebung:
    • Virtuelle Umgebung verwenden:
      python3 -m venv env_name
    • Conda verwenden:
      conda create --name env_name
  3. Aktivieren der Umgebung:
    • Virtuelle Umgebung verwenden:
      source env_name/bin/activate
    • Conda verwenden:
      conda activate env_name
  4. Installieren Sie Label Studio mit seinen Abhängigkeiten
    pip install -r requirements.txt
  5. Lokales File Serving aktivieren.
    Da die Dateien lokal gespeichert sind, müssen Sie die folgenden Umgebungsvariablen exportieren, damit Label Studio auf sie zugreifen und sie mit Anmerkungen versehen kann:
    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>
    Weitere Informationen finden Sie unter Umgebungsvariablen festlegen in der Label Studio-Dokumentation.

1.1 Start Label Studio

  1. Starten Sie Label Studio.
    Label Studio wird standardmäßig auf Port 8080 ausgeführt. Wenn dieser Port bereits verwendet wird oder einen anderen Port angeben soll, starten Sie Label Studio mit dem folgenden Befehl:
    label-studio start --port <port_number>
    Weitere Informationen finden Sie unter Label Studio starten in der Label Studio-Dokumentation.
  2. Erstellen Sie ein Konto.

    Wenn Sie das erste Mal Label Studio starten, wird der Anmeldebildschirm angezeigt.

    1. Erstellen Sie ein Konto mit Ihrer E-Mail-Adresse und einem Passwort.
    2. Melden Sie sich bei Label Studio an.

2. Labelingworkflow für Extraktion von benutzerdefinierten Schlüsselwerten

Label Studio unterstützt keine PDF-Annotation für weitere Informationen. Weitere Informationen finden Sie unter Grundlegende Tools für PDF-Etikettierung in der Label Studio-Dokumentation.

Es gibt eine Workaround für paginiertes Labeling mit mehreren Bildern.

Führen Sie die folgenden Schritte aus, um PDFs zu beschriften:

  1. Konvertieren Sie die PDF-Dateien in Bilder. Weitere Informationen finden Sie in diesem Code-Tutorial.
  2. Speichern Sie die Bilder, auf die Label Studio Zugriff hat.
  3. Erstellen Sie ein neues Label Studio-Projekt und laden Sie die Daten hoch.
    Für jede Aufgabe haben Sie eine Liste von URLs, die der Position jedes Bildes (oder jeder Seite) im Dokument entsprechen. Dies sind die URLs, in denen das Dokument gehostet wird.
  4. Verwenden Sie die neue Vorlage für mehrseitige Dokumentannotationen, um die Beschriftung zu konfigurieren.
  5. Beschriften Sie die Daten.
  6. Laden Sie die Utilityskripte herunter, und extrahieren Sie utility_scripts_kv.zip für die Annotation zum Schlüsselwert.

2.1 Aufgabenliste generieren

Wenn die Schulungsdokumente im PDF-Format vorliegen, müssen Sie sie zuerst in Bilder konvertieren. Die Funktion pdf_to_images führt diese Konvertierung aus und speichert die Bilder in einem Ordner output_images (Images_input_root), der im Root-Verzeichnis des angegebenen Eingabeverzeichnisses erstellt wird. Für jede PDF-Datei wird ein separater Ordner (benannt nach der PDF-Datei) im Verzeichnis output_images erstellt, um die entsprechenden Bilder zu speichern.

  1. Für Label Studio-Annotationen müssen Sie eine Aufgabenliste generieren. Jede Aufgabe entspricht der Anmerkung eines einzelnen Dokuments.
  2. Führen Sie über eine Befehlszeile die Datei generate_tasks.kv.pv aus, die in den in Schritt 6 der vorherigen Aufgabe heruntergeladenen Utilityskripten enthalten ist.

2.2 OCR-Integration für Preannotation einrichten

Um den Anmerkungsworkflow zu optimieren und den manuellen Aufwand zu minimieren, kann die interaktive Vorabnotation in Label Studio aktiviert werden. Dieses Setup ermöglicht die automatische Generierung von Begrenzungsfeldern mit dem OCR-Service. OCI OCR ist als ML-Backend integriert, um Begrenzungsfelder für Images für Schlüsselwertannotationen zu generieren. Klonen Sie das folgende Repository, und installieren Sie die erforderlichen Abhängigkeiten:

Weitere Informationen finden Sie unter Eigenes ML-Backend schreiben in der Label Studio-Dokumentation.

  1. label-studio-ml-backend installieren:
    git clone https://github.com/HumanSignal/label-studio-ml-backend.git
    cd label-studio-ml-backend/
    pip install -e .
  2. Konfigurieren Sie die Parameter, um den OCI Text-Extraktionsservice aufzurufen:
    CONFIG_PROFILE = "DEFAULT"
    COMPARTMENT_ID = "ocid1.compartment.oc1.xxxxxxxxxxxxxxxxxxxxxxxx"
    SERVICE_ENDPOINT = "https://document-preprod.aiservice.xxxxxxxxxxxxxxxx"
    LANGUAGE="ENG"
  3. Text-Extraktion starten:
    1. Laden Sie die Utilityskripte herunter, und extrahieren Sie den Inhalt von ociocr.zip in das Verzeichnis label-studio-ml-backend/label_studio_ml/examples/.
    2. Führen Sie den folgenden Befehl aus, um den OCR-Service zu starten:
      label-studio-ml start ./ociocr --port <port>

2.3 Projekterstellung und Konfiguration

  1. Erstellen Sie ein neues Projekt, indem Sie die Schritte in der Label Studio-Dokumentation befolgen.
  2. Quelldatenspeicher hinzufügen.
    1. Wählen Sie unter Einstellungen die Option Cloud Storage aus.
    2. Wählen Sie Lokale Dateien.
    3. Geben Sie die lokalen Dateispeicherpfade zum Ordner input_pdf und zum Ordner output_images ein. Weitere Informationen finden Sie in der Dokumentation zu Label Studio im lokalen Speicher.
  3. Beschriftungskonfiguration einrichten
    1. Wählen Sie unter Einstellungen die Option Labeling-Schnittstelle aus.
    2. Wählen Sie Code aus.
    3. Fügen Sie den folgenden Code für die Etikettierungskonfiguration hinzu:
      <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. Speichern.
    5. Wählen Sie Visuell aus, um Labels nach Bedarf hinzuzufügen oder zu entfernen.
  4. Aktivieren Sie die interaktive Preannotation (Richten Sie die Option "Connect Model" ein, um OCI OCR aufzurufen).
    1. Wählen Sie unter Einstellungen Modell aus.
    2. Wählen Sie Modell hinzufügen aus.
    3. Fügen Sie Folgendes hinzu bzw. aktualisieren Sie es:
      • Aktivieren Sie das Verbindungsmodell in den Projekteinstellungen von Label Studio.

      • Konfigurieren Sie die Backend-URL so, dass sie auf den OCI-OCR-Endpunkt verweist.

      • Stellen Sie sicher, dass die erforderlichen Authentifizierungsschlüssel in der Datei .env vorhanden sind, um eine sichere Verbindung zu OCI OCR herzustellen.

      • Nach der Verbindung sendet Label Studio jedes hochgeladene Dokument automatisch an den OCI-OCR-Service und zeigt die vorhergesagten Begrenzungsfelder als Vorabnotationen an.

      • Sie können die vorab gekennzeichneten Ergebnisse interaktiv prüfen, ändern oder akzeptieren.

2.4 Dataset-Annotation in Label Studio

  1. Erstellen Sie eine neue Dataset-Annotation.
    1. Generieren Sie eine Aufgaben-JSON für Anmerkungen, wie in Abschnitt 2.1 "Aufgabenliste generieren" beschrieben.
    2. Importieren Sie sie zur Anmerkung.
  2. Erweitern Sie die vorhandenen Data Labeling-annotierten Daten in Label Studio.
    1. Data Labeling-annotierte Datasets in Label Studio-kompatibles Format migrieren.
    2. Nach der Konvertierung können diese Datasets in Label Studio importiert werden, um die Anmerkungen nach Bedarf zu erweitern, zu verfeinern oder abzuschließen. Verwenden Sie das Skript DLS2LS_conversion_ky.py aus den Utilityskripten.
  3. Importieren Sie die Aufgaben für Anmerkungen.
    1. Importieren Sie die generierte Datei tasks.json wie in Schritt 1a erstellt, um eine neue Anmerkung zu erhalten.
    2. Konvertieren Sie vorhandene Data Labeling-Annotationen in das Label Studio-Format.
    3. Importieren Sie die Anmerkungen in Label Studio, um sie nach Bedarf zu erweitern, zu verfeinern oder abzuschließen.
  4. Beginnen Sie mit dem Labeling. Befolgen Sie dazu die Schritte in der Dokumentation zu Label Studio.
  5. Exportieren Sie die Anmerkungen im JSON-MIN-Format.

    Die Datensatzdateien werden nach Abschluss des Anmerkungsprozesses direkt aus Label Studio exportiert.

  6. Generieren Sie die Manifestdatei mit dem Skript Generate_manifest.py aus den Utilityskripten.
  7. Laden Sie die Manifestdatei, die Datensatzdatei und die Bild- oder PDF-Dokumente in den im Manifest definierten Bucket und Pfad hoch.
    Hinweis

    Das lokale Verzeichnis document_root ist <bucket_name/prefix> in der Cloud zugeordnet. Verwalten Sie dieselbe Ordnerstruktur wie im lokalen Speicher. Die Trainingspipeline erwartet diese Struktur und stützt sich darauf, die Dateien korrekt zu finden.

3. Labelingworkflow für benutzerdefinierte Dokumentklassifizierung

Label Studio unterstützt keine PDF-Annotation für weitere Informationen. Weitere Informationen finden Sie unter Grundlegende Tools für PDF-Etikettierung in der Label Studio-Dokumentation.

Es gibt eine Workaround für paginiertes Labeling mit mehreren Bildern.

Führen Sie die folgenden Schritte aus, um PDFs zu beschriften:

  1. Konvertieren Sie die PDF-Dateien in Bilder. Weitere Informationen finden Sie in diesem Code-Tutorial.
  2. Speichern Sie die Bilder, auf die Label Studio Zugriff hat.
  3. Erstellen Sie ein neues Label Studio-Projekt und laden Sie die Daten hoch.
    Für jede Aufgabe haben Sie eine Liste von URLs, die der Position jedes Bildes (oder jeder Seite) im Dokument entsprechen. Dies sind die URLs, in denen das Dokument gehostet wird.
  4. Verwenden Sie die neue Vorlage für mehrseitige Dokumentannotationen, um die Beschriftung zu konfigurieren.
  5. Beschriften Sie die Daten.
  6. Laden Sie die Utilityskripte herunter, und extrahieren Sie utility_scripts_dc.zip für Dokumentklassifizierungsannotationen.

3.1 Aufgabenliste generieren

Wenn die Schulungsdokumente im PDF-Format vorliegen, müssen Sie sie zuerst in Bilder konvertieren. Die Funktion pdf_to_images führt diese Konvertierung aus und speichert die Bilder in einem Ordner output_images (Images_input_root), der im Root-Verzeichnis des angegebenen Eingabeverzeichnisses erstellt wird. Für jede PDF-Datei wird ein separater Ordner (benannt nach der PDF-Datei) im Verzeichnis output_images erstellt, um die entsprechenden Bilder zu speichern.

  1. Für Label Studio-Annotationen müssen Sie eine Aufgabenliste generieren. Jede Aufgabe entspricht der Anmerkung eines einzelnen Dokuments.
  2. Führen Sie in einer Befehlszeile die Datei generate_tasks_dc.pv aus, die in den Utilityskripten enthalten ist, die in Schritt 6 der vorherigen Aufgabe heruntergeladen wurden.

3.2 Projekterstellung und -konfiguration

  1. Erstellen Sie ein neues Projekt, indem Sie die Schritte in der Label Studio-Dokumentation befolgen.
  2. Quelldatenspeicher hinzufügen.
    1. Wählen Sie unter Einstellungen die Option Cloud Storage aus.
    2. Wählen Sie Lokale Dateien.
    3. Geben Sie die lokalen Dateispeicherpfade zum Ordner input_pdf und zum Ordner output_images ein. Weitere Informationen finden Sie in der Dokumentation zu Label Studio im lokalen Speicher.
  3. Beschriftungskonfiguration einrichten
    1. Wählen Sie unter Einstellungen die Option Labeling-Schnittstelle aus.
    2. Wählen Sie Code aus.
    3. Fügen Sie den folgenden Code für die Etikettierungskonfiguration hinzu:
      <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>

      Legen Sie für einzelne Labels choice="single" fest. Legen Sie für die mehrstufige Klassifizierung choice="multiple" fest.

    4. Speichern.
    5. Wählen Sie Visuell aus, um Labels nach Bedarf hinzuzufügen oder zu entfernen.

3.3 Dataset-Annotation für Dokumentklassifizierung in Label Studio

  1. Erstellen Sie eine neue Dataset-Annotation.
    1. Generieren Sie eine Aufgaben-JSON für Anmerkungen, wie in Abschnitt 3.1 "Aufgabenliste generieren" beschrieben.
    2. Importieren Sie sie zur Anmerkung.
  2. Erweitern Sie die vorhandenen Data Labeling-annotierten Daten in Label Studio.
    1. Data Labeling-annotierte Datasets in Label Studio-kompatibles Format migrieren.
    2. Nach der Konvertierung können diese Datasets in Label Studio importiert werden, um die Anmerkungen nach Bedarf zu erweitern, zu verfeinern oder abzuschließen. Verwenden Sie das Skript DLS2LS_conversion_dc.py aus den Utilityskripten.
  3. Importieren Sie die Aufgaben für Anmerkungen.
    1. Importieren Sie die generierte Datei tasks.json wie in Schritt 1a erstellt, um eine neue Anmerkung zu erhalten.
    2. Konvertieren Sie vorhandene Data Labeling-Annotationen in das Label Studio-Format.
    3. Importieren Sie die Anmerkungen in Label Studio, um sie nach Bedarf zu erweitern, zu verfeinern oder abzuschließen.
  4. Weisen Sie jeder Seite ein Label zu.
  5. Exportieren Sie die Anmerkungen im JSON-Format.

    Die Datensatzdateien werden nach Abschluss des Anmerkungsprozesses direkt aus Label Studio exportiert.

  6. Generieren Sie die Manifestdatei mit dem Skript Generate_manifest.py aus den Utilityskripten.
  7. Laden Sie die Manifestdatei, die Datensatzdatei und die Bild- oder PDF-Dokumente in den im Manifest definierten Bucket und Pfad hoch.
    Hinweis

    Das lokale Verzeichnis document_root ist <bucket_name/prefix> in der Cloud zugeordnet. Verwalten Sie dieselbe Ordnerstruktur wie im lokalen Speicher. Die Trainingspipeline erwartet diese Struktur und stützt sich darauf, die Dateien korrekt zu finden.