Comprensión de documentos

Puedes agregar documentos (archivos PDF y TXT) a las solicitudes de Gemini para realizar tareas que impliquen comprender el contenido de los documentos incluidos. En esta página, se muestra cómo agregar archivos PDF a tus solicitudes a Gemini en Vertex AI con la Google Cloud consola y la API de Vertex AI.

Modelos compatibles

En la siguiente tabla, se enumeran los modelos que admiten la comprensión de documentos:

Modelo Detalles de los medios Tipos de MIME
Gemini 2.5 Flash (versión preliminar)
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo de archivo por archivo para las importaciones de la API o de Cloud Storage: 50 MB
  • Tamaño máximo de archivo por archivo para las cargas directas a través de la consola: 7 MB
  • application/pdf
  • text/plain
Gemini 2.5 Flash-Lite (versión preliminar)
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.5 Flash Image
  • Cantidad máxima de archivos por instrucción: 3
  • Cantidad máxima de páginas por archivo: 3
  • Tamaño máximo por archivo: 50 MB (importaciones de la API y Cloud Storage) o 7 MB (carga directa a través de la Google Cloud consola)
  • application/pdf
  • text/plain
Gemini 2.5 Flash-Lite
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.0 Flash con generación de imágenes (versión preliminar)
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.5 Pro
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo de archivo por archivo para las importaciones de la API o de Cloud Storage: 50 MB
  • Tamaño máximo de archivo por archivo para las cargas directas a través de la consola: 7 MB
  • application/pdf
  • text/plain
Gemini 2.5 Flash
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo de archivo por archivo para las importaciones de la API o de Cloud Storage: 50 MB
  • Tamaño máximo de archivo por archivo para las cargas directas a través de la consola: 7 MB
  • application/pdf
  • text/plain
Gemini 2.0 Flash
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo de archivo por archivo para las importaciones de la API o de Cloud Storage: 50 MB
  • Tamaño máximo de archivo por archivo para las cargas directas a través de la consola: 7 MB
  • Cantidad máxima de tokens por minuto (TPM) por proyecto1:
    • EE.UU./Asia: 3.4 M
    • UE: 3.4 millones
  • application/pdf
  • text/plain
Gemini 2.0 Flash-Lite
  • Cantidad máxima de archivos por instrucción: 3,000
  • Cantidad máxima de páginas por archivo: 1,000
  • Tamaño máximo de archivo por archivo para las importaciones de la API o de Cloud Storage: 50 MB
  • Tamaño máximo de archivo por archivo para las cargas directas a través de la consola: 7 MB
  • Cantidad máxima de tokens por minuto (TPM) por proyecto1:
    • EE.UU./Asia: 3.4 M
    • UE: 3.4 millones

1Este es el TPM máximo de las entradas de documentos en todas las solicitudes de un proyecto. También usa el TPM máximo para otras modalidades.

La métrica de cuota es generate_content_document_input_per_base_model_id_and_resolution.

Para obtener una lista de los idiomas compatibles con los modelos de Gemini, consulta la información del modelo de los Modelos de Google. Para obtener más información sobre cómo diseñar instrucciones multimodales, consulta Diseña instrucciones multimodales. Si buscas una manera de usar Gemini directamente desde tus apps web y para dispositivos móviles, consulta los SDK de cliente de Firebase AI Logic para apps de Swift, Android, Web, Flutter y Unity.

Agrega documentos a una solicitud

En la siguiente muestra de código, se muestra cómo incluir un PDF en una solicitud de instrucción. Esta muestra de PDF funciona con todos los modelos multimodales de Gemini.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
model_id = "gemini-2.5-flash"

prompt = """
You are a highly skilled document summarization specialist.
Your task is to provide a concise executive summary of no more than 300 words.
Please summarize the given document for a general audience.
"""

pdf_file = Part.from_uri(
    file_uri="gs://cloud-samples-data/generative-ai/pdf/1706.03762v7.pdf",
    mime_type="application/pdf",
)

response = client.models.generate_content(
    model=model_id,
    contents=[pdf_file, prompt],
)

print(response.text)
# Example response:
# Here is a summary of the document in 300 words.
#
# The paper introduces the Transformer, a novel neural network architecture for
# sequence transduction tasks like machine translation. Unlike existing models that rely on recurrent or
# convolutional layers, the Transformer is based entirely on attention mechanisms.
# ...

Go

