GABRIELSZK commited on
Commit
b5da647
·
verified ·
1 Parent(s): 0f3685a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -16
app.py CHANGED
@@ -1,4 +1,4 @@
1
- # Código completo atualizado com extração de EAS incluída no Gradio
2
 
3
  import fitz
4
  import re
@@ -87,8 +87,7 @@ exames = {
87
  "MG++": r"magn[eé]sio.*?([\d.,]+)\s?mg/dl",
88
  "PCR": r"pcr.*?\bresultado\b\s*([\d]+,[\d]+)",
89
  "K+": r"pot[áa]ssio.*?([\d.,]+)\s?mmol/l",
90
- "NA+": r"s[óo]dio.*?([\d.,]+)\s?mmol/l",
91
- "PTN": r"prote[íi]na total.*?([\d.,]+)\s?g/dl",
92
  "ALB": r"albumina.*?([\d.,]+)\s?g/dl",
93
  "GLOB": r"globulina.*?([\d.,]+)\s?g/dl",
94
  "RELAÇÃO": r"rela[cç][ãa]o\s+a\/g.*?([\d.,]+)",
@@ -133,28 +132,36 @@ def extrair_exames_formatado(pdf_file):
133
  if m:
134
  val = m.group(1).replace(',', '.')
135
  break
136
- resultados[rotulo] = classificar(rotulo, val) if val else "—"
 
137
 
138
- # Monta a parte principal
139
- partes = [f"{r}: {resultados[r]}" for r in ordem]
140
- texto_main = " / ".join(partes)
141
-
142
- # Monta o segmento de EAS, se presente
143
  eas_chaves = ["LEUC ESTERASE","LEUCO EAS","HEMA EAS","BACTERIAS"]
144
- eas_partes = [f"{k}: {resultados[k]}" for k in eas_chaves if resultados[k] != "—"]
145
- if eas_partes:
146
- texto_main = "EAS: " + " / ".join(eas_partes) + " / " + texto_main
 
 
 
 
 
 
 
 
147
 
148
- # Gera CSV
149
- df = pd.DataFrame(list(resultados.items()), columns=["Exame","Valor"])
 
 
 
150
  temp = tempfile.NamedTemporaryFile(delete=False, suffix=".csv")
151
  df.to_csv(temp.name, index=False)
152
 
153
- return texto_main, temp.name
154
 
155
  # Interface Gradio
156
  with gr.Blocks() as demo:
157
- gr.Markdown("## 🧪 Extrator Avançado com OCR e EAS")
158
  pdf_file = gr.File(label="📄 PDF de exames", file_types=[".pdf"])
159
  btn = gr.Button("🔍 Extrair Exames")
160
  out_txt = gr.Textbox(label="📋 Exames Classificados", lines=12)
 
1
+ # Código completo atualizado para omitir exames ausentes no PDF
2
 
3
  import fitz
4
  import re
 
87
  "MG++": r"magn[eé]sio.*?([\d.,]+)\s?mg/dl",
88
  "PCR": r"pcr.*?\bresultado\b\s*([\d]+,[\d]+)",
89
  "K+": r"pot[áa]ssio.*?([\d.,]+)\s?mmol/l",
90
+ "NA+": r"s[óo]dio.*?([\d.,]+)\s?mmol/l", "PTN": r"prote[íi]na total.*?([\d.,]+)\s?g/dl",
 
91
  "ALB": r"albumina.*?([\d.,]+)\s?g/dl",
92
  "GLOB": r"globulina.*?([\d.,]+)\s?g/dl",
93
  "RELAÇÃO": r"rela[cç][ãa]o\s+a\/g.*?([\d.,]+)",
 
132
  if m:
133
  val = m.group(1).replace(',', '.')
134
  break
135
+ if val:
136
+ resultados[rotulo] = classificar(rotulo, val)
137
 
138
+ # EAS (se presente)
 
 
 
 
139
  eas_chaves = ["LEUC ESTERASE","LEUCO EAS","HEMA EAS","BACTERIAS"]
140
+ partes_eas = [f"{k}: {resultados[k]}" for k in eas_chaves if k in resultados]
141
+ texto_eas = ""
142
+ if partes_eas:
143
+ texto_eas = "EAS: " + " / ".join(partes_eas)
144
+
145
+ # Parte principal (omite ausentes)
146
+ partes_main = [f"{r}: {resultados[r]}" for r in ordem if r in resultados]
147
+ texto_main = " / ".join(partes_main)
148
+
149
+ # Concatena
150
+ texto_final = " / ".join([t for t in (texto_eas, texto_main) if t])
151
 
152
+ # Gera CSV apenas com presentes
153
+ df = pd.DataFrame(
154
+ [(k, resultados[k]) for k in resultados],
155
+ columns=["Exame","Valor"]
156
+ )
157
  temp = tempfile.NamedTemporaryFile(delete=False, suffix=".csv")
158
  df.to_csv(temp.name, index=False)
159
 
160
+ return texto_final, temp.name
161
 
162
  # Interface Gradio
163
  with gr.Blocks() as demo:
164
+ gr.Markdown("## 🧪 Extrator Avançado com OCR e EAS (sem ausentes)")
165
  pdf_file = gr.File(label="📄 PDF de exames", file_types=[".pdf"])
166
  btn = gr.Button("🔍 Extrair Exames")
167
  out_txt = gr.Textbox(label="📋 Exames Classificados", lines=12)