

# Comprensión de documentos
<a name="modalities-document"></a>

**nota**  
Esta documentación corresponde a la versión 1 de Amazon Nova. Para ver la guía sobre la comprensión de documentos de Amazon Nova 2, consulte [Document understanding](https://docs.aws.amazon.com/nova/latest/nova2-userguide/using-multimodal-models.html#document-understanding).

La capacidad de comprensión de documentos de Amazon Nova le permite incluir documentos completos (PDF, archivos de Word, hojas de cálculo, etc.) en su petición y hacer preguntas o solicitudes sobre su contenido. Los modelos de comprensión multimodales de Nova (Lite, Pro, Premier) pueden interpretar tanto el texto como los elementos visuales (como gráficos o tablas) de estos documentos. Esto permite casos de uso como contestar preguntas, resumir y analizar informes largos o documentos escaneados. Las características clave incluyen una cantidad de contexto muy grande (de 1 a 2 millones de tokens) para documentos largos y la capacidad de gestionar varios documentos en una sola consulta. 

Amazon Nova distingue entre dos tipos de entradas de documentos:
+ **Tipos de documentos basados en texto** (por ejemplo, TXT, CSV, Markdown, HTML, DOC): se procesan principalmente por su contenido textual. Nova se centrará en comprender y extraer información del texto de estos documentos. 
+ **Tipos de documentos basados en contenido multimedia** (por ejemplo, PDF, DOCX): estos archivos pueden contener diseños, imágenes, gráficos o contenido gráfico incrustado complejos. En el caso de los documentos multimedia, Nova procesa tanto los elementos visuales como los textuales. Nova emplea un análisis basado en la visión para interpretar el contenido visual, como gráficos, tablas, diagramas o capturas de pantalla, junto con el texto del documento.

  JPEG2000 y JBIG2 no son compatibles con archivos PDF en Amazon Nova.

Los formatos de archivo compatibles incluyen los tipos de documentos más comunes: archivos de texto sin formato y de texto estructurado (CSV, TXT), hojas de cálculo (XLS/XLSX), HTML/Markdown, documentos de Word (DOC/DOCX) y archivos PDF. En el caso de las imágenes dentro de los documentos, se utilizan los formatos de imagen estándar (PNG, JPG, GIF, WebP), aunque no se admiten archivos PDF que contengan determinadas codificaciones de imagen (CYMK, SVG). 


**Límites de tamaño de los documentos y pautas de uso**  

| Restricción | Límite | 
| --- | --- | 
|  Número máximo de documentos  |  Hasta 5 documentos por solicitud (se aplica tanto a la carga directa como a Amazon S3)  | 
|  Tamaño del documento basado en texto  |  Cada documento de texto (por ejemplo, .txt, .csv, .md, .html, .doc) debe tener un tamaño inferior o igual a 4,5 MB  | 
|  Tamaño del documento basado en contenido multimedia  |  En el caso de los archivos .pdf y .docx, no existe un límite de tamaño de archivo individual, pero tenga en cuenta lo siguiente: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/nova/latest/userguide/modalities-document.html)  | 
|  Contenido en PDF no compatible  |  No se admiten archivos PDF que contengan perfiles de color CMYK o imágenes SVG  | 

# Uso de la comprensión de documentos de Nova a través de la API
<a name="modalities-document-examples"></a>

Para mostrar cómo usar Amazon Nova para contestar preguntas de documentos o hacer análisis, aquí tiene un ejemplo simplificado en Python. Usaremos la API de AWS Bedrock (mediante el SDK de Boto3) para enviar un documento PDF junto con una pregunta para que la responda el modelo.

```
            
import base64
import base64
import json
import boto3

# Initialize Bedrock runtime client (adjust region as needed)
client = boto3.client("bedrock-runtime", region_name="us-east-1")

MODEL_ID = "us.amazon.nova-lite-v1:5"  # using Nova Lite model in this example

# Read the document file (PDF) in binary mode
with open("my_document.pdf", "rb") as file:
    doc_bytes = file.read()

# Construct the conversation messages with document + question
messages = [
    {
        "role": "user",
        "content": [
            {
                "document": {
                    "format": "pdf",
                    "name": "Document1",  # neutral name for the document
                    "source": {
                        "bytes": doc_bytes  # embedding the PDF content directly
                    }
                }
            },
            {
                "text": "Here is a question about the document: ... (your question) ... ?"
            }
        ]
    }
]

# Set inference parameters (optional)
inf_params = {"maxTokens": 4000, "topP": 0.1, "temperature": 0.3}

# Invoke the model
response = client.converse(modelId=MODEL_ID, messages=messages, inferenceConfig=inf_params)

# Extract and print the answer
answer_text = response["output"]["message"]["content"][0]["text"]
print(answer_text)
```

Si los archivos de entrada son grandes (superan el límite de carga directa de 25 MB) o tiene muchos archivos, puede almacenarlos en Amazon S3 y hacer referencia a ellos. Esto evita enviar los bytes sin procesar junto con la solicitud. Cuando utilice S3, asegúrese de que el servicio Bedrock tenga permiso para acceder al bucket u objeto. Por ejemplo, para hacer referencia a un archivo PDF en S3, el origen del documento utilizaría “s3Location” en lugar de “bytes” de la siguiente manera:

```
messages = [
    {
        "role": "user",
        "content": [
            {
                "document": {
                    "format": "pdf",
                    "name": "Report2023",
                    "source": {
                        "s3Location": {
                            "uri": "s3://your-bucket/path/to/document1.pdf",
                            "bucketOwner": "123456789012"
                        }
                    }
                }
            },
            {
                "text": "Summarize the key findings from the Q3 2023 report."
            }
        ]
    }
]
```

**nota**  
Los nombres de los documentos solo pueden contener caracteres alfanuméricos, guiones, paréntesis y corchetes.  
El campo `name` es vulnerable a las inyecciones de peticiones, ya que el modelo podría interpretarlas como instrucciones por error. Por lo tanto, le recomendamos que especifique un nombre neutro.