MidassAI

DeepSeek Vision: extrae y verifica datos de capturas

MidassAI Team · 12 de octubre de 2026 · 7 min read

Start Creating
Ilustración conceptual de un panel de campos, una lupa y tres fichas de datos sobre una mesa azul.

Una tarea de extracción de datos de una captura de pantalla está terminada cuando alguien puede rastrear los campos devueltos hasta la imagen. Obtener una respuesta con un formato impecable es solo la primera parte. Los casos difíciles son un dígito ilegible, un valor asignado a la fila equivocada o una unidad ausente que el modelo completa a partir del contexto. Diseña el flujo de trabajo en torno a esos casos antes de enviar una colección grande de imágenes.

La guía de Vision de DeepSeek, consultada el 12 de octubre de 2026, documenta la entrada de imagen y texto para deepseek-flash. El registro de cambios del 10 de septiembre identifica ese nombre con V4.1 Flash. Esta es una guía práctica de octubre sobre la API documentada, no el anuncio de un nuevo modelo de octubre. El ejemplo siguiente es una plantilla de implementación; no es una ejecución de inferencia registrada ni una prueba comparativa de precisión de OCR.

Prepara una captura de pantalla con un área bien delimitada

Elige una tarea con una salida pequeña y explícita. Por ejemplo, extraer el estado visible, el nombre del artículo y la cantidad mostrada de un solo panel de inventario. No empieces con «comprende este panel», porque eso deja que el modelo decida qué partes importan y qué conclusiones sacar.

Captura suficiente contexto para conservar los encabezados de columna y las unidades. Un recorte ajustado que solo muestre números puede eliminar la información necesaria para interpretarlos. Si la imagen original es alta o densa, divídela en regiones con nombre y conserva una copia de la imagen completa para orientarte. Asigna a cada región un identificador estable, como panel-A o panel-B, antes de hacer las solicitudes.

Inspecciona la entrada a un tamaño de lectura normal. Si no logras distinguir un dígito en la captura, pedir una respuesta con más seguridad no recuperará los píxeles que faltan. Vuelve a capturar la fuente a una escala útil siempre que sea posible. Evita cambios de tamaño y compresiones repetidas que dificulten la lectura del texto pequeño.

Usa un PNG para el ejemplo siguiente. La guía oficial también admite JPEG, GIF y WebP, e identifica los formatos a partir del contenido del archivo. Cambiar el nombre de un archivo no lo convierte. Revisa el archivo que realmente estás enviando en lugar de confiar solo en su extensión.

Define qué puede dejar desconocido el modelo

Especifica los campos antes de escribir la solicitud. Para un panel de inventario, un registro útil podría contener el identificador de la región, el nombre visible del artículo, la cantidad mostrada, la unidad mostrada, el estado y una nota sobre la ambigüedad. Conserva la redacción original cuando importe; normalízala en un paso posterior.

Haz explícitos los valores desconocidos. Una celda vacía, un texto oculto por una capa superpuesta y un carácter ilegible son observaciones distintas. No deberían convertirse todos en cero. Si tu sistema posterior exige un número, retén el registro para revisión en lugar de inventar uno para satisfacer su esquema.

Un ejemplo de instrucción original para una captura que tú proporciones:

Lee solo la tabla de inventario de panel-A. Para cada fila visible, devuelve el nombre del artículo, el texto de la cantidad, la unidad y el estado exactamente como aparecen. Usa null en los campos que no puedas leer y explica el motivo en una nota. No infieras filas ocultas, no completes nombres cortados ni calcules totales. Incluye una breve descripción de la ubicación para que pueda encontrar cada fila en la imagen.

La descripción de la ubicación es una ayuda para la revisión, no un cuadro delimitador preciso. Si tu aplicación necesita coordenadas, define y valida ese requisito por separado. No tomes una frase de ubicación verosímil como prueba de que el valor extraído es correcto.

Start Creating

Envía la imagen en el bloque de contenido correcto

La interfaz documentada de Chat Completions coloca los bloques de texto e imagen dentro del array de contenido del mensaje de usuario. Una imagen local puede codificarse como data URL. Para la siguiente plantilla de Python, instala el cliente de Python compatible con OpenAI, configura DEEPSEEK_API_KEY en tu entorno local y coloca un PNG auténtico en screenshot.png. Mantén la clave fuera de los archivos fuente y del código del navegador.

