RL-11 · VISIÓN COMPUTACIONAL · SEPTIEMBRE 2026

Leer una boleta: de una foto a puntos

Un comensal fotografía la precuenta y el sistema le abona puntos sin que nadie mire la imagen. Para eso hay que leer, con confianza suficiente para mover saldo real, al menos el local, la fecha y el total. Acá está el trabajo completo —qué se extrae, de dónde salen los datos, qué modelo, cuánto acierta y desde qué punto conviene automatizar— medido sobre 51 boletas chilenas reales.

7 SIMULACIONES 26 CONTROLES EN NODE 51 BOLETAS REALES SEPTIEMBRE 2026
00

Lo que el sistema lee bien y lo que todavía no

RESUMEN

Sobre 51 boletas chilenas reales, el sistema lee los tres campos del núcleo de acreditación —local, fecha y total, los tres a la vez— en el 73 % de los casos. Los montos salen casi sin error: el total en el 98 % y el subtotal en el 100 %.

Lo que más falla es el nombre del local, con un 79 %, y falla por errores de lectura visual que no se corrigen entrenando más: duplicar los parámetros del adaptador no movió esa cifra ni un punto.

Con 51 boletas, una tasa del 73 % trae un intervalo de ±12 puntos. Para apretarlo a cinco harían falta unas trescientas. Eso no invalida la cifra: la enmarca.

La conclusión operativa es un sistema de dos vías: las boletas en las que el modelo va seguro se acreditan solas y el resto va a una cola de revisión. Dónde se pone esa raya lo decide el costo de un error, y no la calidad del modelo.

NÚCLEO DE ACREDITACIÓN
73 % de las boletas con local, fecha y total correctos a la vez
MONTOS
Total 98 % · subtotal 100 %
NOMBRE DEL LOCAL
79 %, y no mejora con más entrenamiento
MARGEN DE LA MUESTRA
±12 puntos con 51 boletas
01

Antes de tocar una imagen,
escribir qué se va a sacar

CUATRO BLOQUES, CAMPOS CON TIPO Y FORMATO

La salida se definió por escrito antes de mirar la primera foto: qué campos salen de cada boleta, con qué tipo y en qué formato. Cuatro bloques —el local, el consumo, la lista de ítems y los totales— y un archivo que sirve de referencia para todo lo demás. Tres decisiones de ese contrato condicionaron el resto del proyecto.

DECISIÓN 01

Un campo que no está, vale vacío

Si el subtotal no aparece impreso, no se deduce sumando los ítems. El campo queda nulo y la boleta se manda a revisión.

POR QUÉ · EL SISTEMA MUEVE SALDO REAL. UN DATO FALTANTE SE DETECTA; UNO INVENTADO QUE PARECE CORRECTO LLEGA A DESTINO CON EL ERROR ESCONDIDO Y CUESTA PLATA.
DECISIÓN 02

Los montos son enteros en pesos

Sin puntos, sin signos, sin decimales.

POR QUÉ · EL PESO CHILENO NO USA DECIMALES, ASÍ QUE UN DECIMAL EN LA SALIDA ES SEÑAL DE ERROR DE LECTURA Y EL SISTEMA LO PUEDE RECHAZAR SOLO.
DECISIÓN 03

Dos niveles de «boleta correcta»

El núcleo de acreditación son los tres campos sin los cuales no se puede acreditar. El documento completo son todos.

POR QUÉ · EL NÚCLEO MIDE SI SIRVE PARA ACREDITAR PUNTOS; EL DOCUMENTO COMPLETO MIDE SI ADEMÁS SIRVE PARA SABER QUÉ CONSUME LA GENTE.
02

Tres mil boletas falsas
para medir sobre cincuenta y una de verdad

EL GENERADOR, EL CONJUNTO REAL Y LA PARTICIÓN

El conjunto real. 52 fotografías de precuentas chilenas tomadas con teléfono en condiciones auténticas, que corresponden a 51 documentos distintos. Cada una pasó por el mismo proceso: enderezar, tapar los datos personales conforme a la ley 21.719, y anotar a mano el contenido correcto. Esa anotación es la verdad de referencia.

Se descartaron fotos bajadas de internet, porque su procedencia no era clara. Es preferible medir sobre menos boletas legítimas que sobre más de origen dudoso.

El generador. Como no existe un conjunto grande de boletas chilenas anotadas, se construyó un programa que las fabrica. Arma el texto de una boleta y a la vez guarda la respuesta correcta —así la anotación sale gratis—, lo dibuja como lo imprimiría una térmica y después lo degrada: fondo de mesa, pliegues, arrugas, iluminación despareja, perspectiva, ruido y compresión.

