# Acta Faro — demostración ficticia de saneación de PDF

Todos los nombres, códigos y direcciones de este kit son **inventados**. No contiene documentos ni datos de usuarios. El ejemplo muestra por qué un rectángulo negro dibujado encima de un PDF no equivale a una redacción aplicada; también muestra que un PDF con una página escaneada puede tener texto visible en píxeles aunque la extracción textual devuelva vacío.

## Archivos

- `acta-faro-original-ficticia.pdf`: fuente con tres campos ficticios visibles, autor en metadata, comentario y adjunto ficticios.
- `acta-faro-tapada-no-compartir.pdf`: los tres campos se ven tapados, pero el texto extraíble y las otras capas siguen presentes. **No imites esta técnica con datos reales.**
- `acta-faro-copia-saneada.pdf`: esos campos se eliminaron con redacción aplicada; se borraron explícitamente el comentario, el adjunto y la metadata del ejemplo. Es una **copia saneada del fixture**, no una certificación para archivos ajenos.
- `acta-faro-escaneo-control.pdf`: página raster ficticia; su texto visible forma parte de la imagen y no aparece en la extracción textual local. **No es un documento saneado.**
- `fixture.json`: única fuente declarativa de las frases y marcadores ficticios.
- `manifest.json`: hashes SHA-256, versiones y resultados observados por superficie.
- `checksums.sha256`: hashes de los archivos principales, excepto el propio ZIP.
- `acta-faro-kit-demostracion.zip`: copia de todo el kit, incluido el script de generación/verificación en `scripts/`.

## Comprobación simple

1. Abre el PDF tapado y el saneado. Los campos negros se parecen a la vista.
2. En el PDF tapado, busca `CODIGO_FICTICIO_FARO_4827` o selecciona/copia el área: el valor sigue disponible. En la copia saneada, esa búsqueda no debería encontrarlo.
3. En propiedades del PDF original o tapado, revisa el autor; en paneles de comentarios/adjuntos, revisa las otras capas. El comportamiento exacto del visor varía.
4. Abre el scan-control: el marcador `FARO-PIXEL-FICTICIO` se ve en la página, aunque un extractor de texto sin OCR no lo lea.

La búsqueda/copiar no bastan para verificar un archivo propio. Las imágenes escaneadas, OCR, campos, comentarios, adjuntos, versiones anteriores, metadata, objetos incrustados y el contexto de la información exigen revisión específica. No subas información sensible a un servicio externo solo porque este ejemplo pase sus comprobaciones.

## Reproducción técnica local

Requiere Python 3.11 y `PyMuPDF`, `pdfplumber` y `Pillow`. El kit se probó con PyMuPDF 1.24.14, pdfplumber 0.10.2 y Pillow 10.0.0. Desde la carpeta extraída:

```powershell
python scripts/build-sanitized-document-fixture.py verify --output .
python scripts/build-sanitized-document-fixture.py generate --fixture fixture.json --output regenerated
python scripts/build-sanitized-document-fixture.py verify --output regenerated
```

`verify` usa dos extractores independientes de texto de página (PyMuPDF y pdfplumber), enumera metadata, anotaciones y adjuntos con PyMuPDF, comprueba hashes y estructura del ZIP, y revisa las zonas negras renderizadas. No ejecuta OCR, no inspecciona todo el formato PDF, no transmite archivos ni declara un documento «seguro» o «anónimo». Los cuatro PDF se generan sin conexión a Internet.

Método y límites técnicos: [PyMuPDF, redacciones](https://pymupdf.readthedocs.io/en/latest/page.html), [PyMuPDF, saneamiento/guardado](https://pymupdf.readthedocs.io/en/latest/document.html), [LibreOffice, Redaction](https://help.libreoffice.org/latest/en-US/text/shared/guide/redaction.html) y [Microsoft, Document Inspector](https://support.microsoft.com/en-us/office/collab-files/remove-hidden-data-and-personal-information-by-inspecting-documents-presentations-or-workbooks). LibreOffice y Microsoft documentan alternativas para documentos propios; **no se usaron** para producir estos PDF.