import base64
import os
from pathlib import Path
from openai import OpenAI

image = Path("screenshot.png").read_bytes()
if not image.startswith(b"\x89PNG\r\n\x1a\n"):
    raise ValueError("Use a PNG image for this example")
encoded = base64.b64encode(image).decode("ascii")

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)
result = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": (
                "Read the inventory table in panel-A. Return each visible "
                "row's item name, quantity text, unit, status, and location. "
                "Use null for unreadable fields and add a note explaining "
                "the ambiguity. Do not infer hidden rows or calculate totals."
            )},
            {"type": "image_url", "image_url": {
                "url": "data:image/png;base64," + encoded,
                "detail": "original",
            }},
        ],
    }],
)
print(result.choices[0].message.content)

Esta plantilla imprime el contenido devuelto para su inspección; no impone un esquema legible por máquina ni valida el resultado. Añade esos pasos antes de conectarla a una importación automatizada. La solicitud a la API genera cargos de uso según tu cuenta y los precios vigentes del proveedor.

La guía describe las URL públicas de imágenes y las referencias de la Files API como otras opciones de entrada. Elige el transporte adecuado para tu carga de trabajo: una imagen local puede incluirse directamente en la solicitud, mientras que el uso repetido de la misma imagen puede encajar mejor con una referencia de archivo. Revisa los límites de tamaño documentados vigentes antes de escalar, ya que la codificación base64 también aumenta el cuerpo de la solicitud.

El ejemplo usa el ajuste de detalle original documentado. Eso no garantiza una lectura píxel a píxel: la guía describe por separado el preprocesamiento de imágenes. Su ajuste low reduce la resolución a 512 × 512, así que una captura densa merece especial cuidado antes de cambiar detalle por eficiencia.

Verifica la extracción antes de calcular nada

Abre la entrada junto a la respuesta y revisa una fila devuelta cada vez. Compara el texto, la asociación con la fila y la unidad. Una cantidad puede transcribirse correctamente pero asignarse al producto vecino; una simple revisión ortográfica no detectará eso.

Empieza con un conjunto pequeño que incluya filas ordinarias, valores ausentes, un nombre truncado y un carácter ambiguo. Estos son casos de evaluación sugeridos. Conserva tus propias respuestas verificadas y anota si cada fallo provino de la imagen de entrada, de la extracción o de la forma en que tu aplicación interpretó la respuesta.

Calcula los totales solo después de verificar los valores individuales. Si la imagen incluye tanto un subtotal como un total, conserva sus etiquetas en lugar de elegir uno por su posición. Mantén explícitas las unidades y las convenciones decimales al convertir texto en números. Una coma puede tener significados distintos según el documento de origen.

Para un procesamiento repetible, conserva con cada registro revisado el identificador de la entrada, el nombre de la región, la versión del prompt, el modelo solicitado y la respuesta sin procesar. Así será posible una corrección posterior sin adivinar qué captura produjo el valor.

Separa los errores de transporte de los errores de lectura

Si la solicitud falla, revisa la autenticación, el formato de entrada, la estructura del mensaje y los límites de tamaño vigentes antes de cambiar la instrucción de extracción. En este ejemplo de Chat Completions, la imagen va en un mensaje de usuario y usa un bloque image_url. No sustituyas en su lugar la forma input_image de la Responses API.

Si la solicitud tiene éxito pero un valor es incorrecto, inspecciona el recorte y la definición de la tarea. Prueba con una región más clara que conserve sus encabezados. Si un campo sigue siendo ilegible, déjalo como desconocido y envíalo a revisión. Pedir repetidamente a la misma imagen una respuesta definitiva puede producir una suposición distinta sin producir mejores pruebas.

Para proyectos que migran nombres de modelos antiguos, consulta la guía de migración de la API de DeepSeek. El flujo de extracción descrito aquí asume el nombre actual documentado y se centra en validar los datos, no solo en recibir una respuesta exitosa. Publica o importa el resultado solo después de poder comprobar los campos obligatorios contra su fuente.

Artículos relacionados

Start Creating