Aplicativo que monta as evidências fotográficas de superação de apontamentos rodoviários direto no PowerPoint de prestação de contas. Feito para a equipe de engenharia que responde a órgão regulador dentro de prazo contratual.
A cada ciclo de fiscalização, dezenas de apontamentos precisam voltar ao órgão regulador com foto do antes, do serviço executado e do depois, cada uma recortada e posicionada na mesma coordenada do slide. Feito à mão no PowerPoint, cada apontamento levava minutos de arrastar, redimensionar e alinhar, e bastava um slide fora do padrão para a evidência ser questionada e o prazo apertar.
- Abre o PPTX de apontamentos e navega slide a slide, com miniatura de cada um
- Três zonas de evidência por slide, com posição e tamanho fixos em EMU, então todo slide sai no mesmo alinhamento
- Aceita foto por arrastar e soltar, por Ctrl+V da área de transferência ou por seleção de arquivo
- Quando não existe foto, insere no lugar uma caixa de observação padronizada, em vez de deixar o espaço vazio
- Caixa de descrição geral opcional, que reduz as fotos automaticamente para abrir espaço sem quebrar o layout
- Lê o que já está no slide e permite trocar ou apagar evidência inserida antes
- Salva no próprio arquivo e avisa de forma clara quando o PPTX está aberto no PowerPoint, em vez de falhar em silêncio
![]() |
![]() |
As três imagens acima são placeholders. A lista dos prints que faltam está no fim deste arquivo.
| Escolha | Por que |
|---|---|
python-pptx |
Edita o PPTX original sem converter nada e sem depender do PowerPoint instalado na máquina |
| Posicionamento em EMU | As zonas são coordenadas absolutas da unidade interna do Office, o que garante que todo slide saia idêntico, independente de quem preencheu |
Shapes nomeados (Evidencia 1, ObsEvidencia 2, DescricaoGeral) |
O aplicativo reconhece o que ele mesmo inseriu e consegue reabrir, trocar ou remover sem tocar no resto do slide |
Flask em 127.0.0.1 com interface no navegador |
Roda offline, na máquina do usuário, sem servidor, sem banco e sem upload de arquivo da empresa para lugar nenhum |
Pillow para clipboard e miniatura |
Colar com Ctrl+V funciona mesmo sem permissão de área de transferência do navegador, porque quem lê o clipboard é o backend |
| Sem persistência própria | A única fonte da verdade é o próprio PPTX. Não existe banco paralelo para desencontrar do arquivo entregue |
| Duas interfaces no mesmo repositório | app.py serve a versão web local, e inserir_evidencias_artesp.pyw é a versão desktop em Tkinter, para quem prefere janela nativa |
| Indicador | Número |
|---|---|
| Apontamentos tratados por ciclo | [PREENCHER] |
| Tempo por apontamento antes da ferramenta | [PREENCHER] minutos |
| Tempo por apontamento com a ferramenta | [PREENCHER] minutos |
| Horas economizadas por ciclo de fiscalização | [PREENCHER] |
| Slides fora de padrão devolvidos após a adoção | [PREENCHER] |
pip install -r requirements.txt
python app.pyO navegador abre em http://localhost:5075 já com o modelo fictício de
dados-exemplo/ carregado. Para usar outro arquivo, defina ARTESP_PPTX ou
clique em selecionar arquivo na interface. Para a versão desktop, rode
python inserir_evidencias_artesp.pyw.
evidencias-artesp/
├── app.py Backend Flask e API de leitura e escrita do PPTX
├── evidencias_artesp.html Interface web (arrastar e soltar, Ctrl+V, zonas)
├── inserir_evidencias_artesp.pyw Versão desktop em Tkinter, mesma lógica
├── iniciar.bat Atalho de execução no Windows
├── requirements.txt
├── dados-exemplo/ PPTX e fotos fictícios para testar sem dado real
└── docs/
└── img/ Capturas de tela
docs/img/01-tela-principal.png: janela aberta com omodelo-apontamentos.pptxcarregado, mostrando a miniatura do apontamento e as três zonas vazias.docs/img/02-zonas-preenchidas.png: duas zonas com foto e uma com caixa de observação, antes de salvar.docs/img/03-slide-gerado.png: o slide já salvo, aberto no PowerPoint, com as evidências alinhadas e a descrição geral embaixo.
Desenvolvido por Jonathan Vaz linkedin.com/in/jonathan-vaz-260764b3 · jvaz.eng.dev@gmail.com


