fcervan commited on
Commit
28d4a6f
·
verified ·
1 Parent(s): ef6d65a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -61
app.py CHANGED
@@ -1,62 +1,61 @@
1
- # app.py
2
- import streamlit as st
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  from PIL import Image
4
- from datetime import datetime
5
- import os
6
-
7
- def gerar_log(mensagem_log, status='INFO'):
8
- data_hora = datetime.now().strftime('%d/%m/%Y %H:%M:%S')
9
- mensagem_log_completa = f"[{data_hora}] - [{status}] - {mensagem_log}"
10
- print(mensagem_log_completa)
11
-
12
- gerar_log("INICIANDO PROCESSO...")
13
-
14
- # Configurações comprovadamente funcionais
15
- MODEL_NAME = "Salesforce/blip-image-captioning-base" # Modelo oficial testado
16
- TIMEOUT = 60 # Aumentado para carregamento inicial
17
-
18
- # Configurações iniciais
19
- st.set_page_config(page_title="Analisador de Imagens", layout="wide")
20
-
21
- def main():
22
- st.title("Análise de Imagens com IA")
23
-
24
- try:
25
- # 1. Carregar imagem local
26
- with st.spinner("Carregando imagem..."):
27
- image_path = "cnh-michele-digital.jpg"
28
- if not os.path.exists(image_path):
29
- raise FileNotFoundError(f"Arquivo {image_path} não encontrado")
30
-
31
- image = Image.open(image_path).convert("RGB")
32
- gerar_log("Imagem carregada: OK")
33
-
34
- # 2. Carregar modelo
35
- with st.spinner("Carregando modelo de visão computacional..."):
36
- from transformers import pipeline
37
- analyzer = pipeline(
38
- task="image-to-text",
39
- model=MODEL_NAME,
40
- device=-1, # Forçar CPU
41
- max_new_tokens=150
42
- )
43
- gerar_log("Modelo carregado: OK")
44
-
45
- # 3. Gerar descrição
46
- with st.spinner("Analisando conteúdo visual..."):
47
- result = analyzer(image)
48
- description = result[0]['generated_text']
49
- gerar_log(f"Descrição gerada: {description[:50]}...")
50
-
51
- # 4. Exibir resultados
52
- st.subheader("Análise do Gráfico:")
53
- st.write(description)
54
- st.image(image, caption="Imagem analisada", width=400)
55
-
56
- except Exception as e:
57
- gerar_log(f"ERRO: {str(e)}", "ERROR")
58
- st.error(f"Falha crítica: {str(e)}")
59
-
60
- if __name__ == "__main__":
61
- main()
62
- gerar_log("PROCESSO FINALIZADO.")
 
1
+ # import streamlit as st
2
+ # from LogCustomizado import LogCustomizado as logc
3
+ #
4
+ # logc.gerar_log(mensagem_log="INICIANDO PROCESSO")
5
+ #
6
+ # st.set_page_config(page_title="CADIN - Cadastro Inteligente")
7
+ #
8
+ # st.title("CADIN - Cadastro Inteligente")
9
+ #
10
+ # arquivos_upload = st.file_uploader(
11
+ # label="Adicione todos os documentos que estão em formato de imagens.",
12
+ # type=["jpg", "jpeg", "png", "pdf"],
13
+ # accept_multiple_files=True,
14
+ # help="O arquitvo PDF precisa ser uma imagem"
15
+ # )
16
+ #
17
+ # if arquivos_upload is not None:
18
+ # for item in arquivos_upload:
19
+ # st.write(item)
20
+
21
+ from transformers import AutoProcessor, AutoModelForVision2Seq
22
  from PIL import Image
23
+ import torch
24
+
25
+ # Carregar imagem e definir prompt
26
+ imagem = Image.open("cnh-michele-digital.jpg")
27
+ prompt = "Extraia os seguintes dados do documento: [nome, cpf e data de nascimento]"
28
+
29
+ # Carregar modelo e processador (forçando uso de CPU)
30
+ device = torch.device("cpu")
31
+ torch_dtype = torch.float32 # Usar precisão simples para economizar memória
32
+
33
+ processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct")
34
+ model = AutoModelForVision2Seq.from_pretrained(
35
+ "Qwen/Qwen2.5-VL-7B-Instruct",
36
+ torch_dtype=torch_dtype
37
+ ).to(device)
38
+
39
+ # Preparar inputs
40
+ inputs = processor(
41
+ images=imagem,
42
+ text=prompt,
43
+ return_tensors="pt",
44
+ padding=True
45
+ ).to(device, dtype=torch_dtype)
46
+
47
+ # Gerar resposta
48
+ with torch.no_grad():
49
+ outputs = model.generate(
50
+ **inputs,
51
+ max_new_tokens=512,
52
+ do_sample=False, # Para respostas determinísticas
53
+ use_cache=True # Melhora performance em CPU
54
+ )
55
+
56
+ # Decodificar resultado
57
+ resultado = processor.decode(outputs[0], skip_special_tokens=True)
58
+
59
+ print("Dados extraídos:")
60
+ print("="*40)
61
+ print(resultado)