Codificación Base64

Cuando envíes archivos de documentos a la API Document AI, puedes enviar datos directamente en el campo RawDocument.content con procesamiento online solo si el archivo tiene un tamaño de 20 MB o menos. El archivo de entrada estará en formato binario, que debe codificarse antes de enviarlo a Document AI.

Si el archivo de entrada supera los límites de procesamiento online, debe almacenarse en un segmento de Cloud Storage para poder enviarse a procesar, lo que no requiere codificación. Consulta la documentación sobre el procesamiento por lotes para obtener más información.

Usar la línea de comandos

En una solicitud gRPC, puedes escribir datos binarios directamente. Sin embargo, se usa JSON al hacer una solicitud REST. JSON es un formato de texto que no admite directamente datos binarios, por lo que tendrás que convertir esos datos en texto mediante la codificación Base64.

La mayoría de los entornos de desarrollo contienen una utilidad base64 nativa para codificar un archivo binario en datos de texto ASCII. Para codificar un archivo, sigue estos pasos:

Linux

Codifica el archivo con la herramienta de línea de comandos base64. Asegúrate de evitar el salto de línea con la marca -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifica el archivo con la herramienta de línea de comandos base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifica el archivo con la herramienta Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifica el archivo con el método Convert.ToBase64String:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE

Crea un archivo de solicitud JSON insertando los datos codificados en base64:

JSON

{
  "skipHumanReview": skipHumanReview,
  "rawDocument": {
    "mimeType": "MIME_TYPE",
    "content": "BASE64_ENCODED_DATA"
  },
  "fieldMask": "FIELD_MASK"
}

Usar bibliotecas de cliente

No es recomendable ni práctico insertar datos binarios en solicitudes a través de editores de texto. En la práctica, insertarás archivos codificados en base64 en el código del cliente. Todos los lenguajes de programación admitidos tienen mecanismos integrados para codificar contenido en Base64.

Python

# Import the base64 encoding library.
import base64

# Pass the image data to an encoding function.
def encode_image(image):
    with open(image, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read())
    return encoded_string

Node.js

// Read the file into memory.
var fs = require('fs');
var imageFile = fs.readFileSync('/path/to/file');

// Convert the image data to a Buffer and base64 encode it.
var encoded = Buffer.from(imageFile).toString('base64');

Java

// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;

// Encode the image.
String encodedString = Base64.getEncoder().encodeToString(imageFile.getBytes());

Go

import (
    "bufio"
    "encoding/base64"
    "io"
    "os"
)

// Open image file.
f, _ := os.Open("image.jpg")

// Read entire image into byte slice.
reader := bufio.NewReader(f)
content, _ := io.ReadAll(reader)

// Encode image as base64.
base64.StdEncoding.EncodeToString(content)