Blog IA in pratica

Il file che carichi non è il documento che hai letto

Revisioni cancellate, commenti, fogli nascosti: quando passi un documento a un assistente non gli passi la pagina che vedi, gli passi il pacchetto. Sullo stesso file, tre estrattori di testo leggono tre cose diverse.

La scena è questa: hai finito di rileggere l'offerta, la trascini dentro la finestra dell'assistente e scrivi «riassumila in dieci righe per il cliente». Hai letto il documento, certo. Ma non hai letto il file, e le due cose non coincidono.

Non è una sottigliezza da informatici. Un documento di Word, Excel o PowerPoint non è una pagina: è un archivio compresso — un pacchetto OOXML, il formato aperto descritto dallo standard ECMA-376 che sta dentro le estensioni .docx, .xlsx e .pptx — fatto di una ventina di file separati. Alcuni compongono la pagina che vedi; altri contengono quello che hai deciso di non vedere: il testo cancellato con le revisioni attive, i commenti, il nome di chi ha scritto cosa, i fogli nascosti, la copia dei dati che alimentava la tabella pivot eliminata tre versioni fa.

Un documento Office è un archivio, e si apre come tale

Lo si verifica in dieci secondi, senza installare niente. Un file .docx costruito per questa prova nel container di redazione contiene queste parti:

[Content_Types].xml
_rels/.rels
docProps/core.xml
docProps/app.xml
word/document.xml
word/_rels/document.xml.rels
word/styles.xml
word/settings.xml
word/fontTable.xml
word/theme/theme1.xml
customXml/item1.xml
docProps/thumbnail.jpeg
word/comments.xml

word/document.xml è il testo. docProps/core.xml sono le proprietà: nel file di prova contiene <dc:creator>Mario Rossi</dc:creator> e <cp:lastModifiedBy>Giulia Bianchi</cp:lastModifiedBy>, due nomi che nella pagina stampata non compaiono da nessuna parte. I commenti stanno in un file tutto loro, word/comments.xml; docProps/thumbnail.jpeg è un'anteprima grafica, che in certi casi ritrae una versione precedente.

La frase cancellata è ancora lì dentro

Il punto meno intuitivo riguarda le revisioni. Quando lavori con il rilevamento delle modifiche attivo e cancelli una frase, quella frase non esce dal file: cambia solo contenitore. La documentazione Microsoft dell'elemento w:delText riporta la definizione dello standard: «The delText element shall be used for all text runs which are part of a region of text that is contained in a deleted region using the del element». In pratica il testo eliminato viene spostato dentro un elemento <w:del> che porta anche l'attributo w:author, cioè il nome di chi ha fatto la cancellazione, e la data.

Finché non accetti le revisioni, nel documento convivono due testi: quello che vedi e quello che hai tolto. È un comportamento voluto e utile, e diventa un problema solo quando il file esce di mano.

Tre estrattori, tre testi diversi

Qui sta la ragione per cui la faccenda riguarda gli assistenti in particolare. Un modello linguistico non apre il documento: riceve del testo, prodotto da un programma di estrazione che qualcuno ha scelto al posto tuo. Lo stesso file di prova — una frase cancellata con le revisioni, una inserita e un commento — è stato dato a tre strade diverse, con Python 3.13.16.

python-docx 1.2.0, lettura dei paragrafi:
  'Offerta economica per il progetto di migrazione.'
  'Il corrispettivo proposto e di 24.000 euro.'
  ''

docx2txt 0.9:
  Offerta economica per il progetto di migrazione.
  Il corrispettivo proposto e di 24.000 euro.
  Il prezzo non e trattabile.

lettura grezza di word/document.xml, tag rimossi:
  Offerta economica per il progetto di migrazione.
  Il corrispettivo proposto e di 24.000 euro.
  Possiamo scendere a 19.000 se insistono.
  Il prezzo non e trattabile.

Tre risultati diversi dallo stesso file. La prima libreria ignora sia la frase inserita sia quella cancellata; la seconda legge l'inserimento e non la cancellazione; la terza, che è anche la più semplice da scrivere, restituisce tutto, compresa la frase «Possiamo scendere a 19.000 se insistono» che nel documento non c'è più. Il commento, che sta in un file a parte, non compare in nessuna delle tre: comparirebbe in un estrattore che legge anche quella parte.

Il file di prova è stato costruito a mano e non con Word, quindi non misura che cosa facciano i prodotti commerciali. Dimostra una cosa più semplice: il testo che un programma ricava da un documento dipende da come è scritto quel programma, e la differenza fra una scelta e l'altra è esattamente il materiale che preferiresti non spedire. Quando carichi un file su un servizio, quella scelta l'ha fatta il fornitore e quasi mai è documentata. Conseguenza pratica: l'unica ipotesi prudente è che l'assistente legga tutto quello che sta nel pacchetto.

Che cosa cerca il Controllo documento

