Cómo hacer que Claude analice imágenes con la API
Aprende a enviar imágenes a Claude y obtener descripciones, extracción de texto y análisis en minutos.

- Cuenta en console.anthropic.com con una API key
- Python 3.8+ instalado
- Una imagen de prueba (JPG o PNG)
- Terminal y editor de código
- Cómo obtener y configurar tu API key de Claude de forma segura
- Cómo codificar una imagen en base64 para enviarla a la API
- Cómo construir la petición multimodal con texto e imagen
- Cómo pedir a Claude que extraiga texto (OCR) o describa una escena
Obtener tu API key y instalar el SDK
Antes de escribir código necesitas dos cosas: la librería oficial de Anthropic y una clave de acceso. Entra en console.anthropic.com, ve a la sección API Keys y crea una nueva clave. Cópiala en un lugar seguro porque solo se muestra una vez. Después instala el SDK de Python desde la terminal. En España y LATAM funciona igual: la facturación es en dólares pero puedes usar tarjetas locales. Guarda la clave como variable de entorno para no dejarla escrita en el código, algo básico de seguridad que evita subir credenciales a GitHub por accidente.
pip install anthropic
# Guarda tu clave como variable de entorno
export ANTHROPIC_API_KEY='sk-ant-tu-clave-aqui'Codificar la imagen en base64
Claude no recibe archivos directamente: la imagen viaja dentro de la petición como texto codificado en base64. Este paso convierte tu archivo local (JPG, PNG, GIF o WebP) en esa cadena. Escribe una pequeña función que abra el archivo en modo binario y lo codifique. También necesitas conocer el 'media_type' exacto (por ejemplo image/jpeg o image/png) porque la API lo usa para interpretar los bytes. Si el tipo no coincide con el archivo real, la petición fallará. Ten en cuenta el límite de tamaño: cada imagen puede pesar hasta unos 5 MB y conviene no superar los 1568 píxeles en el lado largo para no gastar tokens de más.
import base64
def codificar_imagen(ruta):
with open(ruta, 'rb') as f:
return base64.standard_b64encode(f.read()).decode('utf-8')
imagen_b64 = codificar_imagen('factura.jpg')
print('Imagen codificada, longitud:', len(imagen_b64))Construir la petición multimodal
Ahora combinas texto e imagen en un solo mensaje. El campo 'content' del mensaje del usuario es una lista de bloques: uno de tipo 'image' con los datos base64 y otro de tipo 'text' con tu instrucción. Usamos el modelo claude-opus-4-8, que entiende imágenes de forma nativa. El orden importa poco, pero por claridad suele ponerse primero la imagen y después la pregunta. En 'max_tokens' defines cuánto puede responder Claude. Este mismo patrón sirve para describir una foto, analizar un gráfico o leer un documento escaneado: solo cambias el texto de la instrucción.
import anthropic
client = anthropic.Anthropic() # lee la clave de la variable de entorno
mensaje = client.messages.create(
model='claude-opus-4-8',
max_tokens=1024,
messages=[{
'role': 'user',
'content': [
{
'type': 'image',
'source': {
'type': 'base64',
'media_type': 'image/jpeg',
'data': imagen_b64,
},
},
{
'type': 'text',
'text': 'Describe con detalle qué aparece en esta imagen.',
},
],
}],
)
print(mensaje.content[0].text)Extraer texto de una imagen (OCR)
Uno de los usos más prácticos es leer texto de facturas, tickets, capturas o documentos escaneados. Claude no solo transcribe: entiende la estructura, así que puedes pedirle directamente los datos en formato JSON. Cambia la instrucción para que devuelva campos concretos. Esto te ahorra montar un OCR tradicional y luego parsear el resultado. Para builders en España es útil con facturas que incluyen IVA, o en LATAM con comprobantes fiscales. Pide siempre un formato explícito y da un ejemplo de las claves que quieres para que la salida sea consistente y fácil de procesar en tu aplicación.
instruccion = '''Extrae los datos de esta factura y devuélvelos
en JSON con estas claves: emisor, fecha, total, iva.
Si un dato no aparece, usa null.'''
mensaje = client.messages.create(
model='claude-opus-4-8',
max_tokens=1024,
messages=[{
'role': 'user',
'content': [
{'type': 'image', 'source': {'type': 'base64',
'media_type': 'image/jpeg', 'data': imagen_b64}},
{'type': 'text', 'text': instruccion},
],
}],
)
print(mensaje.content[0].text)Usar una imagen desde una URL pública
Si tu imagen ya está en internet, no hace falta descargarla ni codificarla: la API acepta una fuente de tipo 'url'. Es más cómodo para prototipos y para imágenes que ya están alojadas en tu CDN o almacenamiento. La URL debe ser accesible públicamente, sin autenticación, porque los servidores de Anthropic la descargan directamente. Para datos sensibles o privados sigue usando base64, que nunca expone la imagen en una URL abierta. Este método reduce el código y es ideal cuando trabajas con catálogos de productos o imágenes ya publicadas.
mensaje = client.messages.create(
model='claude-opus-4-8',
max_tokens=512,
messages=[{
'role': 'user',
'content': [
{'type': 'image', 'source': {
'type': 'url',
'url': 'https://ejemplo.com/producto.jpg'}},
{'type': 'text', 'text': '¿Qué producto es y qué color tiene?'},
],
}],
)
print(mensaje.content[0].text)Ya tienes un script funcional que envía imágenes a Claude y obtiene descripciones, análisis y extracción de texto estructurado. Has aprendido a codificar en base64, construir peticiones multimodales, usar imágenes desde URL y pedir salidas en JSON listas para tu aplicación. Con esta base puedes seguir explorando cómo construir tu primera app con la API de Claude y automatizar tareas visuales reales en tus proyectos.