Processar documentos com a função ML.PROCESS_DOCUMENT
Neste documento, descrevemos como usar a função ML.PROCESS_DOCUMENT
com um modelo remoto para extrair insights úteis de documentos em um tabela de objetos.
Locais suportados
É necessário criar o modelo remoto usado neste procedimento na multirregião US
ou EU
. Execute a função ML.PROCESS_DOCUMENT
na mesma região que o modelo remoto.
Funções exigidas
Para criar um modelo remoto e processar documentos, você precisa das seguintes funções do Identity and Access Management (IAM) no nível do projeto:
- Criar um processador de documentos: Editor da Document AI
(
roles/documentai.editor
) - Criar e usar conjuntos de dados, tabelas e modelos do BigQuery: Editor de dados do BigQuery (
roles/bigquery.dataEditor
) Criar, delegar e usar conexões do BigQuery: Administrador de conexões do BigQuery (
roles/bigquery.connectionsAdmin
)Se você não tiver uma conexão padrão configurada, crie e defina uma como parte da execução da instrução
CREATE MODEL
. Para isso, você precisa ter a função de administrador do BigQuery (roles/bigquery.admin
) no seu projeto. Para mais informações, consulte Configurar a conexão padrão.Conceder permissões à conta de serviço da conexão: administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
)Criar jobs do BigQuery: usuário de jobs do BigQuery (
roles/bigquery.jobUser
)
Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
- Criar um conjunto de dados:
bigquery.datasets.create
- Criar, delegar e usar uma conexão:
bigquery.connections.*
- Defina as permissões da conta de serviço:
resourcemanager.projects.getIamPolicy
eresourcemanager.projects.setIamPolicy
- Crie um modelo e execute a inferência:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
- Crie uma tabela de objetos:
bigquery.tables.create
ebigquery.tables.update
- Crie um processador de documentos:
documentai.processors.create
documentai.processors.update
documentai.processors.delete
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Document AI APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Document AI APIs.
No console Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em
Conferir ações > Criar conjunto de dados.Na página Criar conjunto de dados, faça o seguinte:
Em ID do conjunto de dados, digite um nome para o conjunto de dados.
Em Tipo de local, selecione um local para o conjunto de dados.
Clique em Criar conjunto de dados.
Acessar a página do BigQuery.
No painel Explorer, clique em
Adicionar dados:A caixa de diálogo Adicionar dados é aberta.
No painel Filtrar por, na seção Tipo de fonte de dados, selecione Aplicativos comerciais.
Como alternativa, no campo Pesquisar fontes de dados, insira
Vertex AI
.Na seção Fontes de dados em destaque, clique em Vertex AI.
Clique no card da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (recurso do Cloud).
No campo ID da conexão, insira um nome para a conexão.
Clique em Criar conexão.
Clique em Ir para conexão.
No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.
Em um ambiente de linha de comando, crie uma conexão:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
O parâmetro
--project_id
substitui o projeto padrão.Substitua:
REGION
: sua região de conexãoPROJECT_ID
: o ID do Google Cloud projetoCONNECTION_ID
: um ID para sua conexão
Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.
Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupere e copie o ID da conta de serviço para uso em uma etapa posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
O resultado será assim:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
- Inicie o Cloud Shell.
-
Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Google Cloud projeto para ver os resultados. No console Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.
Acesse a página IAM e administrador.
Clique em
Conceder acesso.A caixa de diálogo Adicionar principais é aberta.
No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar um papel, selecione Document AI e, em seguida, Leitor da Document AI.
Clique em Adicionar outro papel.
No campo Selecionar papel, escolha Cloud Storage e, em seguida, Visualizador de objetos do Storage.
Clique em Salvar.
PROJECT_NUMBER
: o número do projeto.MEMBER
: o ID da conta de serviço que você copiou anteriormente.PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados para conter o modelo.MODEL_NAME
: o nome do modeloREGION
: a região usada pela conexão.CONNECTION_ID
: o ID da conexão. Por exemplo,myconnection
.Quando você visualiza os detalhes da conexão no console do Google Cloud , o ID da conexão é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo,
projects/myproject/locations/connection_location/connections/myconnection
.PROCESSOR_ID
: o ID do processador de documentos. Para encontrar esse valor, confira os detalhes do processador e observe a linha ID na seção Informações básicas.PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloOBJECT_TABLE_NAME
: o nome da tabela de objetos que contém os URIs dos documentos a serem processados.PROCESS_OPTIONS
: a configuração JSON que especifica como processar documentos. Por exemplo, use isso para especificar o fragmentação de documentos para o analisador de layout.PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloOBJECT_TABLE_NAME
: o nome da tabela de objetos que contém os URIs dos documentos a serem processados.FILTERS
: condições para filtrar os documentos que você quer processar nas colunas da tabela de objetos.NUM_DOCUMENTS
: o número máximo de documentos que você quer processar.PROCESS_OPTIONS
: a configuração JSON que define a configuração, como a configuração de divisão em partes para o analisador de layout.- Para informações sobre inferência de modelo no BigQuery ML, consulte Visão geral de inferência de modelo.
- Para informações sobre as funções e instruções SQL compatíveis com cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.
Criar um processador
Crie um processador na Document AI para processar os documentos. O processador precisa ser de um tipo compatível.
crie um conjunto de dados
É necessário criar o conjunto de dados, a conexão e o processador de documentos na mesma região.
Crie um conjunto de dados do BigQuery para conter seus recursos:
Console
bq
Crie uma conexão
Pule esta etapa se você tiver uma conexão padrão configurada ou a função de administrador do BigQuery.
Crie uma Conexão de recursos do Cloud para o modelo remoto usar e tenha acesso à conta de serviço da conexão. Crie a conexão no mesmo local do conjunto de dados criado na etapa anterior.
Selecione uma das seguintes opções:
Console
bq
Terraform
Use o
recurso
google_bigquery_connection
.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
O exemplo a seguir cria uma conexão de recurso do Google Cloud chamada
my_cloud_resource_connection
na região US
:
Para aplicar a configuração do Terraform em um projeto Google Cloud , siga as etapas nas seções a seguir.
Preparar o Cloud Shell
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
Aplique as alterações
Conceder acesso à conta de serviço
Selecione uma das seguintes opções:
Console
gcloud
Use o comando gcloud projects add-iam-policy-binding
(em inglês).
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/documentai.viewer' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
Substitua:
Deixar de conceder a permissão resulta em um erro Permission denied
.
Criar um modelo
Crie um modelo remoto com um REMOTE_SERVICE_TYPE
de CLOUD_AI_DOCUMENT_V1
:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( REMOTE_SERVICE_TYPE = 'CLOUD_AI_DOCUMENT_V1', DOCUMENT_PROCESSOR = 'PROCESSOR_ID' );
Substitua:
Para ver as colunas de saída do modelo, clique em Acessar modelo no resultado da consulta após a criação do modelo. As colunas de saída são mostradas na seção Rótulos da guia Esquema.
Criar uma tabela de objetos
Crie uma tabela de objetos sobre um conjunto de documentos no Cloud Storage. Os documentos na tabela de objetos precisam ser de um tipo compatível.
Processar documentos
Processe todos os documentos com o ML.PROCESS_DOCUMENT
:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME` [, PROCESS_OPTIONS => ( JSON 'PROCESS_OPTIONS')] );
Substitua:
Outra opção é processar alguns documentos com o ML.PROCESS_DOCUMENT
:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, (SELECT * FROM `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME` WHERE FILTERS LIMIT NUM_DOCUMENTS ) [, PROCESS_OPTIONS => ( JSON 'PROCESS_OPTIONS')] );
Substitua:
Exemplos
Exemplo 1
O exemplo a seguir usa o analisador de despesas para processar os documentos representados pela tabela documents
:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `myproject.mydataset.expense_parser`, TABLE `myproject.mydataset.documents` );
Essa consulta retorna os relatórios de despesas analisadas, incluindo a moeda, o valor total, a data do recebimento e os itens de linha nos relatórios de despesas. A coluna ml_process_document_result
contém a saída bruta do analisador de despesas, e a coluna ml_process_document_status
contém todos os erros retornados pelo processamento de documentos.
Exemplo 2
O exemplo a seguir mostra como filtrar a tabela de objetos para escolher quais documentos processar e gravar os resultados em uma nova tabela:
CREATE TABLE `myproject.mydataset.expense_details` AS SELECT uri, content_type, receipt_date, purchase_time, total_amount, currency FROM ML.PROCESS_DOCUMENT( MODEL `myproject.mydataset.expense_parser`, (SELECT * FROM `myproject.mydataset.expense_reports` WHERE uri LIKE '%restaurant%'));