Sobre este codelab
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 treinamento por meio do Document AI Workbench, é possível alcançar maior acurácia no processamento de documentos, fornecendo exemplos rotulados adicionais para Tipos de documentos especializados e criando uma nova versão de modelo.
Neste laboratório, você vai criar um processador analisador de faturas, configurar o processador para treinamento aprimorado, rotular documentos de exemplo e treinar o processador.
O conjunto de dados do documento usado neste laboratório consiste em faturas geradas aleatoriamente para uma empresa de tubulação fictícia.
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
- Configurar o treinamento aprimorado 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, você precisa criar um processador analisador 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 fatura" na barra de pesquisa) e selecione Analisador de fatura.
- Nomeie como
codelab-invoice-uptraining
ou de outra maneira, desde que você se lembre. Em seguida, selecione a região mais próxima na lista.
- Clique em Criar para criar o processador. 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, vamos importar o PDF de uma 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 for concluída, você verá 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ê deve estar no console de rotulagem, que será algo parecido com isto.
- Clique em "Selecionar texto" e destacar o texto "McWilliam Piping International Piping Company" e atribuir 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 atribuir o rótulo
supplier_address
.
- Destaque o texto "10001". e atribuir o rótulo
invoice_id
.
- Destaque o texto "2020-01-02". e atribuir o rótulo
due_date
.
- Mude para a "Caixa delimitadora" . Destaque o texto "Acopladores articulados". e atribuir o rótulo
line_item/description
.
- Destaque o texto "9". e atribuir o rótulo
line_item/quantity
.
- Destaque o texto "74,43". e atribuir o rótulo
line_item/unit_price
.
- Destaque o texto "669,87". e atribuir o rótulo
line_item/amount
.
- Repita as quatro etapas anteriores para os próximos dois itens de linha. Ele vai ficar assim quando for concluído.
- Destaque o texto "1.419,57". (ao lado de Subtotal) e atribua o marcador
net_amount
.
- Destaque o texto "113,57". (ao lado de Taxa) 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 atribuir 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.
- Veja 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, bem 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 seguida, clique 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, por isso 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 que estamos usando neste exemplo não contêm todos os rótulos aceitos pelo analisador de faturas. Antes do treinamento, é necessário marcar os rótulos que não estamos usando como inativos. 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 Ativado.
currency
due_date
invoice_id
line_item/amount
line_item/description
line_item/quantity
line_item/unit_price
net_amount
supplier_address
supplier_name
total_amount
total_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 0 instância 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. Treine o modelo
Agora, estamos prontos para começar a treinar nosso 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 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 deve ser Google Pretrained Next with Uptraining
- (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. Este é um documento de amostra 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 corretamente a Document AI para treinar um analisador de faturas. Agora você pode usar esse processador para analisar faturas da mesma forma 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.