Office ha da anni uno strumento fatto apposta, in italiano «Controlla documento» (Inspect Document), raggiungibile da File → Informazioni → Verifica documento; il percorso cambia di poco fra le versioni. La documentazione Microsoft elenca che cosa ispeziona, modulo per modulo, ed è un elenco che vale la pena leggere per intero almeno una volta.

Per Word cerca «Comments, revisions, versions, and annotations» e «Document properties and personal information», che la pagina precisa comprendere metadati, proprietà di SharePoint e proprietà personalizzate, più intestazioni e filigrane, dati XML personalizzati, contenuto invisibile e testo nascosto. Per Excel l'elenco è più lungo: tabelle e grafici pivot, la cache delle sequenze temporali, righe e colonne nascoste, fogli e nomi nascosti, collegamenti esterni. Per PowerPoint: contenuto invisibile sulla diapositiva, contenuto fuori dalla diapositiva e note del relatore. Per tutti e tre: documenti incorporati, oggetti OLE, modelli di dati, macro e moduli VBA.

Le due voci da tenere a mente sono la cache delle pivot e il contenuto fuori diapositiva. La prima è la copia dei dati di origine che la tabella pivot si porta dietro: puoi aver cancellato il foglio con i dettagli e avere ancora, nel file, la riga per riga da cui quei totali venivano. La seconda è la slide su cui qualcuno ha parcheggiato un grafico «per dopo», spostandolo oltre il bordo.

Avvertenze dello strumento, nelle parole di Microsoft

La documentazione è esplicita su tre limiti. Primo, la rimozione può essere definitiva: «If you remove hidden content from your document, you might not be able to restore it by selecting Undo», e per questo la pagina raccomanda di lavorare su una copia — «We highly recommend that you use the Document Inspector on a copy of your original document». Secondo, non vede tutto: il modulo del testo nascosto non rileva il testo bianco su fondo bianco, e quello del contenuto invisibile non rileva gli oggetti coperti da altri oggetti. Terzo, «Microsoft does not support the automatic removal of hidden information for signed or protected documents, or for documents that use Information Rights Management (IRM)»: su un documento firmato va fatto prima, non dopo.

Perché con un assistente cambia la scala, non la natura

Il problema è vecchio quanto i documenti, e per anni si è manifestato come incidente raro: il contratto mandato al cliente con dentro i commenti interni. Con gli assistenti cambiano tre cose — e queste sono considerazioni di buon senso, non dati verificati.

La prima è la frequenza: si caricano decine di file dove prima se ne mandava uno, con gesti rapidi e senza il passaggio mentale dell'«allegare». La seconda è il rimbalzo: se la frase cancellata entra nel testo estratto può rientrare nel riassunto che poi gira per posta, e a quel punto l'ha scritta l'assistente, non la revisione. La terza riguarda dove finisce il file: diversi servizi lo conservano per rispondere alle domande successive, o lo indicizzano. Non è una cosa che si deduce, è una cosa che si legge nelle condizioni del servizio e nella documentazione del fornitore — la pagina da aprire prima di usarlo, non dopo.

Cosa fare, in ordine

La domanda da farsi per prima non è come ripulire il file, ma se il file debba partire. Quasi sempre quello che serve all'assistente è il testo di tre pagine, non il documento con la sua storia: incollare il testo, o salvare una copia in formato semplice, risolve il problema all'origine ed è anche più veloce. Il file intero serve quando conta l'impaginazione, le formule o le immagini.

Quando il file deve partire davvero, conviene lavorare su una copia dedicata — una cartella «da inviare» separata evita di ispezionare per sbaglio l'originale — e in quella copia accettare o rifiutare le revisioni in modo consapevole, perché accettarle tutte in blocco non è una pulizia ma una decisione sul contenuto. Poi si esegue il Controlla documento e si legge che cosa segnala, senza premere «Rimuovi tutto» per riflesso: la riga sui due fogli nascosti vale la pena di capirla prima di cancellarli. Per i fogli di calcolo con dati di origine riservati è spesso più pulito esportare i soli valori in un CSV che ripulire la cartella di lavoro.

Resta il principio generale, che in materia di dati personali è scritto nel considerando 39 del regolamento europeo: «I dati personali dovrebbero essere adeguati, pertinenti e limitati a quanto necessario per le finalità del loro trattamento». È una considerazione introduttiva e non il testo di un articolo, e questo non è un parere legale; ma come criterio operativo funziona benissimo anche per un file che non contiene dati personali: mandare meno è la misura di sicurezza che non si può configurare male.

Da fare questa settimana

Prendi l'ultimo documento che hai caricato su un assistente, fanne una copia, rinominala con estensione .zip e aprila: in due minuti vedi quante parti contiene e che nomi stanno dentro docProps/core.xml. Poi esegui il Controlla documento sulla stessa copia e leggi che cosa trova, senza rimuovere niente: è il modo più rapido per scoprire quali dei tuoi modelli si portano dietro materiale che non sapevi di spedire. Infine, se c'è una regola scritta su quali file possono andare a un assistente, aggiungici una riga sulla copia ripulita; se la regola non c'è, quella riga è un buon posto da cui cominciare a scriverla.