Renderz Studio
Academia
Proyectos
Servicios
Arsenal
Repo
Herramientas
Skills
El Oráculo
Guía Gratis
← El Arsenal
DesarrolloAvanzado40 min

Computer Vision con Claude

Análisis de imágenes · OCR · extracción de datos · visión multimodal

VisionOCRImágenes
✓ Guía gratuita · Acceso completo

Mapa rápido · salta al paso que te interese

Enviar imágenes

Formatos y límites

OCR inteligente

Extraer texto estructurado

Análisis de documentos

Facturas, formularios, recibos

01

Enviar imágenes a Claude

Claude acepta imágenes en base64 o por URL. Soporta JPEG, PNG, GIF, y WebP. Límite: 20MB por imagen, máximo 20 imágenes por request.

lib/vision/analyze.ts
import Anthropic from '@anthropic-ai/sdk'
import fs from 'fs'

const anthropic = new Anthropic()

// Opción 1: desde archivo local
export async function analyzeLocalImage(imagePath: string, prompt: string) {
  const imageBuffer = fs.readFileSync(imagePath)
  const base64 = imageBuffer.toString('base64')
  const mediaType = imagePath.endsWith('.png') ? 'image/png' : 'image/jpeg'

  const response = await anthropic.messages.create({
    model: 'claude-sonnet-4-20250514',
    max_tokens: 1024,
    messages: [{
      role: 'user',
      content: [
        {
          type: 'image',
          source: { type: 'base64', media_type: mediaType, data: base64 },
        },
        { type: 'text', text: prompt },
      ],
    }],
  })

  return response.content[0].type === 'text' ? response.content[0].text : ''
}

// Opción 2: desde URL
export async function analyzeImageUrl(imageUrl: string, prompt: string) {
  const response = await anthropic.messages.create({
    model: 'claude-sonnet-4-20250514',
    max_tokens: 1024,
    messages: [{
      role: 'user',
      content: [
        { type: 'image', source: { type: 'url', url: imageUrl } },
        { type: 'text', text: prompt },
      ],
    }],
  })

  return response.content[0].type === 'text' ? response.content[0].text : ''
}
02

OCR inteligente con estructura

lib/vision/ocr.ts
import { analyzeLocalImage } from './analyze'

export async function extractTextStructured(imagePath: string) {
  const prompt = `Extrae todo el texto visible en esta imagen.

Devuelve JSON con esta estructura:
{
  "rawText": "todo el texto tal cual aparece",
  "structured": {
    "title": "si hay título principal",
    "sections": [{ "heading": "...", "content": "..." }],
    "lists": [["item1", "item2"]],
    "tables": [{ "headers": [...], "rows": [[...]] }]
  },
  "metadata": {
    "language": "es|en|...",
    "documentType": "factura|carta|formulario|otro",
    "confidence": 0.0-1.0
  }
}`

  const result = await analyzeLocalImage(imagePath, prompt)
  return JSON.parse(result)
}
03

Procesador de facturas

lib/vision/invoice-processor.ts
import { analyzeLocalImage } from './analyze'
import { z } from 'zod'

const InvoiceSchema = z.object({
  vendor: z.object({
    name: z.string(),
    address: z.string().optional(),
    taxId: z.string().optional(),
  }),
  customer: z.object({
    name: z.string(),
    address: z.string().optional(),
  }),
  invoiceNumber: z.string(),
  date: z.string(),
  dueDate: z.string().optional(),
  lineItems: z.array(z.object({
    description: z.string(),
    quantity: z.number(),
    unitPrice: z.number(),
    total: z.number(),
  })),
  subtotal: z.number(),
  tax: z.number(),
  total: z.number(),
  currency: z.string(),
})

export async function processInvoice(imagePath: string) {
  const prompt = `Analiza esta factura y extrae todos los datos.

Devuelve JSON con: vendor, customer, invoiceNumber, date, dueDate, lineItems (array con description, quantity, unitPrice, total), subtotal, tax, total, currency.

Solo JSON, sin explicaciones.`

  const result = await analyzeLocalImage(imagePath, prompt)
  const parsed = JSON.parse(result)

  // Validar con Zod
  return InvoiceSchema.parse(parsed)
}

Tip Pro

Para facturas en producción, combina vision con validación de datos. Flaggea automáticamente las que tengan baja confianza para revisión humana.

Guías relacionadas

Function Calling

Combinar vision con tools

Pipeline de Contenido

Procesar imágenes automáticamente

¿Quieres el sistema completo?

500+ páginas, 25 capítulos, código de producción, acceso a todas las guías del Arsenal.

Curso Completo · €29

PayPal · Acceso inmediato

¿Hablamos?