YOLO-GEMINI-API / inteligencia.py
PericlesRodrigues01's picture
Upload 7 files
80dede2 verified
import google.generativeai as genai
import easyocr
from dotenv import load_dotenv
import os
import cv2 # ADICIONE ESTA LINHA
# --- CONFIGURAÇÕES (Carregam apenas uma vez) ---
load_dotenv()
chave_api = os.getenv("GOOGLE_API_KEY") # <--- RECOLOQUE SUA CHAVE AQUI
genai.configure(api_key=chave_api)
model = genai.GenerativeModel('gemini-2.5-flash')
print("Inicializando OCR e IA... (Isso acontece só uma vez)")
# Mantenha gpu=False se não tiver CUDA configurado
reader = easyocr.Reader(['pt', 'en'], gpu=False)
def analisar_imagem_agora(caminho_imagem):
print(f"\n--- 🧠 INICIANDO ANÁLISE: {caminho_imagem} ---")
# 1. OCR (LEITURA) - FORMA MAIS SEGURA
try:
print("Executando OCR...")
# CORREÇÃO: Carregar e converter para escala de cinza
img = cv2.imread(caminho_imagem)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
resultados_brutos = reader.readtext(img_gray)
# Vamos extrair só o texto manualmente para não dar erro de desempacotamento
lista_textos = []
for item in resultados_brutos:
# O formato do item é: ( [caixa], "texto lido", confiança )
if len(item) >= 2:
texto = item[1]
lista_textos.append(texto)
texto_detectado = " ".join(lista_textos)
print(f"📖 Texto Bruto: {texto_detectado}")
if len(texto_detectado) < 2:
print("⚠️ Pouco texto. A identificação pode falhar.")
return
except Exception as e:
print(f"Erro no OCR: {e}")
return
# 2. IA (INTERPRETAÇÃO)
prompt = f"""
Analise este texto de rótulo de produto: "{texto_detectado}"
Identifique: Categoria | Marca | Detalhes.
Responda apenas nesse formato e não escreva textos longos. Se não souber, diga "Não identificado".
"""
try:
response = model.generate_content(prompt)
print(f"🤖 RESPOSTA IA: {response.text}") # Isso aparece no servidor (OK)
# --- O SEGREDO ESTÁ AQUI: TEM QUE TER O RETURN ---
return {
"texto_lido": texto_detectado,
"analise_ia": response.text
}
# -------------------------------------------------
except Exception as e:
print(f"Erro na IA: {e}")
return {"texto_lido": "Erro", "analise_ia": "Erro na IA"}