Comprensión de documentos

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

Modelos admitidos

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

Modelo Detalles del contenido multimedia Tipos MIME
Versión preliminar de Gemini 2.5 Flash Image
  • Número máximo de archivos por petición: 3
  • Número máximo de páginas por archivo: 3
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.5 Flash-Lite
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.0 Flash con generación de imágenes
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.5 Pro
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • Tamaño máximo por archivo: 50 MB
  • application/pdf
  • text/plain
Gemini 2.5 Flash
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • 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 para las subidas directas a través de la consola: 7 MB
  • application/pdf
  • text/plain
Gemini 2.0 Flash
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • Tamaño máximo por archivo: 50 MB
  • Número máximo de tokens por minuto (TPM) por proyecto1:
    • EE. UU./Asia: 3,4 M
    • UE: 3,4 M
  • application/pdf
  • text/plain
Gemini 2.0 Flash-Lite
  • Número máximo de archivos por petición: 3000
  • Número máximo de páginas por archivo: 1000
  • Tamaño máximo por archivo: 50 MB
  • Número máximo de tokens por minuto (TPM):
    • EE. UU./Asia: 3,4 M
    • UE: 3,4 M
  • application/pdf
  • text/plain

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

La métrica de cuota es generate_content_document_input_per_base_model_id_and_resolution.

Para ver una lista de los idiomas disponibles en los modelos de Gemini, consulta la información sobre los modelos de Google. Para obtener más información sobre cómo diseñar peticiones multimodales, consulta Diseña peticiones multimodales. Si quieres usar Gemini directamente desde tus aplicaciones móviles y web, consulta los SDKs de cliente de lógica de IA de Firebase para aplicaciones Swift, Android, web, Flutter y Unity.

Añadir documentos a una solicitud

En el siguiente ejemplo de código se muestra cómo incluir un PDF en una solicitud. Este PDF de ejemplo 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.

Define 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

Consulta cómo instalar o actualizar Go.

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

Define 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

Consulta cómo instalar o actualizar Java.

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

Define 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();
    }
  }
}

REST

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

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • FILE_URI: URI o URL del archivo que se va a incluir en la petición. Entre los valores aceptados se incluyen los siguientes:
    • URI del segmento de Cloud Storage: el objeto debe ser de lectura pública o estar en el mismo proyecto Google Cloud que envía la solicitud. En 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 de lectura pública. Puedes especificar un archivo de vídeo, un archivo de audio y hasta 10 archivos de imagen por solicitud. Los archivos de audio, vídeo y documentos no pueden superar los 15 MB.
    • URL del vídeo de YouTube: el vídeo de YouTube debe ser propiedad de la cuenta que has usado para iniciar sesión en la Google Cloud consola o debe ser público. Solo se admite una URL de vídeo de YouTube por solicitud.

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

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

  • MIME_TYPE: el tipo de contenido multimedia del archivo especificado en los campos data o fileUri. Entre los valores aceptados se incluyen los siguientes:

    Haz clic para desplegar 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 deben incluir en la petición. 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 siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

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

A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente comando en el terminal para crear o sobrescribir 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

A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 siguiente.

Fíjate en lo siguiente de la URL de este ejemplo:
  • Usa el método generateContent para solicitar que la respuesta se devuelva una vez que se haya generado por completo. Para reducir la percepción de latencia de los usuarios, transmite la respuesta a medida que se genera mediante 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). Es posible que esta muestra también admita otros modelos.

Consola

Para enviar una petición multimodal mediante la Google Cloud consola, sigue estos pasos:

  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 petición.

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

    • Modelo: selecciona un modelo.
  4. Opcional: Para configurar parámetros avanzados, haga clic en Avanzado y configure lo siguiente:

    Haz clic para desplegar las configuraciones avanzadas

    • Top-K: usa el control deslizante o el cuadro de texto para introducir un valor de top-K.

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

      En cada paso de selección de tokens, se muestrean los K tokens principales con las probabilidades más altas. Después, los tokens se filtran en función de la probabilidad P máxima y el token final se selecciona mediante un muestreo de temperatura.

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

    • Top-P: usa el control deslizante o el cuadro de texto para introducir un valor de top-P. Los tokens se seleccionan de más probable a menos probable hasta que la suma de sus probabilidades sea igual al valor de top-P. Para obtener los resultados menos variables, define top_p como 0.
    • Número máximo de respuestas: usa el control deslizante o el cuadro de texto para introducir el número de respuestas que quieres generar.
    • Respuestas graduales: habilita esta opción para imprimir las respuestas a medida que se generan.
    • Umbral del filtro de seguridad: selecciona el umbral de probabilidad de que veas respuestas que puedan ser dañinas.
    • Habilitar Grounding: Grounding no se admite en las peticiones multimodales.
    • Región: selecciona la región que quieras usar.
    • Temperatura: usa el control deslizante o el cuadro de texto para introducir 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 contenido multimedia y selecciona una fuente para el archivo.

    Subir

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

    Por URL

    Introduzca la URL del archivo que quiera usar y haga clic en Insertar.

    Cloud Storage

    Selecciona el contenedor y, a continuación, el archivo del contenedor que quieras importar y haz clic en Seleccionar.

    Google Drive

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

      La miniatura del archivo se muestra en el panel Petición. También se muestra el número total de tokens. Si los datos de tu petición superan el límite de tokens, los tokens se truncarán y no se incluirán en el procesamiento de tus datos.

  6. Escribe tu petición de texto en el panel Petición.

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

  8. Haz clic en Enviar.

  9. Opcional: Para guardar tu petición en Mis peticiones, haz clic en Guardar.

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

Definir parámetros de modelo opcionales

Cada modelo tiene un conjunto de parámetros opcionales que puedes definir. Para obtener más información, consulte 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 forma que una imagen.

Además, el coste 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, se te cobrará una tarifa de entrada por procesar dos imágenes.

Prácticas recomendadas para PDFs

Cuando uses PDFs, sigue estas prácticas recomendadas y consulta la siguiente información para obtener los mejores resultados:

  • Si tu petición contiene un solo PDF, colócalo antes del texto de la petición.
  • Si tienes un documento largo, te recomendamos que lo dividas en varios PDFs para procesarlo.
  • Usa PDFs creados con texto renderizado como texto en lugar de usar texto en imágenes escaneadas. Este formato asegura que el texto se pueda leer automáticamente, por lo que el modelo puede editarlo, buscarlo y manipularlo más fácilmente que los PDFs de imágenes escaneadas. Esta práctica ofrece resultados óptimos cuando se trabaja con documentos con mucho texto, como contratos.

Limitaciones

Aunque los modelos multimodales de Gemini son potentes en muchos casos de uso multimodal, es importante conocer sus limitaciones:

  • Razonamiento espacial: los modelos no son precisos a la hora de localizar texto u objetos en PDFs. Puede que solo devuelvan el número aproximado de objetos.
  • Precisión: los modelos pueden alucinar al interpretar texto escrito a mano en documentos PDF.

Siguientes pasos