Procesar imágenes

Intermedio
OpenAI
OpenAI
Actualizado: 03/07/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Analizar imágenes como input

Los modelos de OpenAI con capacidades de visión pueden procesar imágenes como entrada y analizarlas para extraer información, describir contenido o responder preguntas específicas sobre elementos visuales. Esta funcionalidad multimodal permite crear aplicaciones que combinan texto e imágenes de manera natural.

La API Responses de OpenAI proporciona tres métodos principales para incluir imágenes como entrada en las solicitudes: mediante URLs públicas, archivos codificados en Base64, o identificadores de archivos subidos previamente.

Análisis mediante URL de imagen

El método más directo para analizar una imagen es proporcionar una URL pública que apunte al archivo de imagen. Este enfoque es ideal cuando las imágenes están alojadas en servidores web accesibles:

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-4.1-mini",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "¿Qué elementos puedes identificar en esta imagen?"},
            {
                "type": "input_image",
                "image_url": "https://ejemplo.com/mi-imagen.jpg"
            }
        ]
    }]
)

print(response.output_text)

Este método es eficiente para imágenes que ya están disponibles online, ya que no requiere procesamiento adicional de archivos locales.

Ejemplo completo:

Análisis mediante codificación Base64

Para imágenes almacenadas localmente, puedes convertirlas a formato Base64 y incluirlas directamente en la solicitud:

import base64
from openai import OpenAI

client = OpenAI()

def encode_image(image_path):
    """Convierte una imagen local a formato Base64"""
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

# Cargar y codificar la imagen
image_path = "documento_escaneado.jpg"
base64_image = encode_image(image_path)

response = client.responses.create(
    model="gpt-4.1",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Extrae el texto de este documento"},
            {
                "type": "input_image",
                "image_url": f"data:image/jpeg;base64,{base64_image}"
            }
        ]
    }]
)

print(response.output_text)

La codificación Base64 es útil cuando trabajas con imágenes sensibles que no pueden subirse a servidores externos o cuando necesitas procesar archivos temporales.

Ejemplo pasándole el logo de openai al propio openai a ver si se da cuenta o no:

Análisis mediante Files API

Para aplicaciones que manejan múltiples imágenes o requieren reutilización de archivos, puedes usar la Files API para subir imágenes y referenciarlas por su ID:

from openai import OpenAI

client = OpenAI()

def upload_image(file_path):
    """Sube una imagen usando la Files API"""
    with open(file_path, "rb") as file_content:
        result = client.files.create(
            file=file_content,
            purpose="vision"
        )
        return result.id

# Subir la imagen
file_id = upload_image("grafico_ventas.png")

response = client.responses.create(
    model="gpt-4.1-mini",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Analiza las tendencias mostradas en este gráfico"},
            {
                "type": "input_image",
                "file_id": file_id
            }
        ]
    }]
)

print(response.output_text)

Ejemplo usando la API Files:

Configuración del nivel de detalle

El parámetro detail permite controlar la precisión del análisis y optimizar el consumo de tokens según las necesidades específicas:

response = client.responses.create(
    model="gpt-4.1-mini",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Describe los colores predominantes"},
            {
                "type": "input_image",
                "image_url": "https://ejemplo.com/paisaje.jpg",
                "detail": "low"  # Análisis rápido y económico
            }
        ]
    }]
)

El nivel "low" procesa la imagen con un presupuesto fijo de 85 tokens, ideal para análisis generales como identificar formas o colores dominantes. El nivel "high" proporciona mayor precisión para tareas que requieren detectar texto pequeño o elementos detallados.

Análisis de múltiples imágenes

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

Puedes incluir varias imágenes en una sola solicitud para realizar comparaciones o análisis conjunto:

response = client.responses.create(
    model="gpt-4.1",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Compara estas dos facturas y encuentra las diferencias"},
            {
                "type": "input_image",
                "image_url": "data:image/jpeg;base64,{base64_factura1}"
            },
            {
                "type": "input_image", 
                "image_url": "data:image/jpeg;base64,{base64_factura2}"
            }
        ]
    }]
)

Casos de uso prácticos

El análisis de imágenes resulta especialmente valioso en escenarios como:

  • Extracción de texto: Digitalizar documentos escaneados, facturas o formularios
  • Análisis de contenido: Describir productos en catálogos o identificar elementos en fotografías
  • Verificación de calidad: Detectar defectos en imágenes de productos o procesos industriales
  • Interpretación de gráficos: Extraer datos de charts, diagramas o visualizaciones
# Ejemplo: Análisis de factura
response = client.responses.create(
    model="gpt-4.1-mini",
    input=[{
        "role": "user",
        "content": [
            {
                "type": "input_text", 
                "text": "Extrae la información clave: fecha, importe total, número de factura y empresa emisora"
            },
            {
                "type": "input_image",
                "image_url": f"data:image/jpeg;base64,{factura_base64}",
                "detail": "high"
            }
        ]
    }]
)

# El modelo devuelve la información estructurada
print(response.output_text)

Requisitos y limitaciones

Las imágenes deben cumplir requisitos específicos para ser procesadas correctamente:

  • Formatos soportados: PNG, JPEG, WEBP y GIF no animado
  • Tamaño máximo: 50 MB por solicitud total, hasta 500 imágenes individuales
  • Calidad: Imágenes claras sin marcas de agua, contenido apropiado y suficiente resolución

El modelo presenta limitaciones en ciertos escenarios como imágenes médicas especializadas, texto en alfabetos no latinos, elementos rotados o tareas que requieren localización espacial precisa. Para obtener mejores resultados, asegúrate de que las imágenes tengan buena iluminación y que el texto sea legible a tamaño normal.

Aprendizajes de esta lección

  • Comprender cómo los modelos de OpenAI pueden procesar imágenes como input.
  • Aprender a enviar imágenes mediante URL pública, codificación Base64 y Files API.
  • Configurar el nivel de detalle para optimizar el análisis de imágenes.
  • Manejar múltiples imágenes en una sola solicitud para análisis comparativos.
  • Conocer casos prácticos y limitaciones del análisis de imágenes con OpenAI.

Completa OpenAI y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración