pedrolcs63 commited on
Commit
9cb9bea
·
1 Parent(s): 54df668

🐛 Fixed bug

Browse files
Files changed (2) hide show
  1. app.py +14 -16
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,11 +1,11 @@
1
- # app.py - VERSÃO DEFINITIVA
2
  import gradio as gr
3
  import torch
4
- # IMPORTA AS CLASSES ESPECÍFICAS, E NÃO AS AUTOMÁTICAS
5
  from transformers import PreTrainedTokenizerFast, ViTImageProcessor
6
  from PIL import Image
7
  import requests
8
  import os
 
9
 
10
  # IMPORTANTE: Importa as classes customizadas dos arquivos que você subiu
11
  from modeling import Im2LatexTransformer
@@ -17,16 +17,12 @@ HF_AUTH_TOKEN = os.environ.get("HF_TOKEN")
17
 
18
  print(f"Carregando componentes do modelo: {MODEL_ID}...")
19
 
20
- # =============================================================================
21
- # CORREÇÃO: Carregando cada componente com sua classe específica
22
- # Isso evita o erro de 'arquitetura não reconhecida'
23
- # =============================================================================
24
  try:
25
  tokenizer = PreTrainedTokenizerFast.from_pretrained(MODEL_ID, token=HF_AUTH_TOKEN)
26
  image_processor = ViTImageProcessor.from_pretrained(MODEL_ID, token=HF_AUTH_TOKEN)
27
  model = Im2LatexTransformer.from_pretrained(
28
  MODEL_ID,
29
- trust_remote_code=True, # Ainda necessário para permitir a execução do seu código
30
  token=HF_AUTH_TOKEN
31
  )
32
  device = "cpu"
@@ -35,9 +31,7 @@ try:
35
 
36
  except Exception as e:
37
  print(f"❌ ERRO AO CARREGAR O MODELO: {e}")
38
- # Lança a exceção para que o Gradio mostre o erro claramente
39
  raise e
40
- # =============================================================================
41
 
42
  def predict(image):
43
  """Função de predição que o Gradio irá usar"""
@@ -47,7 +41,16 @@ def predict(image):
47
  print("Processando nova imagem...")
48
  img = image.convert("L")
49
 
50
- pixel_values = image_processor(images=[img], return_tensors="pt").pixel_values.to(device)
 
 
 
 
 
 
 
 
 
51
 
52
  with torch.no_grad():
53
  output_ids = model.generate(
@@ -68,10 +71,5 @@ gr.Interface(
68
  inputs=gr.Image(type="pil", label="Upload da Imagem da Fórmula"),
69
  outputs=gr.Textbox(label="Fórmula LaTeX Gerada"),
70
  title="Conversor de Imagem para LaTeX",
71
- description="Faça o upload de uma imagem de uma fórmula matemática para convertê-la em código LaTeX. Modelo desenvolvido por Pedro.",
72
- #examples=[
73
- # ['https://i.stack.imgur.com/ZN96j.png'],
74
- # ['https://i.stack.imgur.com/s2N6k.png']
75
- #],
76
- allow_flagging="never"
77
  ).launch()
 
1
+ # app.py - VERSÃO FINAL (COM CORREÇÃO DE DIMENSÃO)
2
  import gradio as gr
3
  import torch
 
4
  from transformers import PreTrainedTokenizerFast, ViTImageProcessor
5
  from PIL import Image
6
  import requests
7
  import os
8
+ import numpy as np # <-- IMPORTE O NUMPY
9
 
10
  # IMPORTANTE: Importa as classes customizadas dos arquivos que você subiu
11
  from modeling import Im2LatexTransformer
 
17
 
18
  print(f"Carregando componentes do modelo: {MODEL_ID}...")
19
 
 
 
 
 
20
  try:
21
  tokenizer = PreTrainedTokenizerFast.from_pretrained(MODEL_ID, token=HF_AUTH_TOKEN)
22
  image_processor = ViTImageProcessor.from_pretrained(MODEL_ID, token=HF_AUTH_TOKEN)
23
  model = Im2LatexTransformer.from_pretrained(
24
  MODEL_ID,
25
+ trust_remote_code=True,
26
  token=HF_AUTH_TOKEN
27
  )
28
  device = "cpu"
 
31
 
32
  except Exception as e:
33
  print(f"❌ ERRO AO CARREGAR O MODELO: {e}")
 
34
  raise e
 
35
 
36
  def predict(image):
37
  """Função de predição que o Gradio irá usar"""
 
41
  print("Processando nova imagem...")
42
  img = image.convert("L")
43
 
44
+ # =============================================================================
45
+ # CORREÇÃO FINAL E DEFINITIVA
46
+ # 1. Converte a imagem PIL para um array NumPy
47
+ np_img = np.array(img)
48
+ # 2. Adiciona a dimensão do canal manualmente (de [H, W] para [1, H, W])
49
+ np_img_3d = np_img[None, ...]
50
+ # =============================================================================
51
+
52
+ # Passa o array NumPy com 3 dimensões para o processador
53
+ pixel_values = image_processor(images=np_img_3d, return_tensors="pt").pixel_values.to(device)
54
 
55
  with torch.no_grad():
56
  output_ids = model.generate(
 
71
  inputs=gr.Image(type="pil", label="Upload da Imagem da Fórmula"),
72
  outputs=gr.Textbox(label="Fórmula LaTeX Gerada"),
73
  title="Conversor de Imagem para LaTeX",
74
+ description="Faça o upload de uma imagem de uma fórmula matemática para convertê-la em código LaTeX. Modelo desenvolvido por Pedro."
 
 
 
 
 
75
  ).launch()
requirements.txt CHANGED
@@ -2,4 +2,5 @@ torch
2
  Pillow
3
  tokenizers
4
  requests
5
- transformers
 
 
2
  Pillow
3
  tokenizers
4
  requests
5
+ transformers
6
+ numpy