Label Studio

Use Label Studio para etiquetar conjuntos de datos.

El servicio Data Labeling de Oracle está en desuso. Debe migrar todos los conjuntos de datos etiquetados a Label Studio, una herramienta de etiquetado de código abierto y compatible con el mercado. Con el desuso de Data Labeling, esta sección proporciona detalles sobre la conversión de exportaciones de instantáneas de Data Labeling a los formatos de importación y exportación de JSON de Label Studio. Puede utilizar estos formatos para realizar más anotaciones en Label Studio o en el entrenamiento directo del modelo.

Para entrenar modelos personalizados, necesita los dos archivos siguientes:

Archivo de manifiesto
Este archivo contiene metadatos sobre los archivos de anotación y, normalmente, tiene una extensión .jsonl.
Archivo de registro

Este es el conjunto de datos exportado desde Label Studio después de la anotación. El archivo tiene una extensión .json.

  • Para el KV personalizado, el archivo de registro está en formato JSON-MIN.

  • Para Custom DC, el archivo de registro está en formato JSON estándar.

1. Configuración del entorno de Label Studio

Puede utilizar un entorno virtual o Conda:
  1. Cree el archivo requirement.txt:
    label-studio==1.19.0
    pdf2image
    oci
    label-studio-ml
  2. Cree el entorno:
    • Uso del entorno virtual:
      python3 -m venv env_name
    • Uso de Conda:
      conda create --name env_name
  3. Activar el entorno:
    • Uso del entorno virtual:
      source env_name/bin/activate
    • Uso de Conda:
      conda activate env_name
  4. Instalar Label Studio con sus dependencias
    pip install -r requirements.txt
  5. Active el servicio de archivos locales.
    Debido a que los archivos se almacenan localmente, debe exportar las siguientes variables de entorno para permitir que Label Studio acceda a ellos y los anote:
    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>
    Para obtener más información, consulte: Definición de variables de entorno en la documentación de Label Studio.

1.1 Iniciar Label Studio

  1. Inicie Label Studio.
    Por defecto, Label Studio se ejecuta en el puerto 8080. Si ese puerto ya está en uso o para especificar otro puerto, inicie Label Studio con el siguiente comando:
    label-studio start --port <port_number>
    Para obtener más información, consulte Start Label Studio en la documentación de Label Studio.
  2. Crear una cuenta.

    Cuando inicie Label Studio por primera vez, verá la pantalla de registro.

    1. Cree una cuenta con su dirección de correo electrónico y una contraseña.
    2. Inicie sesión en Label Studio.

2. Flujo de trabajo de etiquetado para la extracción de valores clave personalizados

Label Studio no admite de forma nativa la anotación PDF para obtener más información, consulte Herramientas fundamentales para el etiquetado PDF en la documentación de Label Studio.

Existe una solución alternativa para el etiquetado de varias imágenes paginadas.

Siga estos pasos para etiquetar PDF:

  1. Convierta los PDF en imágenes. Para obtener más información, consulte este tutorial de código.
  2. Almacene las imágenes en algún lugar accesible por Label Studio.
  3. Cree un nuevo proyecto de Label Studio y cargue los datos.
    Para cada tarea, tiene una lista de URL que corresponden a la ubicación de cada imagen (o página) en el documento. Estas son las direcciones URL donde se aloja el documento.
  4. Use la nueva plantilla de anotación de documento de varias páginas para configurar el etiquetado.
  5. Etiquete los datos.
  6. Descargue las secuencias de comandos de utilidad y extraiga utility_scripts_kv.zip para la anotación de valor de clave.

2.1 Generar lista de tareas

Si los documentos de formación están en formato PDF, primero tendrá que convertirlos en imágenes. La función pdf_to_images realiza esta conversión y guarda las imágenes en una carpeta output_images (Images_input_root), que se crea en la raíz del directorio de entrada proporcionado. Para cada PDF, se crea una carpeta independiente (que lleva el nombre del archivo PDF) dentro del directorio output_images para almacenar las imágenes correspondientes.

  1. Para la anotación de Label Studio, debe generar una lista de tareas. Cada tarea corresponde a la anotación de un único documento.
  2. Desde una línea de comandos, ejecute el archivo generate_tasks.kv.pv incluido en los scripts de utilidades descargados en el paso 6 de la tarea anterior.

2.2 Configuración de integración de reconocimiento óptico de caracteres para preannotación

Para agilizar el flujo de trabajo de anotación y minimizar el esfuerzo manual, se puede habilitar la preannotación interactiva en Label Studio. Esta configuración proporciona la generación automática de cuadros delimitadores mediante el servicio OCR. OCI OCR se integra como backend de aprendizaje automático para generar cuadros de límite en imágenes para la anotación de clave-valor. Clone el siguiente repositorio e instale las dependencias necesarias:

Para obtener más información, consulte Escritura de su propio backend de aprendizaje automático en la documentación de Label Studio.

  1. Instale label-studio-ml-backend:
    git clone https://github.com/HumanSignal/label-studio-ml-backend.git
    cd label-studio-ml-backend/
    pip install -e .
  2. Configure los parámetros para llamar al servicio de extracción de texto de OCI:
    CONFIG_PROFILE = "DEFAULT"
    COMPARTMENT_ID = "ocid1.compartment.oc1.xxxxxxxxxxxxxxxxxxxxxxxx"
    SERVICE_ENDPOINT = "https://document-preprod.aiservice.xxxxxxxxxxxxxxxx"
    LANGUAGE="ENG"
  3. Iniciar servicio de extracción de texto:
    1. Descargue las secuencias de comandos de utilidad y extraiga el contenido de ociocr.zip en el directorio label-studio-ml-backend/label_studio_ml/examples/.
    2. Ejecute el comando fiollowing para iniciar el servicio de OCR:
      label-studio-ml start ./ociocr --port <port>

2.3 Creación y configuración de proyectos

  1. Cree un nuevo proyecto siguiendo los pasos de la documentación de Label Studio.
  2. Agregue el almacenamiento de datos de origen.
    1. En Configuración, seleccione Almacenamiento en la nube.
    2. Seleccione Local Files (Archivos locales).
    3. Introduzca las rutas de almacenamiento de archivos locales a la carpeta input_pdf y a la carpeta output_images. Para obtener más información, consulte la documentación de Label Studio sobre almacenamiento local.
  3. Configurar el etiquetado.
    1. En Configuración, seleccione Interfaz de etiquetado.
    2. Seleccione Código.
    3. Agregue el siguiente código para la configuración de etiquetado:
      <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. Guárdelo.
    5. Seleccione Visual para agregar o eliminar etiquetas según sea necesario.
  4. Active la preannotación interactiva (configure la opción de modelo de conexión para llamar a OCI OCR).
    1. En Configuración, seleccione Modelo.
    2. Seleccione Agregar modelo.
    3. Agregue o actualice lo siguiente:
      • Active el modelo de conexión en la configuración del proyecto de Label Studio.

      • Configure la URL de backend para que apunte al punto final de OCI OCR.

      • Asegúrese de que las claves de autenticación necesarias están en el archivo .env para conectarse de forma segura a OCI OCR.

      • Después de conectarse, Label Studio envía automáticamente cada documento cargado al servicio OCI OCR y muestra los cuadros delimitadores previstos como anotaciones previas.

      • Puede revisar, cambiar o aceptar los resultados preanotados de forma interactiva.

2.4 Anotación de conjunto de datos en Label Studio

  1. Crear una nueva anotación de juego de datos.
    1. Genere un JSON de tarea para la anotación como se menciona en la sección 2.1 Generar lista de tareas.
    2. Importarlas para anotación.
  2. Amplíe los datos con anotación de Data Labeling existentes en Label Studio.
    1. Migre los juegos de datos con anotaciones de Data Labeling al formato compatible con Label Studio.
    2. Después de la conversión, estos conjuntos de datos se pueden importar a Label Studio para ampliar, refinar o completar las anotaciones según sea necesario. Utilice la secuencia de comandos, DLS2LS_conversion_ky.py, de las secuencias de comandos de utilidad.
  3. Importe las tareas para anotaciones.
    1. Importe el archivo tasks.json generado como se ha creado en el paso 1a para realizar una nueva anotación.
    2. Para las anotaciones de Data Labeling existentes, conviértalas en formato de Label Studio.
    3. Importe el archivo en Label Studio para ampliar, refinar o completar las anotaciones según sea necesario.
  4. Comience a etiquetar, siguiendo los pasos de la documentación de Label Studio.
  5. Exporte las anotaciones en formato JSON-MIN.

    Los archivos de registro se exportan directamente desde Label Studio después de completar el proceso de anotación.

  6. Genere el archivo de manifiesto mediante la secuencia de comandos, Generate_manifest.py, desde las secuencias de comandos de utilidad.
  7. Cargue el archivo de manifiesto, el archivo de registro y los documentos de imagen o PDF en el cubo y la ruta definidos en el manifiesto.
    Nota

    El directorio document_root local se asigna a <bucket_name/prefix> en la nube. Mantenga la misma estructura de carpetas que en el almacenamiento local. El pipeline de formación espera esta estructura y se basa en ella para encontrar los archivos correctamente.

