Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

O projeto implementa um pipeline automatizado para processamento de documentos PDF, utilizando serviços AWS e armazenamento PostgreSQL.

Notifications You must be signed in to change notification settings

tsffarias/DocStream

Repository files navigation

DocStream

DocStream é uma solução de engenharia de dados desenvolvida para automatizar a extração e o processamento de dados contidos em arquivos PDF. Este sistema elimina a necessidade de digitação manual, reduzindo custos e aumentando a eficiência operacional das empresas que lidam com grandes volumes de documentos PDF diariamente.


Este projeto automatiza a extração de dados de arquivos PDF, eliminando a necessidade de processos manuais de digitação de notas fiscais ou documentos semelhantes. Os arquivos são carregados em um bucket S3, uma fila SQS detecta novos uploads e um processo (executando em uma instância EC2 ou em outro servidor) extrai e insere os dados no PostgreSQL.

Principais Funcionalidades e Fluxo de Processamento

  1. Upload: O PDF é carregado no bucket S3.
  2. Notificação: O S3 envia um evento para o SQS, informando o nome e a extensão do arquivo.
  3. Consulta Regular: Verificação da fila SQS a cada 2 minutos por um processo dedicado (EC2 ou ambiente similar)
  4. Extração: Se houver mensagem na fila SQS, inicia a extração de dados (dois métodos que podemos escolher):
    • Extração de PDF de forma gráfica (por exemplo, via Camelot ou Tabula).
    • Extração de PDF de forma textual (via Regex ou PyPDF2).
  5. Armazenamento em PostgreSQL: Todos os dados extraídos são inseridos em uma base de dados relacional.
  6. Transformação e Carga: Os dados são transformados e gravados no PostgreSQL.


Tecnologias Utilizadas

PostgreSQL

  • Descrição: O PostgreSQL é um dos bancos de dados relacionais de código aberto mais robustos e amplamente adotados no mercado.
  • Uso no Projeto: Armazenamento principal dos dados extraídos, com suporte a alto volume de consultas analíticas.

AWS EC2

  • Descrição: Serviço de computação em nuvem que oferece servidores virtuais escaláveis.
  • Uso no Projeto: Hospeda o processo que verifica a fila SQS e executa as rotinas de extração de dados.

AWS S3

  • Descrição: Serviço de armazenamento de objetos altamente escalável.
  • Uso no Projeto: Armazena os PDFs enviados para posterior extração de dados.

AWS SQS

  • Descrição: Fila de mensagens totalmente gerenciada que desacopla sistemas e coordena fluxos de trabalho assíncronos.
  • Uso no Projeto: Detecta uploads de PDFs no S3 e notifica o processo de extração.

Streamlit

  • Descrição: Streamlit é uma biblioteca Python de código aberto que permite a criação de aplicativos web interativos de forma rápida e fácil. Utilizado principalmente para construir dashboards e interfaces de dados, o Streamlit é ideal para prototipagem rápida e visualização de dados sem a necessidade de conhecimentos avançados em desenvolvimento web.
  • Uso no Projeto: Utilizado para construir o frontend da aplicação, permitindo que os usuários façam o upload dos PDFs de forma interativa e visualizem os resultados diretamente na interface, por meio de um dashboard.

Dashboard Streamlit KPIs

Comando:

 streamlit run src/frontend/app.py 

DBT

  • Descrição: DBT (Data Build Tool) é uma ferramenta de transformação de dados que permite a construção de modelos SQL e a aplicação de boas práticas de desenvolvimento de software ao ETL.
  • Uso no Projeto: Utilizado para transformar os dados das camadas Bronze e Silver, preparando-os para a camada Gold, onde estarão prontos para consumo pelos analistas.

Requisitos

  • Python 3.x
  • Bibliotecas:
    • camelot-py ou tabula-py para extração de tabelas
    • PyPDF2 para extração de texto
    • boto3 para interagir com S3 e SQS
    • psycopg2 para conexão com PostgreSQL
  • Banco de Dados:
    • PostgreSQL

Como Usar

  1. Clone o Repositório

    git clone https://github.com/seu_usuario/pdf-data-extractor.git
    cd pdf-data-extractor
  2. Instale as Dependências

    pip install -r requirements.txt

    ou

    poetry shell
    poetry install
  3. Configure as Variáveis de Ambiente

    • Credenciais AWS:
      export AWS_ACCESS_KEY_ID=SEU_ACCESS_KEY
      export AWS_SECRET_ACCESS_KEY=SUA_SECRET_KEY
      export AWS_REGION=us-east-1
      export S3_BUCKET=nome-do-seu-bucket
      export SQS_QUEUE_URL=url-da-sua-fila
    • Banco de Dados:
      export DB_NAME=nome_do_banco
      export DB_USER=usuario
      export DB_PASSWORD=senha
      export DB_HOST=host_do_banco
      export DB_PORT=5432
  4. Execute o Processamento

    python ./src/__init__.py

    O script verificará a fila SQS, fará o download do PDF do S3 e executará as rotinas de extração. Caso encontre dados, insere-os no PostgreSQL.

  5. Execute o Dashboard Streamlit

    streamlit run src/frontend/app.py 
  6. Faça o upload dos pdfs contidos na pasta 'jornada' (caso queira fazer o upload dos 'redrex', basta alterar no arquivo src/init.py a variável rule_name para rule_name='redrex'):

    src/files/pdf/jornada/
  7. Execute o dbt para atualizar a tabela gold:

    cd src/dbt_dw/
    dbt debug
    dbt run

Contribuição

Contribuições são bem-vindas! Por favor, siga os passos:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

About

O projeto implementa um pipeline automatizado para processamento de documentos PDF, utilizando serviços AWS e armazenamento PostgreSQL.

Topics

Resources

Stars

Watchers

Forks

AltStyle によって変換されたページ (->オリジナル) /