Implemente um sistema de Information Extraction utilizando Python e a biblioteca re. O objetivo é automatizar a leitura de instrumentos particulares de acordo, identificando o tipo de template utilizado e extraindo dados críticos para o sistema de pagamentos da empresa. O processamento de documentos não estruturados é um pilar fundamental do NLP (Processamento de Linguagem Natural).
Materiais para você usar como base para o desenvolvimento
Estrutura, regras e requisitos do projeto
Utilizar Expressões Regulares (Regex) para identificar padrões específicos e extrair informações de um contrato em formato Markdown. O sistema deve ser capaz de distinguir entre modelos de contrato com base na sua estrutura.
Desenvolver um script que receba o texto do contrato, identifique se ele pertence ao Modelo Simples ou Modelo Completo e extraia as entidades (Nomes, Documentos e Valores) de forma estruturada (Dicionário ou JSON).
A empresa utiliza dois padrões de documentos que determinam o fluxo de automação:
Nota: A contagem das cláusulas é o primeiro passo da lógica, pois ela define a confiabilidade da extração das informações subsequentes.
A tabela abaixo descreve as informações que seu motor de Regex deve capturar:
| Atributo | Descrição | Regra de Negócio |
|---|---|---|
| Total de Cláusulas | Quantidade de seções "CLÁUSULA X" | Identificador de Template |
| Modelo de Template | Nome do modelo (Simples ou Completo) | Baseado no total de cláusulas |
| Dados do Cliente | Nome, RG e CPF | Extrair do parágrafo do DEVEDOR |
| Dados do Credor | Nome e CNPJ | Extrair do parágrafo do CREDOR |
| Valor Total | Valor total da dívida (R$) | Localizado na Cláusula Primeira |
| Valor da Parcela | Valor mensal fixo (R$) | Localizado na Cláusula Quarta |
| Data assinatura contrato | Data de assinatura do contrato | Localizado na Cláusula Segunda |
| Data primeiro pagamento | Data do primeiro pagamento | Localizado na Cláusula Terceira |
| Data vencimento primeira parcela | Data de vencimento da primeira parcela | Localizado na Cláusula Quarta |
.md fornecido.Modelo Simples.Modelo Completo.() para isolar nomes e números.re.IGNORECASE para garantir que variações de caixa não quebrem o código.000.000.000-00) e CNPJ (00.000.000/0000-00).float do Python (12450.50)..*? ou quantificadores opcionais).re.identificar_template(texto) que retorne o modelo baseado no número de cláusulas.{ "template": "Modelo Simples", "clausulas_identificadas": 13, "cliente": { "nome": "CARLOS EDUARDO DOS SANTOS", "rg": "12.345.678-X", "cpf": "456.789.123-00" }, "credor": { "nome": "SOLUCOES FINANCEIRAS ALPHA LTDA",
Após concluir o desafio, você deve enviar a URL do seu repositório no GitHub. O código deve conter o script Python e o arquivo de texto utilizado para o teste.
Feito com 💜 por Rocketseat 👋
Utilizar Expressões Regulares (Regex) para identificar padrões específicos e extrair informações de um contrato em formato Markdown. O sistema deve ser capaz de distinguir entre modelos de contrato com base na sua estrutura.
Desenvolver um script que receba o texto do contrato, identifique se ele pertence ao Modelo Simples ou Modelo Completo e extraia as entidades (Nomes, Documentos e Valores) de forma estruturada (Dicionário ou JSON).
A empresa utiliza dois padrões de documentos que determinam o fluxo de automação:
Nota: A contagem das cláusulas é o primeiro passo da lógica, pois ela define a confiabilidade da extração das informações subsequentes.
A tabela abaixo descreve as informações que seu motor de Regex deve capturar:
| Atributo | Descrição | Regra de Negócio |
|---|---|---|
| Total de Cláusulas | Quantidade de seções "CLÁUSULA X" | Identificador de Template |
| Modelo de Template | Nome do modelo (Simples ou Completo) | Baseado no total de cláusulas |
| Dados do Cliente | Nome, RG e CPF | Extrair do parágrafo do DEVEDOR |
| Dados do Credor | Nome e CNPJ | Extrair do parágrafo do CREDOR |
| Valor Total | Valor total da dívida (R$) | Localizado na Cláusula Primeira |
| Valor da Parcela | Valor mensal fixo (R$) | Localizado na Cláusula Quarta |
| Data assinatura contrato | Data de assinatura do contrato | Localizado na Cláusula Segunda |
| Data primeiro pagamento | Data do primeiro pagamento | Localizado na Cláusula Terceira |
| Data vencimento primeira parcela | Data de vencimento da primeira parcela | Localizado na Cláusula Quarta |
.md fornecido.Modelo Simples.Modelo Completo.() para isolar nomes e números.re.IGNORECASE para garantir que variações de caixa não quebrem o código.000.000.000-00) e CNPJ (00.000.000/0000-00).float do Python (12450.50)..*? ou quantificadores opcionais).re.identificar_template(texto) que retorne o modelo baseado no número de cláusulas.{ "template": "Modelo Simples", "clausulas_identificadas": 13, "cliente": { "nome": "CARLOS EDUARDO DOS SANTOS", "rg": "12.345.678-X", "cpf": "456.789.123-00" }, "credor": { "nome": "SOLUCOES FINANCEIRAS ALPHA LTDA",
Após concluir o desafio, você deve enviar a URL do seu repositório no GitHub. O código deve conter o script Python e o arquivo de texto utilizado para o teste.
Feito com 💜 por Rocketseat 👋
Use este checklist para ajudar a organizar a sua entrega
Confira os resultados esperados do projeto

Envie o projeto para ver a resolução
Ao enviar seu projeto, você poderá conferir os resultados esperados