Detecta texto en archivos

En esta página, se muestra cómo detectar texto en archivos con la API de reconocimiento óptico de caracteres (OCR) en el dispositivo aislado de Google Distributed Cloud (GDC).

El servicio de OCR de Vertex AI en el dispositivo aislado de GDC detecta texto en archivos PDF y TIFF con el método de la API de BatchAnnotateFiles.

Antes de comenzar

Antes de comenzar a usar la API de OCR, debes tener un proyecto con la API de OCR habilitada y las credenciales adecuadas. También puedes instalar bibliotecas cliente para ayudarte a realizar llamadas a la API. Para obtener más información, consulta Configura un proyecto de reconocimiento de caracteres.

Detecta texto con solicitudes intercaladas

El método BatchAnnotateFiles detecta texto en un lote de archivos PDF o TIFF. Envías directamente el archivo del que deseas detectar texto como contenido en la solicitud de la API. El sistema devuelve el texto detectado resultante en formato JSON en la respuesta de la API.

Debes especificar valores para los campos del cuerpo JSON de tu solicitud a la API. En la siguiente tabla, se incluye una descripción de los campos del cuerpo de la solicitud que debes proporcionar cuando usas el método de la API de BatchAnnotateFiles para tus solicitudes de detección de texto:

Campos del cuerpo de la solicitud Descripción del campo
content Son los archivos con texto que se detectará. Proporcionas la representación en Base64 (cadena ASCII) del contenido de tu archivo binario.
mime_type Es el tipo de archivo fuente. Debes establecerlo en uno de los siguientes valores:
  • application/pdf para archivos PDF
  • image/tiff para archivos TIFF
type Es el tipo de detección de texto que necesitas del archivo.

Especifica una de las dos funciones de anotación:
  • TEXT_DETECTION detecta y extrae el texto de cualquier archivo. La respuesta JSON incluye la cadena extraída, las palabras individuales y sus cuadros de límite.
  • DOCUMENT_TEXT_DETECTION también extrae texto de un archivo, pero el servicio optimiza la respuesta para textos y documentos densos. El archivo JSON incluye información de la página, el bloque, el párrafo, la palabra y la división.
Para obtener más información sobre estas funciones de anotación, consulta Funciones de reconocimiento óptico de caracteres.
language_hints Opcional. Lista de idiomas que se usarán para la detección de texto.

El sistema interpreta un valor vacío para este campo como detección automática del idioma.

No es necesario que configures el campo language_hints para los idiomas basados en el alfabeto latino.

Si conoces el idioma del texto en el archivo, establecer una sugerencia mejora los resultados.
pages Opcional. Es la cantidad de páginas del archivo que se procesarán para la detección de texto.

La cantidad máxima de páginas que puedes especificar es cinco. Si no especificas la cantidad de páginas, el servicio procesará las primeras cinco páginas del archivo.

Cómo realizar una solicitud a la API intercalada

Realiza una solicitud a la API previamente entrenada de OCR con el método de la API de REST. De lo contrario, interactúa con la API previamente entrenada de OCR desde una secuencia de comandos de Python para detectar texto en archivos PDF o TIFF.

En los siguientes ejemplos, se muestra cómo detectar texto en un archivo con OCR:

REST

Sigue estos pasos para detectar texto en archivos con el método de la API de REST:

  1. Guarda el siguiente archivo request.json para el cuerpo de tu solicitud:

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "input_config": {
            "content": BASE64_ENCODED_FILE,
            "mime_type": "application/pdf"
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          },
          "pages": []
        }
      ]
    }
    EOF
    

    Reemplaza lo siguiente:

    • BASE64_ENCODED_FILE: Es la representación en Base64 (cadena ASCII) del contenido de tu archivo binario. Esta cadena comienza con caracteres que se parecen a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: Es el tipo de detección de texto que necesitas del archivo. Los valores permitidos son TEXT_DETECTION o DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: Son las etiquetas de idioma BCP 47 que se usarán como sugerencias de idioma para la detección de texto, como en-t-i0-handwrit. Este campo es opcional y el sistema interpreta un valor vacío como detección automática del idioma.
  2. Obtén un token de autenticación.

  3. Realiza la solicitud:

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/files:annotate
    

    Reemplaza lo siguiente:

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/files:annotate" | Select-Object -Expand Content
    

    Reemplaza lo siguiente:

Python

Sigue estos pasos para usar el servicio de OCR desde una secuencia de comandos de Python y detectar texto en un archivo:

  1. Instala la versión más reciente de la biblioteca cliente de OCR.

  2. Configura las variables de entorno necesarias en una secuencia de comandos de Python.

  3. Autentica tu solicitud a la API.

  4. Agrega el siguiente código a la secuencia de comandos de Python que creaste:

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      input_config = {"content": "BASE64_ENCODED_FILE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single file. To annotate more
      # files, create a request element for each file and add it to
      # the array of requests
      req = {"input_config": input_config, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_file(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    Reemplaza lo siguiente:

    • ENDPOINT: Es el extremo de OCR que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.
    • BASE64_ENCODED_FILE: Es la representación en Base64 (cadena ASCII) del contenido del archivo. Esta cadena comienza con caracteres que se parecen a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: Es el tipo de detección de texto que necesitas del archivo. Los valores permitidos son TEXT_DETECTION o DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: el ID de tu proyecto
  5. Guarda la secuencia de comandos de Python.

  6. Ejecuta la secuencia de comandos de Python para detectar texto en el archivo:

    python SCRIPT_NAME
    

    Reemplaza SCRIPT_NAME por el nombre que le diste a tu secuencia de comandos de Python, como vision.py.