• No se han encontrado resultados

Escaneo de tickets de compra

In document Ahorranza (página 113-117)

7. Arquitectura y diseño

7.1. Elección de tecnologías

7.1.5. Escaneo de tickets de compra

Por otro lado, para evaluar el tamaño de la comunidad, se analizaron las estrellas de los repositorios de GitHub de cada una de las opciones mencionadas, notando que, Laravel es la tecnología que más estrellas tiene con 73 mil [107], seguida de Django con 69 mil [108] y por último Express con 60 mil estrellas [109].

Decisión tomada

En base al análisis comparativo de los distintosframeworks, el equipo optó por llevar adelante el desarrollo de laAPIutilizando Express.

Aunque las tres opciones cumplen con los requisitos del proyecto, una de las razones por las que se ha elegido Express es por su alto rendimiento, ya que es capaz de manejar grandes cantidades de tráfico y solicitudes, sin degradar el rendimiento del sistema. También se tuvo en cuenta la familiaridad del equipo con la tecnología, ya que los cinco miembros poseen experiencia tanto laboral como académica, lo que ayudará a reducir el riesgo durante el desarrollo del proyecto.

Factores en la toma de decisión

● Costo

Como se mencionó en la sección 7.1.1 - Factores del contexto, se cuenta con un presupuesto limitado por lo que la solución debería ser gratuita o tener costo bajo. Además, al ser una funcionalidad diferencial, era fundamental poder ofrecerla de manera gratuita.

● Compatibilidad con distintos comercios

El sistema debe poder identificar correctamente los productos de diferentes supermercados y comercios del Uruguay. Es admisible que el usuario tenga que corregir algún resultado pero se busca minimizar el esfuerzo humano.

● Facilidad de uso

Se busca que pueda ser usada por todos los usuarios sin importar su experiencia previa con el uso de aplicaciones móviles. Se consideraron factores como la velocidad de aprendizaje, cantidad de acciones necesarias y tiempo empleado desde que se captura la imagen hasta que se recibe el resultado.

Opciones consideradas

● Utilizar un servicio de terceros

Existen múltiples servicios que ofrecen modelos entrenados específicamente para extraer información de recibos,tickets y todo tipo de facturas y documentos. En particular el que resultó más atractivo fue Document AI, que tiene un caso de uso pensado específicamente paratickets de supermercado con un formato similar al uruguayo.

● Realizarlo del lado delbackend

En esta alternativa, todo el procesamiento se haría en elbackendy la aplicación solo tendría que tomar y enviar la foto. Para esto se realizaron varias pruebas con librerías de computer-vision

gratuitas como OpenCV y Tensorflow. La misma es un área de la inteligencia artificial que permite extraer información de imágenes, videos y otros formatos visuales [110].

● Realizarlo del lado de la aplicación

Para esta alternativa, la aplicación se encargaría de leer y procesar la imagen extrayendo la información de los productos para luego ser enviada a backend para almacenarla. Para validar esta opción se realizaron pruebas con la librería ML Kit, habiendo previamente confirmado su viabilidad como se detalla en la sección 6.1.1 - Fases del proceso.

Análisis en base a factores para la toma de decisión

● Costo

Document AI ofrece solamente 200 lecturas gratis mensuales y luego pasa a 250 dólares cada 1000 lecturas. Las implementaciones propias tanto en mobilecomo backend usan libreríasopen sourceo gratuitas.

● Compatibilidad con distintos comercios

Con la utilización de Document AI se logró obtener un excelente reconocimiento de texto, incluso en casos de imágenes mal enfocadas. Sin embargo, no se encontró una configuración que se adapte de manera perfecta a los formatos utilizados en Uruguay. Si bien se obtuvo un alto nivel de precisión en el reconocimiento del texto, no se logró obtener toda la información disponible en elticket.

Por otro lado, al optar por implementaciones propias, se aseguraría la compatibilidad con los formatos utilizados en Uruguay ya que se trataría de una implementación a medida. Teniendo eso en cuenta, solo se tuvo que analizar la calidad de las lecturas.

En cuanto a las implementaciones en elbackend, se obtuvieron resultados diversos. Cuando las imágenes estaban bien enfocadas e iluminadas, se lograba leer todo el contenido con precisión,

Otro factor relevante considerado era la cantidad de texto presente en la imagen, ya que para ticketsgrandes resultaba imposible enfocar todo el contenido en una sola imagen con precisión.

Por otro lado, los resultados al realizar el reconocimiento localmente en el dispositivo móvil, eran similares a los obtenidos con la opción anterior. Sin embargo, la ventaja que presentó fue que no estuvo limitado a una imagen estática. En este caso, se pudo realizar un procesamiento en tiempo real, es decir, mientras el usuario enfocaba elticket, la aplicación podía realizar múltiples lecturas y seleccionar la mejor. Además, con esta alternativa se podría brindar instrucciones en tiempo real para enfocar partes específicas de la imagen en caso de ser necesario.

● Facilidad de uso

De cara al usuario, es indiferente si el procesamiento se realiza en elbackendo en un servicio de terceros, ya que en ambos casos, debe tomar una imagen y pasado cierto tiempo recibirá el resultado. En caso de que el mismo sea insatisfactorio deberá tener que repetir el proceso con otra imagen.

Por otro lado, el procesamiento local conlleva una mayor carga de trabajo por parte del usuario en el momento de la lectura, no obstante, le permite visualizar en tiempo real el resultado de la misma. Además, la detección y corrección de errores se realiza de manera más expedita.

Decisión tomada

En primera instancia se decidió hacer una implementación propia, ya que no se lograron resultados satisfactorios con servicios de terceros.

En el caso ideal, el reconocimiento por backendes la mejor opción, ya que el usuario solo debe tomar una foto y enviarla. No obstante, la imposibilidad de garantizar un resultado satisfactorio en la primera instancia puede generar una mala experiencia de usuario, ya que implica que se deba guardar elticketen caso de que sea necesario repetir el proceso.

Finalmente, se decidió optar por el reconocimiento local que permitirá hacer múltiples lecturas del mismoticketen una misma sesión y de esta forma agilizar el proceso de mejora.

In document Ahorranza (página 113-117)