Suite forense web para auditoria de integridad documental (.pdf y .docx) e imagen, con enfoque en evidencia tecnica reproducible y politica conservadora.
ScanIt responde una pregunta concreta: "¿hay señales tecnicas de manipulacion o generacion sintetica?"
No adivina. Aplica Zero Guessing Policy para priorizar trazabilidad y reducir falsos positivos agresivos.
Principios del proyecto:
no_concluyente) cuando falta soporte suficiente.npm install
npm run dev
Abre http://127.0.0.1:5173, sube un .pdf o .docx y ejecuta la auditoria.
Si quieres evaluar el dataset completo:
npm run eval:dataset
Se generaran reportes en dataset/reports/.
npm run dev).dataset/.verdictanomaliesevidenceCoverageconfidencenpm run eval:dataset para validar comportamiento global.docx y pdf.[AUDIT], [CHECK], [FAIL], [ALERTA]).SvelteKit + Svelte 5+server.tsmammoth, jszip, pdfjs-dist, pdf-parsetesseract.jsgroq-sdkjspdfEste proyecto se distribuye bajo licencia PolyForm Noncommercial 1.0.0 (ver LICENSE).
Para uso comercial, licencia comercial separada y acuerdo directo con el autor.
src/routes/+page.svelte: UI principal y flujo de auditoria.src/routes/api/audit-document/+server.ts: pipeline forense documental.src/routes/api/audit-image-ai/+server.ts: capa visual IA.scripts/eval-dataset.mjs: evaluacion masiva del dataset.scripts/eval-until-noon.ps1: bucle de reintentos hasta ventana horaria.dataset/real y dataset/ia: corpus etiquetado para calibracion.dataset/reports: resultados (eval-details-*, eval-metrics-*, parciales).Pasada completa mas reciente documentada:
Archivo de referencia:
dataset/reports/eval-metrics-2026-03-28T17-42-27.106Z.jsonNota: los valores cambian al recalibrar reglas o variar el estado de servicios IA.
GROQ_API_KEY=tu_api_key
PUBLIC_SITE_URL=http://localhost:5173
# Opcional: pausa capa linguistica en PDF
SCANIT_SAFE_MODE=false
# Umbral para permitir "anomalias_detectadas" en PDF
# cuando solo existe LINGUISTIC_AI_VERY_HIGH
SCANIT_PDF_LINGUISTIC_DECISIVE_MIN=90
# Si Groq falla en PDF breve, no permitir "integro"
SCANIT_PDF_INTEGRO_MAX_WORDS_IF_LINGUISTIC_ERROR=600
scripts/eval-dataset.mjs)SCANIT_EVAL_URL=http://127.0.0.1:5173/api/audit-document
SCANIT_EVAL_FETCH_ATTEMPTS=6
SCANIT_EVAL_MAX_PER_CLASS=0
SCANIT_EVAL_PARTIAL_EVERY=10
SCANIT_EVAL_RUN_MS=0
npm install
npm run dev
Servidor local fijado en:
http://127.0.0.1:5173 (strictPort: true en Vite)Chequeos recomendados:
npm run check
npm run build
npm run eval:dataset
set NODE_OPTIONS=--dns-result-order=ipv4first
set SCANIT_EVAL_URL=http://127.0.0.1:5173/api/audit-document
node scripts/eval-dataset.mjs
powershell -ExecutionPolicy Bypass -File .\scripts\eval-until-noon.ps1
integro: señales consistentes y cobertura suficiente.anomalias_detectadas: presencia de señales tecnicas relevantes.no_concluyente: evidencia insuficiente, conflictiva o no robusta.Reglas destacadas:
integro.GROQ_API_KEY, PUBLIC_SITE_URL, opcionales SCANIT_*).Antes de publicar el repositorio:
dataset/real privado).dataset/reports)..env ni secretos (GROQ_API_KEY).ScanIt es una herramienta de apoyo tecnico. No sustituye evaluacion humana ni asesoramiento legal/pericial formal.