La variación es deliberada: unas boletas dicen TOTAL, otras MONTO A PAGAR, otras NETO, para que el modelo aprenda el significado del campo y no una palabra. Con semilla fija: el mismo comando produce exactamente el mismo conjunto.

medido = f · p_vista + (1 − f) · p_nuevaLO QUE SE MIDE CUANDO UNA FRACCIÓN f DE LA PRUEBA YA ESTUVO EN ENTRENAMIENTO

La partición sin fuga. La regla que no se puede romper es que dos fotos de la misma boleta física no queden en grupos distintos. Si eso pasa, el modelo está viendo el examen y el resultado sale inflado sin que nada en el código falle. Las boletas reales van completas al grupo de prueba; las sintéticas se reparten entre entrenamiento y validación. Se verificó que ninguna imagen quedara en dos grupos.

Cuánto sube la cifra por dejar repetidas. A la izquierda, el conjunto de prueba: en rojo las que el modelo ya había visto. A la derecha, lo que se mide contra lo que de verdad sabe hacer con boletas nuevas. Mueve el cursor para cambiar la fracción repetida: la cifra sube sola, en línea recta, sin que el modelo haya mejorado nada.
03

La licencia eliminó
a la mitad de los candidatos

CUATRO FAMILIAS, CINCO CANDIDATOS, UN CRITERIO FIJADO ANTES

El problema —pasar de una foto a datos ordenados— se puede atacar de cuatro maneras distintas: reconocimiento óptico clásico seguido de reglas, reconocimiento óptico combinado con la posición del texto, modelos que van de la imagen a la estructura sin paso intermedio, y modelos multimodales generales.

Se compararon cinco candidatos concretos bajo un criterio fijado de antemano, con la licencia como filtro eliminatorio. Y ahí apareció el hallazgo más útil de la etapa: varios de los modelos más obvios no sirven para uso comercial.

YOLO se distribuye bajo una licencia que obliga a liberar el código del producto que lo use. LayoutLMv3 tiene los pesos bajo licencia no comercial. Incluso una versión de Donut afinada para boletas es no comercial. Como el encargo prohíbe entrenar con material que no permita uso comercial, esos quedaron fuera o sólo como referencia.

Los dos finalistas fueron Donut, hecho para ir de la imagen al JSON directamente, y Qwen2.5-VL de 3.000 millones de parámetros, multimodal general, con licencia comercial y buen desempeño en español. Donut no se pudo instalar por incompatibilidad con las versiones actuales de las librerías, que en sí es un dato sobre la madurez de su ecosistema —uno de los criterios de selección. El trabajo siguió con Qwen.

04

Por qué un 99 % de acierto
deja casi todas las boletas malas

TRES NIVELES DE MEDICIÓN Y UNA MULTIPLICACIÓN

La calidad se mide en tres niveles. El de carácter mira letra por letra. El de campo mira cada dato completo: el total está bien o mal, sin puntos intermedios. El de documento mira la boleta entera y exige todos los campos correctos a la vez.

p_documento = p_carácter ^ 400UNA BOLETA TIENE DEL ORDEN DE 400 CARACTERES · CON p = 0,99 LA BOLETA PERFECTA SALE EL 1,8 % DE LAS VECES
El acierto por carácter elevado a cuatrocientos. La curva calcula p400 punto a punto. Mueve el cursor: hace falta un 99,974 % por carácter para que nueve de cada diez boletas salgan perfectas. Por eso la métrica con la que se decide es el porcentaje de boletas con el núcleo completo, y no el acierto por letra.

El segundo número que hay que entender es desde qué confianza conviene acreditar sola una boleta. Eso no lo fija la calidad del modelo: lo fija el costo de equivocarse.

Si el modelo entrega una boleta con probabilidad p de estar correcta, conviene automatizar mientras el costo esperado de un error sea menor que el de revisarla a mano.

Con supuestos declarados —un revisor pagado al ingreso mínimo, unos 43 pesos por boleta revisada— el umbral va del 91 % si un error es barato al 99,8 % si es caro. Los costos reales los tiene la empresa, no el proyecto: el cálculo está hecho de forma que sólo hay que reemplazar dos números para actualizarlo.

p* = 1 − v / C_ev: LO QUE CUESTA REVISAR UNA BOLETA · C_e: LO QUE CUESTA UN ERROR QUE LLEGA A DESTINO
Dónde se cruzan los dos costes. La recta es lo que cuesta revisar a mano; la curva, el coste esperado de acreditar sola una boleta con confianza p. A la derecha del corte conviene automatizar. Mueve el cursor para cambiar cuánto cuesta un error: el umbral se mueve solo, y el modelo ni se entera.
05

Entrenar el 0,1 %
de un modelo de 3.758 millones

LoRA, UNA CORRIDA FALLIDA Y UN ERROR SISTEMÁTICO

El modelo se afinó con LoRA, que en vez de reentrenar los 3.758 millones de parámetros entrena unas matrices pequeñas añadidas al costado: unos pocos millones, menos del 0,1 % del total. Eso permite entrenar un modelo grande en una tarjeta gráfica modesta. Corrió en local, en una RTX 4060 Ti, porque las plataformas gratuitas con GPU cortan las sesiones por límite de tiempo.

Una corrida fallida que vale documentar. Entrenar en un formato numérico de 16 bits llamado fp16 volvió inestable el proceso: la medida de error se disparó y el modelo quedó dañado, al punto de producir un error al generar texto. Se corrigió pasando a bf16, bajando el ritmo de aprendizaje y limitando cuánto puede cambiar el modelo por paso.

El error sistemático del total. El modelo entrenado leía casi todo bien, pero al total le sumaba la propina: ponía el «total con propina» impreso en vez del consumo. Reforzar la instrucción no lo corrigió.

Se resolvió con post-procesamiento: como el contrato define el total como el subtotal menos el descuento, y el modelo lee bien el subtotal, el total se calcula en vez de confiar en el número que el modelo eligió. Eso no inventa datos: aplica una regla del contrato sobre campos que el modelo sí lee bien, que es exactamente lo que haría una capa de reglas de negocio en producción. Se reportan las dos cifras, en bruto y con post-procesamiento.

La medición del nombre del local se hizo con tolerancia, por dos vías: se acepta si difiere en una o dos letras —para no castigar un error de lectura en un nombre corto— o si coincide en al menos el 85 % del texto. Pero se rechaza si le falta una parte sustancial, como leer sólo «bar» cuando el local es «birra bar». Para acreditar puntos hay que identificar el local, no transcribir su nombre carácter por carácter.

06

El doble de parámetros
arregla los montos y no toca el nombre

ADAPTADOR r = 8 CONTRA r = 16, MISMA ARQUITECTURA

Se compararon dos configuraciones de LoRA sobre la misma arquitectura, midiendo el intercambio entre desempeño, memoria y tiempo. La segunda entrena el doble de parámetros.

Campo por campo, sobre las mismas 51 boletas. El adaptador grande mejora de forma clara la lectura de montos: el total sube al 98 % y el subtotal al 100 %. El núcleo completo pasa de 65 % a 73 %. El nombre del local se queda exactamente igual, y eso confirma que lo que falla ahí es lectura visual y no capacidad de adaptación.
MétricaLoRA r = 8LoRA r = 16
Núcleo de acreditación65,4 %73,1 %
Total88,5 %98,1 %
Subtotal90,4 %100 %
Propina sugerida96,2 %98,1 %
Nombre del local78,8 %78,8 %
Memoria picomenor9,25 GB
Tiempo de entrenamiento~9 h6,4 h

EL COSTO ESTÁ EN LA MEMORIA: LOS 9,25 GB DE PICO SUPERAN LOS 8 GB DE LA TARJETA, ASÍ QUE PARTE SE TRASLADA A LA MEMORIA DEL SISTEMA Y ESO RALENTIZA. EN UN SERVIDOR CON MÁS MEMORIA QUE LA USADA ACÁ, ESE COSTO DESAPARECE.

07

Dos vías:
acreditar solas las seguras, revisar el resto

LO QUE SE RECOMIENDA A LA EMPRESA

La arquitectura recomendada es Qwen2.5-VL de 3.000 millones de parámetros afinado con LoRA de tamaño 16. Da el mejor desempeño de lo probado, lee los montos casi sin error y su licencia permite uso comercial.

El sistema no debe acreditar todo de forma automática. Con un núcleo del 73 %, una de cada cuatro boletas tiene algún campo del núcleo mal, y acreditar esas cuesta plata. Cuánto cae de cada lado depende del umbral que la empresa elija, y ese umbral depende de cuánto le cuesta un error.

Para acreditar el total de forma confiable conviene mantener el post-procesamiento que lo calcula como subtotal menos descuento. El modelo lee el subtotal casi perfecto, así que el total calculado es más confiable que el total que el modelo elige leer.

La mejora que más rinde no es entrenar más. La medida de error del entrenamiento se estancó pronto, lo que sugiere que el modelo llegó al límite de lo que esta configuración puede sacar de los datos disponibles. Lo que rinde es conseguir más boletas reales y atacar la lectura del nombre del local.

08

Cinco riesgos declarados
antes de llevar esto a producción

LO QUE EL PROPIO INFORME DEJA ABIERTO

El tamaño de la muestra. 51 boletas dan un intervalo de más o menos doce puntos. Reportar una cifra con más precisión de la que la muestra permite es el riesgo, y por eso se declara el margen.

El intervalo de Wilson al 95 %, calculado para cada tamaño de muestra. La banda es lo que la medición podría valer en realidad. Con las 51 de hoy va de 59 % a 83 %. Mueve el cursor para ver cuánto se cierra al medir más: para bajar a ±5 puntos hacen falta unas trescientas boletas.

El nombre del local. Se lee bien en el 79 % de los casos, y los fallos que quedan son errores de lectura reales. El riesgo es que el sistema acredite por nombre de local y un local mal leído acredite al local equivocado. La mitigación es cruzar el nombre con el RUT o con un catálogo de locales de la red, en vez de confiar sólo en el texto leído.

La brecha entre lo sintético y lo real. El entrenamiento se hizo con boletas generadas. El modelo funciona sobre las reales, pero esa brecha no está caracterizada más allá de esta muestra: boletas de formatos que el generador no cubrió pueden leerse peor de lo que la cifra sugiere.

El umbral económico. Se calculó con supuestos declarados, no con cifras de la empresa. Si los costos reales son distintos, el umbral cambia. Está hecho de forma que sólo hay que reemplazar dos números.

La confianza no está calibrada. Cuando el modelo dice estar 90 % seguro, no necesariamente acierta el 90 % de las veces. El sistema de dos vías necesita esa confianza calibrada para decidir qué acreditar solo: aplicar el umbral sobre una confianza que no significa lo que parece es el riesgo, y calibrarla es un paso pendiente.

Lo que el modelo declara contra lo que acierta. La diagonal es una confianza honesta: decir 90 y acertar 90. La curva roja es el comportamiento típico de un modelo entrenado sin calibrar, seguro de más. Mueve el cursor en vertical para exagerar o suavizar ese exceso y mira dónde cae el 90 % declarado. El umbral del capítulo 04 se aplica sobre el eje horizontal, y lo que importa es el vertical.
09

Todo el proceso
se corre de nuevo desde cero

Y LAS CIFRAS DE ESTA PÁGINA, TAMBIÉN

El proyecto se reproduce con los scripts del repositorio: generar los datos sintéticos, validar las anotaciones, particionar sin fuga, entrenar, evaluar sobre las boletas reales, post-procesar y medir. Las imágenes y el modelo entrenado no se versionan por peso y por confidencialidad, pero se regeneran con los mismos comandos. Cada afirmación de desempeño del informe se reproduce corriendo el script de medición sobre las predicciones guardadas.

Las siete figuras de esta página calculan lo que muestran: la curva de p400, el umbral económico, el intervalo de Wilson, el efecto de la fuga y la comparación campo por campo salen de un módulo puro que veintiséis controles comprueban contra las cifras del informe antes de publicar. Ninguna figura es un video ni un dibujo.

0,99400
1,80 % de boletas perfectas
UMBRAL CON ERROR BARATO
91,4 %
UMBRAL CON ERROR CARO
99,78 %
WILSON SOBRE 37 DE 51
±11,9 puntos

MÉTODOS Y HERRAMIENTAS CITADAS

  1. [1] Informe final «Sistema de extracción de precuentas por visión computacional». José Miguel Pulgar, FIDELYA SpA, práctica profesional, septiembre de 2026. Documento interno; las cifras de esta página salen de ahí.
  2. [2] Qwen2.5-VL, modelo multimodal de 3.000 millones de parámetros. Alibaba Cloud, 2025. Licencia Apache 2.0.
  3. [3] Hu, E. et al. «LoRA: Low-Rank Adaptation of Large Language Models», 2021. El método con el que se afinó el modelo entrenando menos del 0,1 % de sus parámetros.
  4. [4] Kim, G. et al. «OCR-free Document Understanding Transformer (Donut)», 2022. Finalista descartado por incompatibilidad de librerías.
  5. [5] Huang, Y. et al. «LayoutLMv3», 2022. Descartado: pesos bajo licencia no comercial.
  6. [6] Wilson, E. B. «Probable Inference, the Law of Succession, and Statistical Inference», JASA 22(158), 1927. El intervalo con el que se acota la tasa medida sobre 51 boletas.
  7. [7] Ley 21.719 sobre protección de datos personales, Chile, 2024. Marco bajo el que se taparon los datos personales de las boletas reales.
  8. [8] Las figuras de esta página se calculan con nucleo.mjs y se comprueban con validar.mjs: 26 controles contra las cifras del informe.
ESCRITO POR José Miguel Pulgar

Ingeniería física. El sistema de extracción de precuentas por visión computacional es su proyecto de práctica profesional en FIDELYA SpA.