histlearn commited on
Commit
9f42eeb
·
verified ·
1 Parent(s): fa4e027

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +86 -5
app.py CHANGED
@@ -682,27 +682,108 @@ def processar_boletim(file):
682
  )
683
 
684
  grafico_medias = plotar_graficos_destacados(disciplinas_dados, temp_dir)
685
- print("Gráficos gerados com sucesso")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
686
 
687
  # Gerar PDF
688
  print("Gerando relatório PDF...")
689
  pdf_path = gerar_relatorio_pdf(df, disciplinas_dados, grafico_basica, grafico_diversificada, grafico_medias)
690
- print("Relatório PDF gerado com sucesso")
691
 
692
  # Criar arquivo de retorno
693
  output_file = tempfile.NamedTemporaryFile(delete=False, suffix='.pdf')
694
  output_path = output_file.name
695
  shutil.copy2(pdf_path, output_path)
696
- print("Arquivo de saída criado com sucesso")
697
 
698
  return output_path, "Relatório gerado com sucesso!"
699
 
700
  except Exception as e:
701
- print(f"Erro durante o processamento: {str(e)}")
702
  return None, f"Erro ao processar os dados: {str(e)}"
703
 
704
  except Exception as e:
705
- print(f"Erro geral durante o processamento: {str(e)}")
706
  return None, f"Erro ao processar o boletim: {str(e)}"
707
 
708
  finally:
 
682
  )
683
 
684
  grafico_medias = plotar_graficos_destacados(disciplinas_dados, temp_dir)
685
+ def processar_boletim(file):
686
+ """Função principal que processa o boletim e gera o relatório."""
687
+ temp_dir = None
688
+ try:
689
+ print("Iniciando processamento do arquivo...")
690
+
691
+ if file is None:
692
+ return None, "Nenhum arquivo foi fornecido."
693
+
694
+ # Criar diretório temporário
695
+ temp_dir = tempfile.mkdtemp()
696
+ print(f"Diretório temporário criado: {temp_dir}")
697
+
698
+ # Salvar o conteúdo bytes em um arquivo temporário
699
+ temp_pdf = os.path.join(temp_dir, 'boletim.pdf')
700
+ try:
701
+ with open(temp_pdf, 'wb') as f:
702
+ # Se o arquivo já é bytes, escrever diretamente
703
+ if isinstance(file, bytes):
704
+ f.write(file)
705
+ # Se é um arquivo do Gradio, ler o conteúdo primeiro
706
+ else:
707
+ f.write(file.read())
708
+ print(f"Arquivo temporário criado: {temp_pdf}")
709
+ except Exception as e:
710
+ print(f"Erro ao salvar arquivo temporário: {str(e)}")
711
+ return None, f"Erro ao processar arquivo: {str(e)}"
712
+
713
+ # Verificar se o arquivo foi criado corretamente
714
+ if not os.path.exists(temp_pdf) or os.path.getsize(temp_pdf) == 0:
715
+ return None, "Erro ao salvar o arquivo."
716
+
717
+ # Validar o PDF
718
+ try:
719
+ import PyPDF2
720
+ with open(temp_pdf, 'rb') as pdf_file:
721
+ pdf_reader = PyPDF2.PdfReader(pdf_file)
722
+ if len(pdf_reader.pages) == 0:
723
+ return None, "O PDF está vazio ou corrompido."
724
+ print(f"PDF válido com {len(pdf_reader.pages)} páginas")
725
+ except Exception as e:
726
+ print(f"Erro ao validar PDF: {str(e)}")
727
+ return None, "O arquivo não é um PDF válido."
728
+
729
+ print("Iniciando extração das tabelas...")
730
+ try:
731
+ df = extrair_tabelas_pdf(temp_pdf)
732
+ print("Tabelas extraídas com sucesso")
733
+ except Exception as e:
734
+ print(f"Erro na extração das tabelas: {str(e)}")
735
+ return None, f"Erro ao extrair dados do PDF: {str(e)}"
736
+
737
+ if df is None or df.empty:
738
+ return None, "Não foi possível extrair dados do PDF."
739
+
740
+ try:
741
+ # Processar disciplinas
742
+ disciplinas_dados = obter_disciplinas_validas(df)
743
+ if not disciplinas_dados:
744
+ return None, "Nenhuma disciplina válida encontrada no boletim."
745
+
746
+ # Separar disciplinas por categoria
747
+ categorias = separar_disciplinas_por_categoria(disciplinas_dados)
748
+ nivel = categorias['nivel']
749
+ nivel_texto = "Ensino Médio" if nivel == "medio" else "Ensino Fundamental"
750
+
751
+ # Gerar gráficos
752
+ print("Gerando gráficos...")
753
+ grafico_basica = plotar_evolucao_bimestres(
754
+ categorias['formacao_basica'],
755
+ temp_dir,
756
+ titulo=f"Evolução das Médias - Formação Geral Básica ({nivel_texto})",
757
+ nome_arquivo='evolucao_basica.png'
758
+ )
759
+
760
+ grafico_diversificada = plotar_evolucao_bimestres(
761
+ categorias['diversificada'],
762
+ temp_dir,
763
+ titulo=f"Evolução das Médias - Parte Diversificada ({nivel_texto})",
764
+ nome_arquivo='evolucao_diversificada.png'
765
+ )
766
+
767
+ grafico_medias = plotar_graficos_destacados(disciplinas_dados, temp_dir)
768
+ print("Gráficos gerados")
769
 
770
  # Gerar PDF
771
  print("Gerando relatório PDF...")
772
  pdf_path = gerar_relatorio_pdf(df, disciplinas_dados, grafico_basica, grafico_diversificada, grafico_medias)
773
+ print("Relatório PDF gerado")
774
 
775
  # Criar arquivo de retorno
776
  output_file = tempfile.NamedTemporaryFile(delete=False, suffix='.pdf')
777
  output_path = output_file.name
778
  shutil.copy2(pdf_path, output_path)
 
779
 
780
  return output_path, "Relatório gerado com sucesso!"
781
 
782
  except Exception as e:
 
783
  return None, f"Erro ao processar os dados: {str(e)}"
784
 
785
  except Exception as e:
786
+ print(f"Erro durante o processamento: {str(e)}")
787
  return None, f"Erro ao processar o boletim: {str(e)}"
788
 
789
  finally: