artificialguybr commited on
Commit
e19a6a7
·
verified ·
1 Parent(s): 7d42bca

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -13
app.py CHANGED
@@ -15,7 +15,10 @@ from surya.settings import settings
15
  from surya.model.ordering.processor import load_processor as load_order_processor
16
  from surya.model.ordering.model import load_model as load_order_model
17
 
18
- # Configuração de logging mais detalhada
 
 
 
19
  logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
20
  logger = logging.getLogger(__name__)
21
 
@@ -74,6 +77,15 @@ except Exception as e:
74
  logger.error(f"Erro durante a compilação do modelo de reconhecimento: {e}")
75
  logger.warning("Continuando sem compilação do modelo")
76
 
 
 
 
 
 
 
 
 
 
77
  def ocr_workflow(image, langs):
78
  logger.info(f"Iniciando workflow OCR com idiomas: {langs}")
79
  try:
@@ -81,10 +93,10 @@ def ocr_workflow(image, langs):
81
  logger.debug(f"Imagem carregada: {image.size}")
82
  predictions = run_ocr([image], [langs.split(',')], det_model, det_processor, rec_model, rec_processor)
83
  logger.info("Workflow OCR concluído com sucesso")
84
- return json.dumps(predictions, indent=2)
85
  except Exception as e:
86
  logger.error(f"Erro durante o workflow OCR: {e}")
87
- return json.dumps({"error": str(e)})
88
 
89
  def text_detection_workflow(image):
90
  logger.info("Iniciando workflow de detecção de texto")
@@ -93,10 +105,10 @@ def text_detection_workflow(image):
93
  logger.debug(f"Imagem carregada: {image.size}")
94
  predictions = batch_text_detection([image], det_model, det_processor)
95
  logger.info("Workflow de detecção de texto concluído com sucesso")
96
- return json.dumps(predictions, indent=2)
97
  except Exception as e:
98
  logger.error(f"Erro durante o workflow de detecção de texto: {e}")
99
- return json.dumps({"error": str(e)})
100
 
101
  def layout_analysis_workflow(image):
102
  logger.info("Iniciando workflow de análise de layout")
@@ -104,13 +116,13 @@ def layout_analysis_workflow(image):
104
  image = Image.open(image.name)
105
  logger.debug(f"Imagem carregada: {image.size}")
106
  line_predictions = batch_text_detection([image], det_model, det_processor)
107
- logger.debug(f"Detecção de linhas concluída. Número de linhas detectadas: {len(line_predictions[0]['bboxes'])}")
108
  layout_predictions = batch_layout_detection([image], layout_model, layout_processor, line_predictions)
109
  logger.info("Workflow de análise de layout concluído com sucesso")
110
- return json.dumps(layout_predictions, indent=2)
111
  except Exception as e:
112
  logger.error(f"Erro durante o workflow de análise de layout: {e}")
113
- return json.dumps({"error": str(e)})
114
 
115
  def reading_order_workflow(image):
116
  logger.info("Iniciando workflow de ordem de leitura")
@@ -118,16 +130,16 @@ def reading_order_workflow(image):
118
  image = Image.open(image.name)
119
  logger.debug(f"Imagem carregada: {image.size}")
120
  line_predictions = batch_text_detection([image], det_model, det_processor)
121
- logger.debug(f"Detecção de linhas concluída. Número de linhas detectadas: {len(line_predictions[0]['bboxes'])}")
122
  layout_predictions = batch_layout_detection([image], layout_model, layout_processor, line_predictions)
123
- logger.debug(f"Análise de layout concluída. Número de elementos de layout: {len(layout_predictions[0]['bboxes'])}")
124
- bboxes = [pred['bbox'] for pred in layout_predictions[0]['bboxes']]
125
  order_predictions = batch_ordering([image], [bboxes], order_model, order_processor)
126
  logger.info("Workflow de ordem de leitura concluído com sucesso")
127
- return json.dumps(order_predictions, indent=2)
128
  except Exception as e:
129
  logger.error(f"Erro durante o workflow de ordem de leitura: {e}")
130
- return json.dumps({"error": str(e)})
131
 
