1. Introdução
A Document AI é uma solução para compreensão de dados não estruturados, como documentos, e-mails e assim por diante, que facilita o entendimento, a análise e o consumo desses dados.
Ao usar o aprimoramento do treinamento no Document AI Workbench, é possível aumentar a acurácia do processamento de documentos fornecendo mais exemplos rotulados para tipos de documentos especializados e criando uma nova versão do modelo.
Neste laboratório, você vai criar um processador do analisador de faturas, configurar o processador para aprimoramento, rotular documentos de exemplo e aprimorar o processador.
O conjunto de dados de documentos usado neste laboratório consiste em faturas geradas aleatoriamente para uma empresa fictícia de encanamento.
Pré-requisitos
Este codelab se baseia no conteúdo apresentado em outros codelabs da Document AI.
Recomendamos que você conclua os codelabs a seguir antes de continuar.
- Reconhecimento óptico de caracteres (OCR) com a Document AI (Python)
- Análise de formulário com a Document AI (Python)
- Processadores especializados com a Document AI (Python)
- Gerenciamento de processadores da Document AI com Python
- Document AI: human in the loop
O que você vai aprender
- Configure o treinamento incremental para um processador do analisador de faturas.
- Como rotular os dados de treinamento da Document AI usando a ferramenta de anotação.
- Como treinar uma nova versão do modelo.
- Como avaliar a acurácia da nova versão do modelo.
O que é necessário
2. Etapas da configuração
Este codelab parte do princípio de que você concluiu as etapas de configuração da Document AI listadas no Codelab básico.
Conclua as etapas a seguir antes de continuar:
3. Crie um processador
Primeiro, crie um processador de análise de faturas para usar neste laboratório.
- No console, navegue até a página de visão geral da Document AI.

- Clique em Criar processador, role para baixo até Especializado (ou digite "Analisador de faturas" na barra de pesquisa) e selecione Analisador de faturas.

- Nomeie como
codelab-invoice-uptrainingou de outra maneira, desde que você se lembre. Em seguida, selecione a região mais próxima na lista.

- Clique em Criar para que o processador seja criado. Assim, você exibe a página de aspectos gerais do processador.

4. Crie um conjunto de dados
Para treinar o processador, vamos criar um conjunto de dados de treinamento e teste para ajudar o processador a identificar as entidades que queremos extrair.
Crie um novo bucket no Cloud Storage para armazenar o conjunto de dados. Observação: não deve ser o mesmo bucket em que seus documentos estão armazenados.
- Abra o Cloud Shell e execute os comandos a seguir para criar um bucket. Como alternativa, crie um novo bucket no console do Cloud. Salve o nome desse bucket, porque você vai precisar dele depois.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- Acesse a guia Conjunto de dados e clique em Criar conjunto de dados.

- Cole o nome do bucket que você criou na primeira etapa no campo Caminho de destino. (Não use
gs://)

- Aguarde a criação do conjunto de dados para ser direcionado para a página de gerenciamento do conjunto de dados.

5. Importe um documento de teste
Agora, importe um PDF de fatura de amostra para o conjunto de dados.
- Clique em Importar documentos.

- Há um PDF de amostra para você usar neste laboratório. Copie e cole o link a seguir na caixa Caminho de origem. Deixe a "Divisão de dados" como "Não atribuída" por enquanto. Clique em Importar.
cloud-samples-data/documentai/codelabs/uptraining/pdfs

- Aguarde a importação do documento. Isso levou menos de 1 minuto nos testes.

- Quando a importação é concluída, você vê o documento na interface de gerenciamento do conjunto de dados. Clique nele para acessar o console de rotulagem.

6. Rotule o documento de teste
Agora vamos identificar elementos do texto e rótulos das entidades que queremos extrair. Esses rótulos são usados para treinar o modelo para analisar essa estrutura de documento específica e identificar os tipos corretos.
- Agora você está no console de rotulagem, que vai ser parecido com isto.

- Clique na ferramenta "Selecionar texto", destaque o texto "McWilliam Piping International Piping Company" e atribua o rótulo
supplier_name. É possível usar o filtro de texto para pesquisar nomes de rótulos.

- Destaque o texto "14368 Pipeline Ave Chino, CA 91710" e atribua o rótulo
supplier_address.

- Destaque o texto "10001" e atribua o rótulo
invoice_id.

- Destaque o texto "2020-01-02" e atribua o rótulo
due_date.

- Mude para a ferramenta "Caixa delimitadora". Destaque o texto "Knuckle Couplers" e atribua o rótulo
line_item/description.

- Destaque o texto "9" e atribua o rótulo
line_item/quantity.

- Destaque o texto "74,43" e atribua o rótulo
line_item/unit_price.

- Destaque o texto "669.87" e atribua o rótulo
line_item/amount.

- Repita as quatro etapas anteriores para os próximos dois itens de linha. Ele vai ficar assim quando concluído.

- Destaque o texto "1.419,57" (ao lado de "Subtotal") e atribua o rótulo
net_amount.

- Destaque o texto "113,57" (ao lado de "Tributo") e atribua o rótulo
total_tax_amount.

- Destaque o texto "1.533,14" (ao lado de "Total") e atribua o rótulo
total_amount.

- Destaque um dos caracteres "$" e atribua o rótulo
currency.

- Quando concluído, o documento rotulado deve ficar assim. Clique na caixa delimitadora do documento ou no nome/valor do rótulo no menu lateral esquerdo para ajustar esses rótulos. Clique em Salvar quando terminar de rotular.

- Confira a lista completa de rótulos e valores
Nome do rótulo | Texto |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| Knuckle Couplers |
| 9 |
| 74,43 |
| 669.87 |
| Tubo de PVC 12 polegadas |
| 7 |
| 15.90 |
| 111.30 |
| Tubo de cobre |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| $ |
7. Atribua o documento ao conjunto de treinamento
Você está de volta ao console de gerenciamento do conjunto de dados. Observe que o número de documentos com e sem rótulos mudou, assim como o número de rótulos ativos.

- É preciso atribuir esse documento ao conjunto de treinamento ou teste. Clique no documento.

- Clique em Atribuir ao conjunto e em Treinamento.

- Observe que os números da Divisão de dados mudaram.

8. Importe os dados pré-rotulados
O treinamento do Document AI requer no mínimo 10 documentos nos conjuntos de treinamento e teste, junto com 10 instâncias de cada rótulo em cada conjunto.
Recomendamos que cada conjunto tenha pelo menos 50 documentos e 50 instâncias de cada rótulo, para melhor desempenho. Mais dados de treinamento geralmente significam maior acurácia.
Rotular manualmente 100 documentos vai demorar muito tempo, então você pode importar alguns documentos pré-rotulados para este laboratório.
É possível importar arquivos de documentos pré-rotulados no formato Document.json. Eles podem ser resultantes da chamada de um processador e da verificação da acurácia usando Human in the loop (HITL).
- Clique em Importar documentos.

- Copie e cole o caminho do Cloud Storage a seguir e atribua-o ao conjunto de Treinamento.
cloud-samples-data/documentai/codelabs/uptraining/training
- Clique em Adicionar outro bucket. Depois, copie e cole o caminho do Cloud Storage a seguir e atribua-o ao conjunto de Teste.
cloud-samples-data/documentai/codelabs/uptraining/test

- Clique em Importar e aguarde os documentos. Isso vai demorar mais do que da última vez porque há mais documentos para processar. Nos testes, levou cerca de 6 minutos. Você pode sair desta página e continuar mais tarde.

- Depois de concluído, você vê os documentos na página de gerenciamento do conjunto de dados.

9. Editar rótulos
Os documentos de exemplo que estamos usando neste exemplo não contêm todos os rótulos compatíveis com o analisador de faturas. É necessário marcar como inativos os rótulos que não serão usados antes do treinamento. Você também pode seguir etapas semelhantes para adicionar um rótulo personalizado antes do treinamento.
- Clique em Gerenciar rótulos no canto inferior esquerdo.

- Agora você deve estar no console de gerenciamento de rótulos.

- Use as caixas de seleção e os botões Desativar/Ativar para marcar APENAS os seguintes marcadores como Ativados.
currencydue_dateinvoice_idline_item/amountline_item/descriptionline_item/quantityline_item/unit_pricenet_amountsupplier_addresssupplier_nametotal_amounttotal_tax_amount
- O console vai ficar assim quando for concluído. Clique em Salvar quando terminar.

- Clique na seta para retornar ao console de gerenciamento do conjunto de dados. Observe que os rótulos com zero instâncias foram marcados como inativos.

10. Opcional: rotule automaticamente documentos recém-importados
Ao importar documentos sem rótulos para um processador com uma versão de processador implantada, é possível usar a rotulação automática para economizar tempo na identificação.
- Na página Treinar, clique em Importar documentos.
- Copie e cole o caminho a seguir. Esse diretório contém cinco PDFs sem marcador. Na lista suspensa Divisão de dados, selecione Treinamento.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled - Na seção Rotulagem automática, marque a caixa de seleção Importar com a rotulagem automática.
- Selecione uma versão do processador atual para rotular os documentos.
- Por exemplo:
pretrained-invoice-v1.3-2022-07-15
- Clique em Importar e aguarde os documentos. Você pode sair desta página e continuar mais tarde.
- Depois de importados, os documentos aparecem na página Treinar, na seção Rotulados automaticamente.
- Não é possível usar documentos com rótulos automáticos para treinamento ou teste sem marcá-los como rotulados. Acesse a seção Rotulados automaticamente para conferir os documentos com rótulos automáticos.
- Selecione o primeiro documento para acessar o console de rotulagem.
- Verifique se os rótulos, as caixas delimitadoras e os valores estão corretos. Rotule todos os valores que foram omitidos.
- Selecione Marcar como rotulado quando terminar.
- Repita a verificação de cada documento com rótulo automático e volte à página Treinar para usar os dados para o treinamento.
11. Aprimorar o treinamento do modelo
Agora está tudo pronto para treinar o analisador de faturas.
- Clique em Treinar nova versão

- Dê à versão um nome que você vai lembrar, como
codelab-uptraining-test-1. A versão de base é a versão do modelo em que a nova versão será criada. Se você estiver usando um novo processador, a única opção será Google Pretrained Next com treinamento contínuo.

- (Opcional) Também é possível selecionar Exibir estatísticas de rótulos para conferir métricas sobre os rótulos do conjunto de dados.

- Clique em Iniciar treinamento para começar o processo de treinamento. Você será redirecionado para a página de gerenciamento do conjunto de dados. Confira o status do treinamento no lado direito. O treinamento leva algumas horas para ser concluído. Você pode sair desta página e continuar mais tarde.

- Clique no nome da versão para acessar a página Gerenciar versões, que mostra o ID da versão e o status atual do job de treinamento.

12. Teste a nova versão do modelo
Após a conclusão do job de treinamento (nos testes, levou cerca de 1 hora), é possível testar a nova versão do modelo e começar a usá-la para previsões.
- Acesse a página Gerenciar versões. Aqui é possível conferir o status atual e a pontuação F1.

- É preciso implantar essa versão do modelo antes que ela possa ser usada. Clique nos pontos verticais do lado direito e selecione Implantar versão.

- Selecione Implantar na janela pop-up e aguarde a implantação da versão. Esse processo leva alguns minutos. Depois da implantação, é possível definir essa versão como a padrão.

- Depois da conclusão da implantação, acesse a guia Avaliar. Em seguida, clique no menu suspenso "Versão" e selecione a versão recém-criada.

- Nessa página, você pode ver as métricas de avaliação, incluindo a pontuação F1, Precisão e Recall para o documento completo, bem como rótulos individuais. Leia mais sobre essas métricas na documentação do AutoML.
- Faça o download do arquivo PDF pelo link abaixo. É um documento de exemplo que não foi incluído no conjunto de treinamento nem de teste.
- Clique em Fazer upload de documento de teste e selecione o arquivo PDF.

- As entidades extraídas vão ficar assim.

13. Conclusão
Parabéns! Você usou a Document AI para aprimorar o treinamento de um analisador de faturas. Agora você pode usar esse processador para analisar faturas da mesma maneira que faria com qualquer processador especializado.
Consulte o Codelab de processadores especializados para analisar como lidar com a resposta de processamento.
Limpeza
Para evitar cobranças dos recursos usados neste tutorial na conta do Google Cloud, siga estas etapas:
- No console do Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto e clique em "Excluir".
- Na caixa de diálogo, digite o ID do projeto e clique em "Encerrar" para excluí-lo.
Recursos
- Documentação do Document AI Workbench
- O futuro dos documentos — Playlist do YouTube (em inglês)
- Documentação da Document AI
- Biblioteca de cliente Python da Document AI
- Amostras da Document AI
Licença
Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.