Integração de IA Industrial Multimodal: Pipeline com Reconhecimento OCR e Geração de Diagramas de Desmontagem

Este artigo explora a implementação prática de um sistema de IA industrial que combina reconhecimento óptico de caracteres (OCR) e geração de imagens especializadas. O foco está no uso de um modelo de IA chamado Nano-Banana, otimizado para criar diagramas técnicos como visões explosivas (exploded views) e layouts de peças (knolling).

Conceito do Nano-Banana Engine

Nano-Banana é um modelo de geração de imagens baseado em difusão (diffusion) que foi refinado com técnicas de ajuste fino (fine-tuning), especificamente utilizando um LoRA (Low-Rank Adaptation) especializado. Este ajuste foca em estilos de representação técnica industrial, permitindo que o modelo produza visualizações limpas e padronizadas de componentes mecânicos ou eletrônicos dispostos de maneira organizada.

Parâmetros Essenciais para Controle da Geração

Dois parâmetros são críticos para direcionar a saída do modelo:

  • Peso do LoRA: Controla a intensidade da injeção do estilo especializado. Valores entre 0.7 e 0.9 geralmente oferecem um equilíbrio ideal entre fidelidade ao estilo e clareza visual.
  • Escala de Orientação (CFG): Determina o quão estritamente a geração segue a descrição textual. Valores moderados (7-8) equilibram aderência ao prompt e naturalidade.

Ajustes nestes parâmetros permitem variar desde diagramas técnicos precisos até composições artísticas com separação exagerada de peças.

Construindo uma Pipeline Automatizada com OCR

Para aumentar a eficiência, é possível integrar o OCR para extrair informações textuais de imagens de projetos ou fotos de equipamentos, e utilizá-las como entrada para o gerador de imagens.

1. Extração de Texto com OCR

Bibliotecas como o pytesseract em Python podem ser utilizadas. O código a seguir demonstra uma extração básica:

import pytesseract
from PIL import Image

def recuperar_texto_da_imagem(caminho_arquivo):
    """Realiza OCR em uma imagem e retorna o texto encontrado."""
    imagem = Image.open(caminho_arquivo)
    # Configurar idioma conforme necessidade, ex: lang='por'
    texto = pytesseract.image_to_string(imagem, lang='eng')
    return texto

# Exemplo de uso
texto_bruto = recuperar_texto_da_imagem("foto_maquina.jpg")
print(texto_bruto)

2. Processamento do Prompt para Geração

O texto extraído precisa ser limpo e transformado em uma instrução eficaz para o modelo de geração de imagens. Uma abordagem é filtrar palavras-chave relevantes.

import re

def construir_prompt_para_desmontagem(texto_bruto):
    """Filtra e estrutura o texto OCR para criar um prompt de geração de imagens."""
    # Remove caracteres indesejados e espaços extras
    texto_limpo = re.sub(r'[^a-zA-ZÀ-ÿ0-9\s]', '', texto_bruto)
    texto_limpo = ' '.join(texto_limpo.split())

    # Separa possíveis identificadores de peças (ex: P1, B-02, COMPONENTE_X)
    padrao_peças = r'\b[A-Z]{1,3}[-_]?\d{1,4}\b'
    ids_encontrados = re.findall(padrao_peças, texto_limpo, re.IGNORECASE)
    
    # Monta o prompt base com palavras-chave e o estilo desejado
    palavras_chave = set(texto_limpo.split())
    prompt_base = f"diagrama de desmontagem de motor, peças como {', '.join(ids_encontrados[:4])},"
    prompt_estilo = " fundo branco limpo, ilustração técnica, perspectiva isométrica, alta detalhe"
    
    return prompt_base + prompt_estilo

prompt_final = construir_prompt_para_desmontagem(texto_bruto)
print("Prompt gerado:", prompt_final)

3. Invocação do Modelo de Geração

Com o prompt estruturado, a próxima etapa é enviar a solicitação à API do Nano-Banana. A implementação exata dependerá da interface de serviço utilizada (ex: API REST compatível com interfaces como o Stable Diffusion WebUI).

import requests
import base64
from io import BytesIO

def gerar_imagem_de_desmontagem(prompt, parametros):
    """Envia a solicitação para a API do modelo de geração de imagens."""
    endpoint_api = "http://localhost:7860/sdapi/v1/txt2img"
    payload = {
        "prompt": prompt,
        "steps": parametros.get("passos", 30),
        "cfg_scale": parametros.get("cfg", 7.5),
        "width": 768,
        "height": 768
    }
    # Nota: A estrutura exata do payload varia. O LoRA costuma ser ativado no prompt ou via configuração de modelos.
    try:
        resposta = requests.post(endpoint_api, json=payload)
        dados = resposta.json()
        if 'images' in dados:
            imagem_base64 = dados['images'][0]
            if ',' in imagem_base64:
                imagem_base64 = imagem_base64.split(',', 1)[1]
            bytes_imagem = base64.b64decode(imagem_base64)
            imagem = Image.open(BytesIO(bytes_imagem))
            nome_arquivo = "resultado_desmontagem.png"
            imagem.save(nome_arquivo)
            return nome_arquivo
    except Exception as e:
        print(f"Falha na chamada da API: {e}")
    return None

# Parâmetros recomendados
parametros_de_saida = {"passos": 30, "cfg": 7.5}
arquivo_resultante = gerar_imagem_de_desmontagem(prompt_final, parametros_de_saida)

Considerações sobre a Pipeline

A integração dessas tecnologias cria um fluxo automatizado: Imagem com Texto → OCR → Estruturação de Prompt → Geração de Diagrama Técnico. Esta abordagem é particularmente valiosa para a documentação técnica automatizada, manuais de manutenção e materiais de treinamento. O sucesso da pipeline depende de uma etapa de pré-processamento das imagans de entrada e da calibração cuidadosa dos parâmetros do modelo de geração para garantir que os diagramas resultantes sejam visualmente claros e informativos.

Tags: ocr Geração de Imagens IA industrial LoRA diagramas técnicos

Publicado em 7-1 00:56