3. Flujo de trabajo de etiquetado para clasificación de documentos personalizados

Label Studio no admite de forma nativa la anotación PDF para obtener más información, consulte Herramientas fundamentales para el etiquetado PDF en la documentación de Label Studio.

Existe una solución alternativa para el etiquetado de varias imágenes paginadas.

Siga estos pasos para etiquetar PDF:

  1. Convierta los PDF en imágenes. Para obtener más información, consulte este tutorial de código.
  2. Almacene las imágenes en algún lugar accesible por Label Studio.
  3. Cree un nuevo proyecto de Label Studio y cargue los datos.
    Para cada tarea, tiene una lista de URL que corresponden a la ubicación de cada imagen (o página) en el documento. Estas son las direcciones URL donde se aloja el documento.
  4. Use la nueva plantilla de anotación de documento de varias páginas para configurar el etiquetado.
  5. Etiquete los datos.
  6. Descargue las secuencias de comandos de utilidad y extraiga utility_scripts_dc.zip para la anotación de clasificación de documentos.

3.1 Generar lista de tareas

Si los documentos de formación están en formato PDF, primero tendrá que convertirlos en imágenes. La función pdf_to_images realiza esta conversión y guarda las imágenes en una carpeta output_images (Images_input_root), que se crea en la raíz del directorio de entrada proporcionado. Para cada PDF, se crea una carpeta independiente (que lleva el nombre del archivo PDF) dentro del directorio output_images para almacenar las imágenes correspondientes.

  1. Para la anotación de Label Studio, debe generar una lista de tareas. Cada tarea corresponde a la anotación de un único documento.
  2. Desde una línea de comandos, ejecute el archivo generate_tasks_dc.pv contenido en los scripts de utilidad descargados en el paso 6 de la tarea anterior.

3.2 Creación y Configuración de Proyectos

  1. Cree un nuevo proyecto siguiendo los pasos de la documentación de Label Studio.
  2. Agregue el almacenamiento de datos de origen.
    1. En Configuración, seleccione Almacenamiento en la nube.
    2. Seleccione Local Files (Archivos locales).
    3. Introduzca las rutas de almacenamiento de archivos locales a la carpeta input_pdf y a la carpeta output_images. Para obtener más información, consulte la documentación de Label Studio sobre almacenamiento local.
  3. Configurar el etiquetado.
    1. En Configuración, seleccione Interfaz de etiquetado.
    2. Seleccione Código.
    3. Agregue el siguiente código para la configuración de etiquetado:
      <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>

      Para etiquetas únicas, defina choice="single". Para la clasificación de varias etiquetas, defina choice="multiple".

    4. Guárdelo.
    5. Seleccione Visual para agregar o eliminar etiquetas según sea necesario.

3.3 Anotación de conjunto de datos para clasificación de documentos en Label Studio

  1. Crear una nueva anotación de juego de datos.
    1. Genere un JSON de tarea para la anotación como se menciona en la sección 3.1 Generar lista de tareas.
    2. Importarlas para anotación.
  2. Amplíe los datos con anotación de Data Labeling existentes en Label Studio.
    1. Migre los juegos de datos con anotaciones de Data Labeling al formato compatible con Label Studio.
    2. Después de la conversión, estos conjuntos de datos se pueden importar a Label Studio para ampliar, refinar o completar las anotaciones según sea necesario. Utilice la secuencia de comandos, DLS2LS_conversion_dc.py, de las secuencias de comandos de utilidad.
  3. Importe las tareas para anotaciones.
    1. Importe el archivo tasks.json generado como se ha creado en el paso 1a para realizar una nueva anotación.
    2. Para las anotaciones de Data Labeling existentes, conviértalas en formato de Label Studio.
    3. Importe el archivo en Label Studio para ampliar, refinar o completar las anotaciones según sea necesario.
  4. Asigne una etiqueta a cada página.
  5. Exporte las anotaciones en formato JSON.

    Los archivos de registro se exportan directamente desde Label Studio después de completar el proceso de anotación.

  6. Genere el archivo de manifiesto mediante la secuencia de comandos, Generate_manifest.py, desde las secuencias de comandos de utilidad.
  7. Cargue el archivo de manifiesto, el archivo de registro y los documentos de imagen o PDF en el cubo y la ruta definidos en el manifiesto.
    Nota

    El directorio document_root local se asigna a <bucket_name/prefix> en la nube. Mantenga la misma estructura de carpetas que en el almacenamiento local. El pipeline de formación espera esta estructura y se basa en ella para encontrar los archivos correctamente.