Spaces:
Running
on
T4
Running
on
T4
artificialguybr
commited on
Update app.py
Browse files
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
|
|
|
|
|
|
|
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
|
85 |
except Exception as e:
|
86 |
logger.error(f"Erro durante o workflow OCR: {e}")
|
87 |
-
return
|
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
|
97 |
except Exception as e:
|
98 |
logger.error(f"Erro durante o workflow de detecção de texto: {e}")
|
99 |
-
return
|
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]
|
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
|
111 |
except Exception as e:
|
112 |
logger.error(f"Erro durante o workflow de análise de layout: {e}")
|
113 |
-
return
|
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]
|
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]
|
124 |
-
bboxes = [pred
|
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
|
128 |
except Exception as e:
|
129 |
logger.error(f"Erro durante o workflow de ordem de leitura: {e}")
|
130 |
-
return
|
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")
|