132
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
133
  gr.Markdown("# Análise de Documentos com Surya")
 
15
  from surya.model.ordering.processor import load_processor as load_order_processor
16
  from surya.model.ordering.model import load_model as load_order_model
17
 
18
+ # Configuração do TorchDynamo
19
+ torch._dynamo.config.capture_scalar_outputs = True
20
+
21
+ # Configuração de logging
22
  logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
23
  logger = logging.getLogger(__name__)
24
 
 
77
  logger.error(f"Erro durante a compilação do modelo de reconhecimento: {e}")
78
  logger.warning("Continuando sem compilação do modelo")
79
 
80
+ class CustomJSONEncoder(json.JSONEncoder):
81
+ def default(self, obj):
82
+ if hasattr(obj, '__dict__'):
83
+ return obj.__dict__
84
+ return super().default(obj)
85
+
86
+ def serialize_result(result):
87
+ return json.dumps(result, cls=CustomJSONEncoder, indent=2)
88
+
89
  def ocr_workflow(image, langs):
90
  logger.info(f"Iniciando workflow OCR com idiomas: {langs}")
91
  try:
 
93
  logger.debug(f"Imagem carregada: {image.size}")
94
  predictions = run_ocr([image], [langs.split(',')], det_model, det_processor, rec_model, rec_processor)
95
  logger.info("Workflow OCR concluído com sucesso")
96
+ return serialize_result(predictions)
97
  except Exception as e:
98
  logger.error(f"Erro durante o workflow OCR: {e}")
99
+ return serialize_result({"error": str(e)})
100
 
101
  def text_detection_workflow(image):
102
  logger.info("Iniciando workflow de detecção de texto")
 
105
  logger.debug(f"Imagem carregada: {image.size}")
106
  predictions = batch_text_detection([image], det_model, det_processor)
107
  logger.info("Workflow de detecção de texto concluído com sucesso")
108
+ return serialize_result(predictions)
109
  except Exception as e:
110
  logger.error(f"Erro durante o workflow de detecção de texto: {e}")
111
+ return serialize_result({"error": str(e)})
112
 
113
  def layout_analysis_workflow(image):
114
  logger.info("Iniciando workflow de análise de layout")
 
116
  image = Image.open(image.name)
117
  logger.debug(f"Imagem carregada: {image.size}")
118
  line_predictions = batch_text_detection([image], det_model, det_processor)
119
+ logger.debug(f"Detecção de linhas concluída. Número de linhas detectadas: {len(line_predictions[0].bboxes)}")
120
  layout_predictions = batch_layout_detection([image], layout_model, layout_processor, line_predictions)
121
  logger.info("Workflow de análise de layout concluído com sucesso")
122
+ return serialize_result(layout_predictions)
123
  except Exception as e:
124
  logger.error(f"Erro durante o workflow de análise de layout: {e}")
125
+ return serialize_result({"error": str(e)})
126
 
127
  def reading_order_workflow(image):
128
  logger.info("Iniciando workflow de ordem de leitura")
 
130
  image = Image.open(image.name)
131
  logger.debug(f"Imagem carregada: {image.size}")
132
  line_predictions = batch_text_detection([image], det_model, det_processor)
133
+ logger.debug(f"Detecção de linhas concluída. Número de linhas detectadas: {len(line_predictions[0].bboxes)}")
134
  layout_predictions = batch_layout_detection([image], layout_model, layout_processor, line_predictions)
135
+ logger.debug(f"Análise de layout concluída. Número de elementos de layout: {len(layout_predictions[0].bboxes)}")
136
+ bboxes = [pred.bbox for pred in layout_predictions[0].bboxes]
137
  order_predictions = batch_ordering([image], [bboxes], order_model, order_processor)
138
  logger.info("Workflow de ordem de leitura concluído com sucesso")
139
+ return serialize_result(order_predictions)
140
  except Exception as e:
141
  logger.error(f"Erro durante o workflow de ordem de leitura: {e}")
142
+ return serialize_result({"error": str(e)})
143
 
144
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
145
  gr.Markdown("# Análise de Documentos com Surya")