Facilitador de procesamiento de nuevos documentos
Browse files- app.py +9 -0
- conceptos_busqueda.py +1 -1
- funciones.py +10 -7
- herramientas.py +1 -1
- identificador.py +1 -1
- obtenCampo.py +2 -2
app.py
CHANGED
@@ -29,6 +29,15 @@ async def echo_image(image: UploadFile = File(...)):
|
|
29 |
contents = await image.read()
|
30 |
return StreamingResponse(BytesIO(contents), media_type=image.content_type)
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
@app.post(
|
33 |
"/procesa_documento/",
|
34 |
tags=["Documentos"],
|
|
|
29 |
contents = await image.read()
|
30 |
return StreamingResponse(BytesIO(contents), media_type=image.content_type)
|
31 |
|
32 |
+
@app.post(
|
33 |
+
"/identifica_documento/",
|
34 |
+
tags=["Documentos"],
|
35 |
+
summary="Reconocimiento Avanzado de Documentos")
|
36 |
+
async def procesa_documento(image: UploadFile = File(...)):
|
37 |
+
if not image.content_type.startswith("image/"):
|
38 |
+
return {"error": "El archivo no es una imagen"}
|
39 |
+
return await funciones.identifica_documento(image)
|
40 |
+
|
41 |
@app.post(
|
42 |
"/procesa_documento/",
|
43 |
tags=["Documentos"],
|
conceptos_busqueda.py
CHANGED
@@ -10,5 +10,5 @@ pasaporte = [
|
|
10 |
|
11 |
ine = [
|
12 |
{'preferida': 'Instituto Nacional Electoral', 'alternativas': ['']},
|
13 |
-
|
14 |
]
|
|
|
10 |
|
11 |
ine = [
|
12 |
{'preferida': 'Instituto Nacional Electoral', 'alternativas': ['']},
|
13 |
+
{'preferida': 'México', 'alternativas': []}
|
14 |
]
|
funciones.py
CHANGED
@@ -2,17 +2,20 @@ import documentos
|
|
2 |
import herramientas
|
3 |
import identificador
|
4 |
|
5 |
-
async def
|
6 |
-
|
7 |
-
print("Procesando imagen...")
|
8 |
textos_extraidos = await herramientas.procesaImagen(image)
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
-
|
13 |
textos_extraidos_simplificados = herramientas.simplificaTextos(textos_extraidos)
|
14 |
documento = identificador.identifica_documento(textos_extraidos_simplificados)
|
15 |
-
print("El documento es: ", documento)
|
16 |
|
17 |
if documento == 'dni':
|
18 |
# Llama a la función 'dni' si el documento es un DNI
|
|
|
2 |
import herramientas
|
3 |
import identificador
|
4 |
|
5 |
+
async def identifica_documento(image):
|
6 |
+
|
|
|
7 |
textos_extraidos = await herramientas.procesaImagen(image)
|
8 |
+
textos_extraidos_simplificados = herramientas.simplificaTextos(textos_extraidos)
|
9 |
+
documento = identificador.identifica_documento(textos_extraidos_simplificados)
|
10 |
+
return {
|
11 |
+
"documento": documento
|
12 |
+
}
|
13 |
+
|
14 |
+
async def procesa_documento(image):
|
15 |
|
16 |
+
textos_extraidos = await herramientas.procesaImagen(image)
|
17 |
textos_extraidos_simplificados = herramientas.simplificaTextos(textos_extraidos)
|
18 |
documento = identificador.identifica_documento(textos_extraidos_simplificados)
|
|
|
19 |
|
20 |
if documento == 'dni':
|
21 |
# Llama a la función 'dni' si el documento es un DNI
|
herramientas.py
CHANGED
@@ -47,7 +47,7 @@ def buscaIndexPalabra(arreglo, palabra):
|
|
47 |
return i
|
48 |
return None # Cambiado de 'error' a None
|
49 |
|
50 |
-
def
|
51 |
"""
|
52 |
Busca el índice de la primera línea que contiene todas las palabras requeridas (o sus alternativas)
|
53 |
y devuelve la línea con las alternativas corregidas a su forma preferida.
|
|
|
47 |
return i
|
48 |
return None # Cambiado de 'error' a None
|
49 |
|
50 |
+
def buscaIndexMultiplesPalabras(arreglo_textos, conceptos_requeridos):
|
51 |
"""
|
52 |
Busca el índice de la primera línea que contiene todas las palabras requeridas (o sus alternativas)
|
53 |
y devuelve la línea con las alternativas corregidas a su forma preferida.
|
identificador.py
CHANGED
@@ -21,7 +21,7 @@ def identifica_documento(textos_extraidos_simplificados):
|
|
21 |
conceptos_actuales = getattr(conceptos_busqueda, tipo_documento)
|
22 |
|
23 |
# Llama a la función de búsqueda para el tipo de documento actual
|
24 |
-
indice, textos_corregidos = herramientas.
|
25 |
textos_extraidos_simplificados,
|
26 |
conceptos_actuales
|
27 |
)
|
|
|
21 |
conceptos_actuales = getattr(conceptos_busqueda, tipo_documento)
|
22 |
|
23 |
# Llama a la función de búsqueda para el tipo de documento actual
|
24 |
+
indice, textos_corregidos = herramientas.buscaIndexMultiplesPalabras(
|
25 |
textos_extraidos_simplificados,
|
26 |
conceptos_actuales
|
27 |
)
|
obtenCampo.py
CHANGED
@@ -19,7 +19,7 @@ def Fecha_Nacimiento(textos_extraidos, textos_extraidos_limpios):
|
|
19 |
{'preferida': 'fecha', 'alternativas': []},
|
20 |
{'preferida': 'nacimiento', 'alternativas': ['nacimento']} ]
|
21 |
|
22 |
-
indice, textos_extraidos_corregidos = herramientas.
|
23 |
#Future: Agregar validación aquí, porque si regresa None es que no encontró nada.
|
24 |
print("Ésto es textos extraídos corregidos: ", textos_extraidos_corregidos)
|
25 |
textos_extraidos_limpios = textos_extraidos_corregidos
|
@@ -36,7 +36,7 @@ def Sexo(textos_extraidos, textos_extraidos_limpios):
|
|
36 |
#{'preferida': 'sangre', 'alternativas': []}
|
37 |
]
|
38 |
|
39 |
-
indice, textos_extraidos_corregidos = herramientas.
|
40 |
|
41 |
textos_extraidos_limpios = textos_extraidos_corregidos
|
42 |
print("El índice de genero es: ", indice)
|
|
|
19 |
{'preferida': 'fecha', 'alternativas': []},
|
20 |
{'preferida': 'nacimiento', 'alternativas': ['nacimento']} ]
|
21 |
|
22 |
+
indice, textos_extraidos_corregidos = herramientas.buscaIndexMultiplesPalabras(textos_extraidos_limpios, conceptos_busqueda)
|
23 |
#Future: Agregar validación aquí, porque si regresa None es que no encontró nada.
|
24 |
print("Ésto es textos extraídos corregidos: ", textos_extraidos_corregidos)
|
25 |
textos_extraidos_limpios = textos_extraidos_corregidos
|
|
|
36 |
#{'preferida': 'sangre', 'alternativas': []}
|
37 |
]
|
38 |
|
39 |
+
indice, textos_extraidos_corregidos = herramientas.buscaIndexMultiplesPalabras(textos_extraidos_limpios, conceptos_busqueda)
|
40 |
|
41 |
textos_extraidos_limpios = textos_extraidos_corregidos
|
42 |
print("El índice de genero es: ", indice)
|