Ir al contenido

Documentación de Fulgoria

Fulgoria extrae datos estructurados de documentos que fueron diseñados para ser leídos, no parseados. Le enseñas una disposición una sola vez marcando columnas; a partir de entonces lee todos los documentos de ese tipo y te da CSV limpio. Todo lo de abajo ocurre en tu navegador.

Haz clic en Abrir PDF o imagen y elige un archivo, o selecciona Ver un ejemplo para cargar un extracto bancario de muestra. Se aceptan tanto PDFs digitales como escaneos o fotos. Los escaneos y las imágenes se leen con OCR local (Tesseract.js), así que incluso una imagen de un extracto se vuelve texto sin salir de tu máquina.

Fulgoria autodetecta las columnas como primera pasada. Las refinas arrastrando sobre el documento para indicar dónde vive cada dato. Luego asigna un rol a cada columna:

  • fecha — la fecha de la transacción
  • descripción — el concepto o beneficiario
  • débito / crédito / importe con signo — el valor del movimiento
  • saldo — el saldo corriente
  • texto — cualquier otra columna que quieras conservar

También puedes aplicar formato libre, estilo Excel por columna (patrones de fecha y número, WYSIWYG) y definir reglas de exclusión por contenido para saltear encabezados repetidos, filas de “TOTALES” y ruido similar.

Un editor estilo planilla te permite corregir cualquier celda, con el saldo recalculándose en vivo. Soporta buscar y reemplazar, agregar y eliminar filas, pegar desde Excel, deshacer/rehacer, rellenar hacia abajo, categorización asistida, banderas de calidad, y valores de apertura/cierre editables.

Cuando los datos están limpios, expórtalos:

  • CSV — los movimientos, listos para una planilla o tu herramienta de contabilidad.
  • Plantilla — la geometría como un archivo reutilizable .ext.json o .ext.yaml (ver más abajo).
  • Enviar a Escriba — entrega el resultado limpio a tu Escriba local.

Entrada

PDFs digitales y escaneos / imágenes (PNG, JPG y similares). Los documentos multipágina y los PDFs multicuenta — por ejemplo pesos y dólares en un mismo archivo — producen una tarjeta por cuenta.

Salida

CSV para los movimientos, y archivos de plantilla en .ext.json o .ext.yaml para la disposición. Un traspaso “Enviar a Escriba” pasa el resultado al resto de la suite.

La primera vez que marcas el extracto de un banco, Fulgoria puede guardar esa disposición como una plantilla. La próxima vez que abras un documento del mismo tipo, se reconoce automáticamente y las columnas ya están en su lugar — sin volver a marcar.

Las plantillas se pueden cargar desde un archivo .json descargado o elegir entre tus plantillas guardadas dentro de la app.

Todo se ejecuta en tu navegador. El PDF se abre, lee y procesa dentro de tu máquina, y no hay una sola solicitud externa — las fuentes y librerías están incorporadas en la app. La privacidad no es una función agregada; es la arquitectura.

Cuando Fulgoria está self-hosted, el servidor fino sigue sin recibir nunca el documento. Solo sirve los archivos estáticos y maneja el login opcional. Aplica una CSP estricta y cabeceras de seguridad, y nunca expone .env, server.js ni muestras privadas.

Para producción, Fulgoria incluye un servidor fino (server.js, Node/Express) cuyas únicas tareas son servir la app estática y protegerla detrás de un login opcional leído desde .env.

Define AUTH_ENABLED=true y configura AUTH_USER y AUTH_PASSWORD. Las sesiones se firman con SESSION_SECRET y duran SESSION_TTL_HOURS horas. Detrás de HTTPS, mantén COOKIE_SECURE=true.

Genera un hash bcrypt de contraseña y un secreto de sesión así:

Ventana de terminal
node server.js --hash 'your-password' # → AUTH_PASSWORD
openssl rand -hex 32 # → SESSION_SECRET

Todos los ajustes viven en .env:

VariablePredeterminadoPropósito
PORT3000Puerto del servidor.
AUTH_ENABLEDtrueActiva o desactiva el login.
AUTH_USERdiegoNombre de usuario del login.
AUTH_PASSWORD(vacío)Contraseña en texto plano o hash bcrypt.
SESSION_SECRET(vacío)Firma la cookie de sesión.
SESSION_TTL_HOURS12Duración de la sesión en horas.
COOKIE_SECUREtruetrue detrás de HTTPS, false para http:// local.
ESCRIBA_URL(vacío)Destino de “Enviar a Escriba”; vacío recurre a /.