Obtén más información para instalar o actualizar Go.

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateTextWithPDF shows how to generate text using a PDF file input.
func generateTextWithPDF(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: `You are a highly skilled document summarization specialist.
	Your task is to provide a concise executive summary of no more than 300 words.
	Please summarize the given document for a general audience.`},
			{FileData: &genai.FileData{
				FileURI:  "gs://cloud-samples-data/generative-ai/pdf/1706.03762v7.pdf",
				MIMEType: "application/pdf",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// "Attention Is All You Need" introduces the Transformer,
	// a groundbreaking neural network architecture designed for...
	// ...

	return nil
}

Java

Obtén más información para instalar o actualizar Java.

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.Part;

public class TextGenerationWithPdf {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash";
    generateContent(modelId);
  }

  // Generates text with PDF file input
  public static String generateContent(String modelId) {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client =
        Client.builder()
            .location("global")
            .vertexAI(true)
            .httpOptions(HttpOptions.builder().apiVersion("v1").build())
            .build()) {

      String prompt =
          "You are a highly skilled document summarization specialist.\n"
              + " Your task is to provide a concise executive summary of no more than 300 words.\n"
              + " Please summarize the given document for a general audience";

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              Content.fromParts(
                  Part.fromUri(
                      "gs://cloud-samples-data/generative-ai/pdf/1706.03762v7.pdf",
                      "application/pdf"),
                  Part.fromText(prompt)),
              null);

      System.out.print(response.text());
      // Example response:
      // The document introduces the Transformer, a novel neural network architecture designed for
      // sequence transduction tasks, such as machine translation. Unlike previous dominant models
      // that rely on complex recurrent or convolutional neural networks, the Transformer proposes a
      // simpler, more parallelizable design based *solely* on attention mechanisms, entirely
      // dispensing with recurrence and convolutions...

      return response.text();
    }
  }
}

Node.js

Instalar

npm install @google/genai

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateText(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const prompt = `You are a highly skilled document summarization specialist.
    Your task is to provide a concise executive summary of no more than 300 words.
    Please summarize the given document for a general audience.`;

  const pdfFile = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/pdf/1706.03762v7.pdf',
      mimeType: 'application/pdf',
    },
  };

  const response = await client.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: [pdfFile, prompt],
  });

  console.log(response.text);

  // Example response:
  //  Here is a summary of the document in 300 words.
  //  The paper introduces the Transformer, a novel neural network architecture for
  //  sequence transduction tasks like machine translation. Unlike existing models that rely on recurrent or
  //  convolutional layers, the Transformer is based entirely on attention mechanisms.
  //  ...

  return response.text;
}

REST

Después de configurar tu entorno, puedes usar REST para probar una instrucción de texto. En el siguiente ejemplo, se envía una solicitud al extremo del modelo de publicador.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • FILE_URI: Es el URI o la URL del archivo que se incluirá en la instrucción. Los valores aceptables son los siguientes:
    • URI del bucket de Cloud Storage: El objeto debe poder leerse de forma pública o residir en el mismo proyecto Google Cloud que envía la solicitud. Para gemini-2.0-flash y gemini-2.0-flash-lite, el límite de tamaño es de 2 GB.
    • URL HTTP: La URL del archivo debe ser legible públicamente. Puedes especificar un archivo de video, un archivo de audio y hasta 10 archivos de imagen por solicitud. Los archivos de audio, los archivos de video y los documentos no pueden superar los 15 MB.
    • URL del video de YouTube: El video de YouTube debe ser propiedad de la cuenta que usaste para acceder a la consola de Google Cloud o ser público. Solo se admite una URL de video de YouTube por solicitud.

    Cuando especifiques un fileURI, también debes especificar el tipo de medio (mimeType) del archivo. Si los Controles del servicio de VPC están habilitados, no se admite especificar una URL de archivo multimedia para fileURI.

    Si no tienes un archivo PDF en Cloud Storage, puedes usar el siguiente archivo disponible de forma pública: gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf con un tipo de MIME de application/pdf. Para ver este PDF, abre el archivo PDF de muestra.

  • MIME_TYPE El tipo de medio del archivo especificado en los campos data o fileUri. Los valores aceptables son los siguientes:

    Haz clic para expandir los tipos de MIME.

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: Las instrucciones de texto que se incluirán en el mensaje. Por ejemplo, You are a very professional document summarization specialist. Please summarize the given document.

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Ten en cuenta lo siguiente en la URL para esta muestra:
  • Usa el método generateContent para solicitar que la respuesta se muestre después de que se haya generado por completo. Para reducir la percepción de latencia a un público humano, transmite la respuesta a medida que se genera; para ello, usa el método streamGenerateContent.
  • El ID del modelo multimodal se encuentra al final de la URL antes del método (por ejemplo, gemini-2.0-flash). Esta muestra también puede admitir otros modelos.

Console

