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
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.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en OpenAI
Documentación oficial de OpenAI
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, OpenAI es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de OpenAI
Explora más contenido relacionado con OpenAI y continúa aprendiendo con nuestros tutoriales gratuitos.
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.