Estúdio de etiquetas

Use o Label Studio para rotular conjuntos de dados.

O serviço Data Labeling da Oracle está sendo preterido. É necessário migrar quaisquer conjuntos de dados rotulados para o Label Studio, uma ferramenta de rotulagem de código-fonte aberto e suportada pelo marketplace. Com a descontinuação do serviço Data Labeling, esta seção fornece detalhes sobre a conversão de exportações de captura instantânea do serviço Data Labeling para importação do Label Studio e formatos de exportação JSON do Label Studio. Você pode usar esses formatos para anotação adicional no Label Studio ou treinamento direto do modelo.

Para treinar modelos personalizados, você precisa dos dois arquivos a seguir:

Arquivo Manifest
Esse arquivo contém metadados sobre os arquivos de anotação e geralmente tem uma extensão .jsonl.
Arquivo de Registro

Este é o conjunto de dados exportado do Label Studio após a anotação. O arquivo tem uma extensão .json.

  • Para KV Personalizado, o arquivo de registro está no formato JSON-MIN.

  • Para o DC personalizado, o arquivo de registro está no formato JSON padrão.

1. Configurando o Ambiente do Label Studio

Você pode usar o ambiente Virtual ou o Conda:
  1. Crie o arquivo requirement.txt:
    label-studio==1.19.0
    pdf2image
    oci
    label-studio-ml
  2. Crie o ambiente:
    • Usando o ambiente virtual:
      python3 -m venv env_name
    • Usando o Conda:
      conda create --name env_name
  3. Activate the environment:
    • Usando o ambiente virtual:
      source env_name/bin/activate
    • Usando o Conda:
      conda activate env_name
  4. Instalar o Label Studio com suas dependências
    pip install -r requirements.txt
  5. Ativar serviço de arquivo local.
    Como os arquivos são armazenados localmente, você precisa exportar as seguintes variáveis de ambiente para permitir que o Label Studio acesse e faça anotações:
    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 obter mais informações, consulte: Definir variáveis de ambiente na documentação do Label Studio.

1.1 Iniciar o Label Studio

  1. Inicie o Label Studio.
    Por padrão, o Label Studio é executado na porta 8080. Se essa porta já estiver em uso ou para especificar outra porta, inicie o Label Studio com o seguinte comando:
    label-studio start --port <port_number>
    Para obter mais informações, consulte Iniciar o Label Studio na documentação do Label Studio.
  2. Criar uma conta.

    Quando você inicia o Label Studio pela primeira vez, você vê a tela de inscrição.

    1. Crie uma conta com seu endereço de email e uma senha.
    2. Faça logon no Label Studio.

2. Workflow de Rotulagem para Extração de Chave-Valor Personalizada

O Label Studio não oferece suporte nativo a anotações em PDF para obter mais informações. Consulte Ferramentas Fundamentais para Criação de Label em PDF na documentação do Label Studio.

Existe uma solução para Rotulagem Multimagem Paginada.

Siga estas etapas para rotular PDFs:

  1. Converta os PDFs em imagens. Para obter mais informações, consulte este tutorial de código.
  2. Armazene as imagens em algum lugar acessível pelo Label Studio.
  3. Crie um novo projeto do Label Studio e faça upload dos dados.
    Para cada tarefa, você tem uma lista de URLs correspondentes à localização de cada imagem (ou página) no documento. Esses são os URLs de onde o documento está hospedado.
  4. Use o novo modelo de Anotação de documento de várias páginas para configurar a rotulagem.
  5. Identifique os dados.
  6. Faça download dos scripts de utilitário e extraia utility_scripts_kv.zip para anotação de valor-chave.

2.1 Gerar lista de tarefas

Se os documentos de treinamento estiverem em formato PDF, você precisará convertê-los em imagens primeiro. A função pdf_to_images executa essa conversão e salva as imagens em uma pasta output_images (Images_input_root), que é criada na raiz do diretório de entrada fornecido. Para cada PDF, uma pasta separada (nomeada após o arquivo PDF) é criada dentro do diretório output_images para armazenar as imagens correspondentes.

  1. Para anotação do Label Studio, você precisa gerar uma lista de tarefas. Cada tarefa corresponde à anotação de um único documento.
  2. Em uma linha de comando, execute o arquivo generate_tasks.kv.pv contido nos scripts do utilitário baixados na etapa 6 da tarefa anterior.

2.2 Configurar Integração OCR para Pré-notificação

Para simplificar o fluxo de trabalho de anotação e minimizar o esforço manual, a pré-anotação interativa pode ser ativada no Label Studio. Esta configuração fornece a geração automática de caixas delimitadoras usando o serviço OCR. O OCI OCR é integrado como backend de ML para gerar caixas delimitadoras em imagens para anotação de valor-chave. Clone o seguinte repositório e instale as dependências necessárias:

Para obter mais informações, consulte Escrever seu próprio backend de ML na documentação do Label Studio.

  1. Instalar 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 os parâmetros para chamar o serviço de extração do OCI Text:
    CONFIG_PROFILE = "DEFAULT"
    COMPARTMENT_ID = "ocid1.compartment.oc1.xxxxxxxxxxxxxxxxxxxxxxxx"
    SERVICE_ENDPOINT = "https://document-preprod.aiservice.xxxxxxxxxxxxxxxx"
    LANGUAGE="ENG"
  3. Iniciar serviço de extração de texto:
    1. Faça download dos scripts de utilitário e extraia o conteúdo de ociocr.zip para o diretório label-studio-ml-backend/label_studio_ml/examples/.
    2. Execute o comando a seguir para iniciar o serviço OCR:
      label-studio-ml start ./ociocr --port <port>

2.3 Criação e Configuração de Projetos

  1. Crie um novo projeto seguindo as etapas na documentação do Label Studio.
  2. Adicionar armazenamento de dados de origem.
    1. Em Definições, selecione Cloud Storage.
    2. Selecione Arquivos Locais.
    3. Informe os caminhos de armazenamento de arquivos locais para a pasta input_pdf e a pasta output_images. Para obter mais informações, consulte a documentação do Label Studio no armazenamento local.
  3. Definir configuração de rotulagem.
    1. Em Configurações, selecione Interface de Label.
    2. Selecione o Código.
    3. Adicione o seguinte código para a configuração de rotulagem:
      <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. Salve.
    5. Selecione Visual para adicionar ou remover labels conforme necessário.
  4. Ative a pré-anotação interativa (configure a opção de modelo de conexão para chamar o OCI OCR).
    1. Em Configurações, selecione Modelo.
    2. Selecione Adicionar Modelo.
    3. Adicione ou atualize os seguintes:
      • Ative o Modelo de Conexão nas definições de projeto do Label Studio.

      • Configure o URL de Backend para apontar para o ponto final do OCR do OCI.

      • Certifique-se de que as chaves de autenticação necessárias estejam no arquivo .env para se conectar com segurança ao OCI OCR.

      • Após a conexão, o Label Studio envia automaticamente cada documento submetido a upload para o serviço OCR do OCI e exibe as caixas delimitadoras previstas como pré-notações.

      • Você pode revisar, alterar ou aceitar os resultados pré-anotados interativamente.

2.4 Anotação do Conjunto de Dados no Label Studio

  1. Crie uma nova anotação de conjunto de dados.
    1. Gere um JSON de tarefa para anotação conforme mencionado na seção 2.1 Gerar Lista de Tarefas.
    2. Importe-os para anotação.
  2. Estenda os dados existentes anotados pelo serviço Data Labeling no Label Studio.
    1. Migre conjuntos de dados anotados pelo serviço Data Labeling para um formato compatível com o Label Studio.
    2. Após a conversão, esses conjuntos de dados podem ser importados para o Label Studio para estender, refinar ou concluir as anotações conforme necessário. Use o script, DLS2LS_conversion_ky.py, dos scripts de utilitário.
  3. Importe as tarefas para anotações.
    1. Importe o arquivo tasks.json gerado conforme criado na etapa 1a para nova anotação.
    2. Para anotações de Data Labeling existentes, converta-as no formato Label Studio.
    3. Importe para o Label Studio para estender, refinar ou concluir as anotações conforme necessário.
  4. Comece a rotular, seguindo as etapas na documentação do Label Studio.
  5. Exporte as anotações no formato JSON-MIN.

    Os arquivos de registro são exportados diretamente do Label Studio após a conclusão do processo de anotação.

  6. Gere o arquivo de manifesto, usando o script Generate_manifest.py, dos scripts de utilitário.
  7. Faça upload do arquivo de manifesto, do arquivo de registro e dos documentos de imagem ou pdf para o bucket e o caminho definidos no manifesto.
    Observação

    O diretório document_root local é mapeado para <bucket_name/prefix> na Nuvem. Mantenha a mesma estrutura de pastas do armazenamento local. O pipeline de treinamento espera essa estrutura e confia nela para encontrar os arquivos corretamente.

3. Workflow de Rotulagem para Classificação de Documento Personalizado

O Label Studio não oferece suporte nativo a anotações em PDF para obter mais informações. Consulte Ferramentas Fundamentais para Criação de Label em PDF na documentação do Label Studio.

Existe uma solução para Rotulagem Multimagem Paginada.

Siga estas etapas para rotular PDFs:

  1. Converta os PDFs em imagens. Para obter mais informações, consulte este tutorial de código.
  2. Armazene as imagens em algum lugar acessível pelo Label Studio.
  3. Crie um novo projeto do Label Studio e faça upload dos dados.
    Para cada tarefa, você tem uma lista de URLs correspondentes à localização de cada imagem (ou página) no documento. Esses são os URLs de onde o documento está hospedado.
  4. Use o novo modelo de Anotação de documento de várias páginas para configurar a rotulagem.
  5. Identifique os dados.
  6. Faça download dos scripts de utilitário e extraia utility_scripts_dc.zip para anotação de classificação de documento.

3.1 Gerar lista de tarefas

Se os documentos de treinamento estiverem em formato PDF, você precisará convertê-los em imagens primeiro. A função pdf_to_images executa essa conversão e salva as imagens em uma pasta output_images (Images_input_root), que é criada na raiz do diretório de entrada fornecido. Para cada PDF, uma pasta separada (nomeada após o arquivo PDF) é criada dentro do diretório output_images para armazenar as imagens correspondentes.

  1. Para anotação do Label Studio, você precisa gerar uma lista de tarefas. Cada tarefa corresponde à anotação de um único documento.
  2. Em uma linha de comando, execute o arquivo generate_tasks_dc.pv contido nos scripts do utilitário baixados na etapa 6 da tarefa anterior.

3.2 Criação e Configuração de Projetos

  1. Crie um novo projeto seguindo as etapas na documentação do Label Studio.
  2. Adicionar armazenamento de dados de origem.
    1. Em Definições, selecione Cloud Storage.
    2. Selecione Arquivos Locais.
    3. Informe os caminhos de armazenamento de arquivos locais para a pasta input_pdf e a pasta output_images. Para obter mais informações, consulte a documentação do Label Studio no armazenamento local.
  3. Definir configuração de rotulagem.
    1. Em Configurações, selecione Interface de Label.
    2. Selecione o Código.
    3. Adicione o seguinte código para a configuração de rotulagem:
      <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 labels únicos, defina choice="single". Para a classificação com vários rótulos, defina choice="multiple".

    4. Salve.
    5. Selecione Visual para adicionar ou remover labels conforme necessário.

3.3 Anotação do conjunto de dados para classificação de documentos no Label Studio

  1. Crie uma nova anotação de conjunto de dados.
    1. Gere um JSON de tarefa para anotação conforme mencionado na seção 3.1 Gerar Lista de Tarefas.
    2. Importe-os para anotação.
  2. Estenda os dados existentes anotados pelo serviço Data Labeling no Label Studio.
    1. Migre conjuntos de dados anotados pelo serviço Data Labeling para um formato compatível com o Label Studio.
    2. Após a conversão, esses conjuntos de dados podem ser importados para o Label Studio para estender, refinar ou concluir as anotações conforme necessário. Use o script, DLS2LS_conversion_dc.py, dos scripts de utilitário.
  3. Importe as tarefas para anotações.
    1. Importe o arquivo tasks.json gerado conforme criado na etapa 1a para nova anotação.
    2. Para anotações de Data Labeling existentes, converta-as no formato Label Studio.
    3. Importe para o Label Studio para estender, refinar ou concluir as anotações conforme necessário.
  4. Atribuir um rótulo a cada página.
  5. Exporte as anotações no formato JSON.

    Os arquivos de registro são exportados diretamente do Label Studio após a conclusão do processo de anotação.

  6. Gere o arquivo de manifesto, usando o script Generate_manifest.py, dos scripts de utilitário.
  7. Faça upload do arquivo de manifesto, do arquivo de registro e dos documentos de imagem ou pdf para o bucket e o caminho definidos no manifesto.
    Observação

    O diretório document_root local é mapeado para <bucket_name/prefix> na Nuvem. Mantenha a mesma estrutura de pastas do armazenamento local. O pipeline de treinamento espera essa estrutura e confia nela para encontrar os arquivos corretamente.