Función ML.PROCESS_DOCUMENT

En este documento, se describe la función ML.PROCESS_DOCUMENT, que te permite procesar documentos no estructurados desde una tabla de objetos.

Sintaxis

ML.PROCESS_DOCUMENT(
  MODEL `project_id.dataset.model_name`,
  TABLE `project_id.dataset.object_table`
)

Argumentos

ML.PROCESS_DOCUMENT toma los siguientes argumentos:

  • project_id: ID del proyecto

  • dataset: Es el conjunto de datos de BigQuery que contiene el modelo.

  • model: Es el nombre de un modelo remoto con un REMOTE_SERVICE_TYPE de CLOUD_AI_DOCUMENT_V1.

  • object_table: Es el nombre de la tabla de objetos que contiene los URI de los documentos

    Los documentos de la tabla de objeto deben ser de un tipo compatible. Se muestra un error para cualquier fila que contiene un documento de un tipo no compatible.

Salida

ML.PROCESS_DOCUMENT muestra las siguientes columnas:

  • ml_process_document_result: Un valor JSON que contiene las entidades que muestra la API de Document AI.
  • ml_process_document_result_status: un valor STRING que contiene el estado de respuesta de la API para la fila correspondiente. Este valor está vacío si la operación se realizó con éxito.
  • Los campos que muestra el procesador especificado en el modelo.
  • Las columnas de la tabla de objetos

Cuotas

Consulta Cuotas y límites de las funciones del servicio de Cloud AI.

Ubicaciones

ML.PROCESS_DOCUMENT debe ejecutarse en la misma región que el modelo remoto al que hace referencia la función. Solo puedes crear modelos basados en Document AI en las multirregiones US y EU.

Limitaciones

La función no puede procesar documentos con más de 15 páginas. Cualquier fila que contenga ese archivo muestra un error.

Ejemplo

En el siguiente ejemplo, se usa el analizador de facturas para procesar los documentos representados por la tabla documents.

Crea el modelo:

# Create model
CREATE OR REPLACE MODEL
`myproject.mydataset.invoice_parser`
REMOTE WITH CONNECTION `myproject.myregion.myconnection`
OPTIONS (remote_service_type = 'cloud_ai_document_v1',
document_processor='projects/project_number/locations/processor_location/processors/processor_id/processorVersions/version_id');

Procesa los documentos:

SELECT *
FROM ML.PROCESS_DOCUMENT(
  MODEL `myproject.mydataset.invoice_parser`,
  TABLE `myproject.mydataset.documents`
);

El resultado es similar al siguiente:

ml_process_document_result ml_process_document_status invoice_type currency
{"entities":[{"confidence":1,"id":"0","mentionText":"10 105,93 10,59","pageAnchor":{"pageRefs":[{"boundingPoly":{"normalizedVertices":[{"x":0.40452111,"y":0.67199326},{"x":0.74776918,"y":0.67199326},{"x":0.74776918,"y":0.68208581},{"x":0.40452111,"y":0.68208581}]}}]},"properties":[{"confidence":0.66... USD

¿Qué sigue?