Para enviar una instrucción multimodal con la Google Cloud consola, haz lo siguiente:

  1. En la sección Vertex AI de la Google Cloud consola, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en Crear mensaje.

  3. Opcional: Configura el modelo y los parámetros:

    • Modelo: Selecciona un modelo.
  4. Opcional: Para configurar parámetros avanzados, haz clic en Avanzada y establece la configuración de la siguiente manera:

    Haz clic para expandir las configuraciones avanzadas

    • K superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor para K superior.

      K superior cambia la manera en que el modelo selecciona tokens para la salida. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

      Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

      Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

    • P superior: Usa el control deslizante o el cuadro de texto con el fin de ingresar un valor de P superior. Los tokens se seleccionan del más probable al menos hasta que la suma de sus probabilidades sea igual al valor de P superior. Para obtener los resultados menos variables, establece top-P como 0.
    • Respuestas máximas: Usa el control deslizante o el cuadro de texto para ingresar un valor para la cantidad de respuestas que se generarán.
    • Respuestas de transmisión: Habilita esta opción para imprimir las respuestas a medida que se generan.
    • Umbral del filtro de seguridad: Selecciona el umbral de probabilidad de ver respuestas que podrían ser dañinas.
    • Habilitar fundamentos: Los fundamentos no son compatibles con las instrucciones multimodales.
    • Región: selecciona la región que deseas usar.
    • Temperatura: Usa el control deslizante o el cuadro de texto para ingresar un valor de temperatura.

          
      The temperature is used for sampling during response generation, which occurs when topP
      and topK are applied. Temperature controls the degree of randomness in token selection.
      Lower temperatures are good for prompts that require a less open-ended or creative response, while
      higher temperatures can lead to more diverse or creative results. A temperature of 0
      means that the highest probability tokens are always selected. In this case, responses for a given
      prompt are mostly deterministic, but a small amount of variation is still possible.
      
      

      If the model returns a response that's too generic, too short, or the model gives a fallback response, try increasing the temperature.

      </li> <li>**Output token limit**: Use the slider or textbox to enter a value for the max output limit. Maximum number of tokens that can be generated in the response. A token is approximately four characters. 100 tokens correspond to roughly 60-80 words.

      Specify a lower value for shorter responses and a higher value for potentially longer responses.

      </li> <li>**Add stop sequence**: Optional. Enter a stop sequence, which is a series of characters that includes spaces. If the model encounters a stop sequence, the response generation stops. The stop sequence isn't included in the response, and you can add up to five stop sequences.</li> </ul>

  5. Haz clic en Insertar medios y selecciona una fuente para tu archivo.

    Subir

    Selecciona el archivo que quieras subir y haz clic en Abrir.

    Por URL

    Ingresa la URL del archivo que quieres usar y haz clic en Insertar.

    Cloud Storage

    Selecciona el bucket y, luego, el archivo del bucket que deseas importar y haz clic en Seleccionar.

    Google Drive

    1. Elige una cuenta y da consentimiento a Vertex AI Studio para acceder a tu cuenta la primera vez que selecciones esta opción. Puedes subir varios archivos con un tamaño total de hasta 10 MB. Un solo archivo no puede superar los 7 MB.
    2. Haz clic en el archivo que quieras agregar.
    3. Haz clic en Seleccionar.

      La miniatura del archivo se muestra en el panel Instrucción. También se muestra la cantidad total de tokens. Si los datos de la instrucción superan el límite de tokens, los tokens se truncan y no se incluyen en el procesamiento de tus datos.

  6. Ingresa tu mensaje de texto en el panel Mensaje.

  7. Opcional: Para ver el ID de token a texto y los IDs de token, haz clic en el recuento de tokens en el panel Instrucción.

  8. Haz clic en Enviar.

  9. Opcional: Para guardar la instrucción en Mis instrucciones, haz clic en Guardar.

  10. Opcional: Para obtener el código de Python o un comando curl para tu instrucción, haz clic en Compilar con código > Obtener código.

Cómo establecer parámetros del modelo opcionales

Cada modelo tiene un conjunto de parámetros opcionales que puedes establecer. Para obtener más información, consulta Parámetros de generación de contenido.

Tokenización de documentos

Tokenización de PDF

Los PDFs se tratan como imágenes, por lo que cada página de un PDF se tokeniza de la misma manera que una imagen.

Además, el costo de los PDFs sigue los precios de las imágenes de Gemini. Por ejemplo, si incluyes un PDF de dos páginas en una llamada a la API de Gemini, incurres en una tarifa de entrada por procesar dos imágenes.

Prácticas recomendadas para PDF

Cuando uses archivos PDF, usa la siguiente información y prácticas recomendadas para obtener los mejores resultados:

  • Si tu instrucción contiene un solo PDF, colócalo antes de la instrucción de texto en tu solicitud.
  • Si tienes un documento largo, evalúa dividirlo en varios archivos PDF para procesarlo.
  • Usa archivos PDF creados con texto renderizado como texto en lugar de texto de imágenes escaneadas. Este formato garantiza que el texto sea legible para las máquinas, de modo que sea más fácil para el modelo editar, buscar y manipular en comparación con los PDFs de las imágenes escaneadas. Esta práctica proporciona resultados óptimos cuando se trabaja con documentos con mucho texto, como contratos.

Limitaciones

Si bien los modelos multimodales de Gemini son potentes en muchos casos de usuarios multimodales, es importante comprender las limitaciones de los modelos:

  • Razonamiento espacial: Los modelos no son precisos para ubicar texto u objetos en archivos PDF. Es posible que solo muestren los recuentos aproximados de los objetos.
  • Exactitud: los modelos pueden tener alucinaciones cuando interpretan texto escrito a mano en documentos PDF.

¿Qué sigue?