imdl-ai-translator è un'applicazione Python che traduce in automatico il testo contenuto nei file IDML di Adobe InDesign usando le API di OpenAI, con l'obiettivo di conservare impaginazione e formattazione del documento originale. È un progetto che ho pubblicato sul mio account GitHub, tozzilla, pensato per chi lavora con documenti professionali.
Il problema che risolve
Tradurre un documento impaginato è più complicato che tradurre un testo. Se si copia il contenuto fuori da InDesign, lo si traduce e lo si reincolla, si perde tempo e si rischiano errori di formattazione. Lavorare direttamente sui file IDML, il formato di InDesign usato dal progetto, permette invece di intervenire sul contenuto testuale senza toccare l'impaginazione.
L'idea alla base del progetto è quindi lavorare direttamente sul file, sostituire il testo originale con la traduzione e lasciare intatto tutto il resto.
Com'è fatto un file IDML
IDML è l'acronimo di InDesign Markup Language: un file .idml è un pacchetto ZIP che contiene file XML, non un documento binario unico. Secondo la guida Inside IDML, il punto d'ingresso è designmap.xml, che fa da indice centrale: ordina le pagine doppie, richiama le storie e le risorse e raccoglie le impostazioni del documento.
I contenuti sono separati per ruolo:
- Spreads: un file XML per ogni pagina doppia, con gli elementi di pagina (riquadri, forme, linee) e le loro posizioni e dimensioni, ma senza il testo;
- Stories: un file XML per ogni storia, con il testo e la formattazione applicata;
- Resources: le definizioni condivise, come gli stili in
Styles.xml, i font e i colori; - MasterSpreads: le pagine mastro da cui le pagine normali ereditano gli elementi.
Un riquadro di testo non contiene il proprio testo: rimanda a una storia, e più riquadri possono puntare alla stessa storia, così un articolo può scorrere su più pagine. Per questo l'IDML è adatto a un intervento automatico: il testo è già isolato dalla geometria.
Per i dettagli normativi conviene riferirsi alla documentazione Adobe dell'SDK di InDesign.
Perché l'IDML è più difficile del testo semplice
Il fatto che il testo stia nelle storie non rende il lavoro banale. Per come è strutturato il formato, la formattazione è applicata a porzioni del testo, per cui una frase con una parola in grassetto o un link può essere spezzata in più frammenti. Tradurre ogni frammento da solo produce frasi innaturali, perché l'ordine delle parole cambia da una lingua all'altra; tradurre la frase intera obbliga invece a rimappare la formattazione sul risultato.
C'è poi il problema dello spazio. È un'osservazione generale, non un dato documentato: l'italiano tende a occupare più caratteri dell'inglese, e un testo più lungo in un riquadro di dimensioni fisse può non starci più. In InDesign questo si manifesta come testo in eccesso, che va sistemato a mano. La verifica dell'impaginazione resta quindi un passaggio da fare con il documento aperto.
Come funziona
Il progetto si basa su due elementi:
- Python per leggere il file IDML, estrarre i contenuti testuali e riscriverli;
- le API di OpenAI per la traduzione, con modelli come GPT-3.5 e GPT-4, scelti per accuratezza e scorrevolezza del testo risultante.
Il punto di forza che distingue lo strumento dai traduttori generici è proprio l'attenzione all'integrità del layout: il documento tradotto deve poter essere riaperto in InDesign senza dover rifare l'impaginazione da zero.
Com'è organizzato il repository
Il repository ha una struttura essenziale e ordinata. Il file README.md offre una panoramica del progetto, mentre requirements.txt elenca le dipendenze necessarie, così da poter preparare l'ambiente con un solo comando:
pip install -r requirements.txt
La documentazione e l'elenco delle dipendenze permettono di capire rapidamente cosa fa il progetto e come metterlo in funzione.
Contributi e sviluppi
Il progetto è pensato come open source e accoglie i contributi della comunità degli sviluppatori: miglioramenti del codice, correzioni di bug o nuove funzionalità. È il modo più utile per farlo crescere, soprattutto sui casi d'uso che l'autore da solo non incontra.
Cautele nell'uso di un modello linguistico
La documentazione OpenAI sulla generazione di testo afferma che l'output dei modelli non è deterministico e che anche versioni diverse dello stesso modello possono dare risultati differenti; raccomanda inoltre di fissare la versione del modello in produzione e di misurare il comportamento dei prompt con test e valutazioni. Da questo si ricavano alcune precauzioni, che sono indicazioni di buon senso e non prescrizioni della documentazione:
- usare un glossario di termini fissi, passato al modello nelle istruzioni, per nomi di prodotto e terminologia tecnica;
- confrontare le traduzioni di uno stesso termine in punti diversi del documento, perché la coerenza non è garantita;
- far rileggere il risultato a una persona che conosce l'argomento prima della consegna.
Perché un progetto così
La traduzione automatica dei documenti professionali sta diventando un caso d'uso concreto dell'intelligenza artificiale: non più solo testi sciolti, ma file complessi in cui il contenuto è inscindibile dalla forma. Un buon traduttore automatico, in questo contesto, non si valuta soltanto dalla qualità della frase, ma da quanto lavoro di rifinitura resta dopo.
Come per qualsiasi traduzione generata da un modello, resta consigliabile una revisione umana, soprattutto per cataloghi, manuali e documenti destinati a clienti. L'automazione serve a ridurre il tempo di lavoro, non a eliminare il controllo finale sul risultato.



