jcalbornoz commited on
Commit
b4c60f7
·
verified ·
1 Parent(s): da36171

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -9
app.py CHANGED
@@ -25,8 +25,6 @@ def ocr_page(img_bytes):
25
  return text
26
  except Exception as e:
27
  print(f"Error en Pytesseract/OCR: {e}")
28
- # En caso de que Tesseract no se encuentre (el error 500 más común), esto se imprimirá
29
- print("Asegúrate de que Tesseract-OCR esté instalado correctamente en tu Dockerfile.")
30
  return ""
31
 
32
  def extract_text_from_file(file):
@@ -69,9 +67,11 @@ def extract_text_from_file(file):
69
  return ""
70
 
71
  def generate_summary_openai(text):
72
- """Genera un análisis experto en formato JSON usando el nuevo SDK."""
 
 
73
  try:
74
- # Esquema JSON
75
  json_schema = {
76
  "type": "object",
77
  "properties": {
@@ -87,10 +87,14 @@ def generate_summary_openai(text):
87
  "required": ["tipo_documento_detectado", "propietario_actual", "conclusion_final"]
88
  }
89
 
 
 
 
90
  prompt_text = (
91
  "Eres un **experto legal en derecho inmobiliario colombiano y reglamentos de Juntas de Acción Comunal (JAC)**. "
92
  "Tu tarea es analizar el documento adjunto y extraer la información clave para un estudio de títulos o de propiedad comunal. "
93
- "DEBES DEVOLVER TU RESPUESTA EXCLUSIVAMENTE EN FORMATO JSON, siguiendo el esquema proporcionado. No añadas texto explicativo fuera del JSON."
 
94
  f"\n\nTexto del Documento:\n\n{text}"
95
  )
96
 
@@ -99,8 +103,9 @@ def generate_summary_openai(text):
99
  messages=[
100
  {"role": "system", "content": prompt_text}
101
  ],
102
- # SINTAXIS MODERNA (Requiere openai>=1.0.0)
103
- response_format={"type": "json_object", "schema": json_schema},
 
104
  temperature=0.3,
105
  )
106
 
@@ -110,7 +115,7 @@ def generate_summary_openai(text):
110
  return structured_data
111
 
112
  except Exception as e:
113
- # Propaga el error para que sea capturado en summarize
114
  raise
115
 
116
  # --- Rutas de Flask ---
@@ -149,7 +154,6 @@ def summarize():
149
  print("DIAGNÓSTICO: ERROR 500 DURANTE EL PROCESAMIENTO")
150
  print(f"Tipo de Error: {type(e).__name__}")
151
  print("Traceback Completo:")
152
- # Imprime el stack trace completo del error
153
  traceback.print_exc()
154
  print("="*50 + "\n")
155
  # ----------------------------------------
 
25
  return text
26
  except Exception as e:
27
  print(f"Error en Pytesseract/OCR: {e}")
 
 
28
  return ""
29
 
30
  def extract_text_from_file(file):
 
67
  return ""
68
 
69
  def generate_summary_openai(text):
70
+ """
71
+ Genera un análisis experto en formato JSON usando la sintaxis UNIVERSAL de OpenAI.
72
+ """
73
  try:
74
+ # El esquema JSON se mantiene para guiar al modelo a través del prompt
75
  json_schema = {
76
  "type": "object",
77
  "properties": {
 
87
  "required": ["tipo_documento_detectado", "propietario_actual", "conclusion_final"]
88
  }
89
 
90
+ # Incluimos el esquema en el prompt para que el modelo sepa qué generar
91
+ schema_text = json.dumps(json_schema, indent=2)
92
+
93
  prompt_text = (
94
  "Eres un **experto legal en derecho inmobiliario colombiano y reglamentos de Juntas de Acción Comunal (JAC)**. "
95
  "Tu tarea es analizar el documento adjunto y extraer la información clave para un estudio de títulos o de propiedad comunal. "
96
+ "DEBES DEVOLVER TU RESPUESTA EXCLUSIVAMENTE EN FORMATO JSON, siguiendo EXACTAMENTE el esquema proporcionado a continuación. No añadas texto explicativo fuera del JSON."
97
+ f"\n\nEsquema JSON requerido:\n{schema_text}"
98
  f"\n\nTexto del Documento:\n\n{text}"
99
  )
100
 
 
103
  messages=[
104
  {"role": "system", "content": prompt_text}
105
  ],
106
+ # SINTAXIS CORREGIDA: Solo forzamos el formato JSON, sin el 'schema'
107
+ # problemático. El modelo seguirá la guía proporcionada en el prompt.
108
+ response_format={"type": "json_object"},
109
  temperature=0.3,
110
  )
111
 
 
115
  return structured_data
116
 
117
  except Exception as e:
118
+ # Propaga el error para que sea capturado por el bloque except de summarize
119
  raise
120
 
121
  # --- Rutas de Flask ---
 
154
  print("DIAGNÓSTICO: ERROR 500 DURANTE EL PROCESAMIENTO")
155
  print(f"Tipo de Error: {type(e).__name__}")
156
  print("Traceback Completo:")
 
157
  traceback.print_exc()
158
  print("="*50 + "\n")
159
  # ----------------------------------------