Evite Tarefas Repetitivas!

Automatizando Planos de Voo da Força Aérea Brasileira

Bruno Brasil Faceira
5 min readMar 9, 2021

É comum que em nossa rotina tenhamos tarefas que sejam repetitivas. Dependendo do grau de importância dessas atividades e/ou duração para concluí-las, pode ser demandado, do responsável, uma alta carga mental e até mesmo física.

Hoje em dia, é difícil encontrar um profissional que não passe boa parte de toda a sua jornada de trabalho sentado na frente de um computador, preenchendo relatórios e gerenciando planilhas.

Após repetir o mesmo processo diversas vezes, é normal que ao final, nossa mente esteja esgotada a ponto de errar algo considerado relativamente fácil.

Além do cansaço mental, o fato de ficar horas sentado pode causar sobrecarga do fluxo gastrointestinal, sobrecarga do fluxo sanguíneo e lesão por esforço repetitivo.

Dentro do meu contexto, como piloto da Força Aérea, trouxe a solução de uma tarefa repetitiva, de grande importância que por vezes é maçante: preencher planos de voo.

Automatizando Planos de Voo

Já imaginou a seguinte situação:

Em uma evacuação aeromédica o piloto coloca o horário errado de decolagem no seu plano e atrasa o voo de um paciente em estado grave.

A situação é considerada absurda, mas diante do grau de responsabilidade e estresse natural da missão, será que seria possível o erro do piloto ao preencher o plano de voo? E se ele estivesse sobrecarregado no momento, cansado de outras missões? E se o plano de voo fosse extenso e ele já tivesse preenchido diversos outros?

Existem fatores externos que aumentam a chance do erro humano. Uma forma de lidar com isso é a automatização de tarefas.

Para iniciar nosso projeto irei apresentar duas bibliotecas da linguagem em Python.

  • Pdfpumbler
  • Openpyxl

Basicamente, Pdfpumbler permite obter informações detalhadas sobre cada caractere de texto e extrair tabelas de arquivos pdf. Já o Openpyxl, permite ler e escrever no excel.

O objetivo desse artigo é extrair dados de uma missão e preencher um plano de voo automaticamente.

Extraindo dados de um PDF

Devido ao sigilo da atividade de natureza militar foi criada uma sequência extensa de uma missão fictícia.

Para entender os dados:

  • DEP -> Departure
  • ETA -> Estimated time of arrival
  • ARR -> Arrival
  • TEV -> Tempo estimado de voo
  • ALT -> Alternativa
  • CMB -> Combustível
  • DISP -> Disponibilidade

*Nos campos DEP e ARR o nome das localidades estão designadas pelas suas siglas ICAO.

Seria exaustivo preencher um plano de voo para cada rota. Então iremos utilizar a biblioteca Pdfplumber para extrair essas rotas do pdf. Ao utilizar .find_tables e .extract() podemos extrair a tabela do pdf e criar um dataframe.

# Instalando pdfpumbler
!pip install pdfplumber -q
# Importando bibliotecas
import pdfplumber
import pandas as pd
# Extraindo dados do PDF
pln = pdfplumber.open("/content/arquivo.pdf")
table = pln.pages[0].find_tables()[2].extract()
# Criando dataframe a partir dos dados do pdf
df = pd.DataFrame(data = table[1:], columns = table[0])

Com poucas linhas de códigos as informações do pdf já foram extraídas e foi criado um dataframe chamado df

Temos quase todos os dados, ficou faltando somente autonomia, que basicamente é dividir a quantidade combustível pelo consumo/hora.

# Criando a coluna autonomia
import datetime
autonomia = []for i in range(df.shape[0]): time = float(df['CMB'][i])/700
hora = str(datetime.timedelta(hours=time)).rsplit(':',1)[0]
autonomia.append(hora)df['Autonomia']= autonomia

Nosso dataframe final.

Preenchendo Formulário no Excel

Para exemplificar o preenchimento do plano de voo, foi criado um formulário no excel.

Com todos os dados para o preenchimento do plano, vamos iniciar a manipulação dos dados no excel com Openpyxl.

# Importando biblioteca para trabalhar no excel
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
# Carregando arquivo
wb = load_workbook('/content/planodevoo.xlsx')
# Selecionando planilha
plano = wb['pln']
# Unzip de assinaturas para inserir no excel
!unzip /content/assinatura.zip
# Preenchendo o Plano de voo no excel
for i in range(df.shape[0]):
plano['B8'] = df['DATA'][i]
plano['C8'] = "Bruno Brasil"
plano['B11'] = df['HORA (Z)'][i]
plano['C11'] = df['DEP'][i]
plano['B13'] = df['ARR'][i]
plano['C13'] = df['TEV'][i]
plano['E13'] = df['ALT'][i]
plano['H13'] = df['Autonomia'][i]
# Nominando o worksheet
plano.title = "Etapa"+str(i+1)
# Copiando worksheet
wb.copy_worksheet(plano)
# Ativando worksheet e inserindo assinatura
wb.active = (i+1)
wb.active.add_image(Image('assinatura'+str(i+1)+'.png'), 'I8')
# Removendo modelo e salvando o arquivo final
wb.remove(plano)
wb.save('plano.xlsx')

Para cada célula do excel que devia ser preenchida, foi feito uma manipulação do dado extraído do PDF e inserido na célula correspondente do formulário.

DICA: Às vezes o excesso de automatização pode te trair. A função input() poderia ser utilizado para alguns casos que não são tão repetitivos, como o campo "Rota".

Um importante detalhe é que o Openpyxl não copia as imagens quando gera novas planilhas e também não é possível inserir a imagem com o mesmo nome. Por isso foram zipadas 22 assinaturas com nomes diferentes.

Resultado final:

Agora é só imprimir e enviar os planos. Demonstração na prática de um trabalho cansativo e com grandes possibilidades de erro feito em minutos.

Conclusão

Esse foi um exemplo curto que trouxe do meu dia-a-dia para mostrar que automatizar tarefas repetitivas é fundamental para evitar erros devido à fadiga humana.

Ser capaz de ganhar tempo para empresa e aumentar a eficiência do processo administrativo é essencial para se destacar profissionalmente.

Recomendo o livro “Automate the Boring Stuff with Python, 2nd Edition: Practical Programming for Total Beginners” , por Al Sweigart, livro de fácil entendimento mesmo para quem nunca programou.

Segue o link do Linkedin para demais interações ou dúvidas do assunto e, o Github para quem desejar visualizar os códigos utilizados.

Linkedin: https://www.linkedin.com/in/bruno-brasil-8a34101b6/

Github: https://github.com/brunobf09

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Bruno Brasil Faceira
Bruno Brasil Faceira

Written by Bruno Brasil Faceira

Pilot & Operations Analyst at Brazilian Air Force.

No responses yet

Write a response