Aiuto:Gestione file djvu/Uso e analisi del testo xml

Premessa e prime note modifica

Se il corpo pagina contiene la rappresentazione xml del testo, tratta da un file _djvu.xml, l'intero contenuto è costituito da un codice <OBJECT....> .... >/OBJECT).

Questa funzione legge il testo e lo trasforma in un oggetto jQuery:

  • xml=$(leggiBox());

Le dimensioni della pagina rappresentata sono registrate negli attributi width e height dell'oggetto:

  • xml.attr("width")*1 -> 1965
  • xml.attr("height")*1 -> 3421

Una funzione rect(elemento) restituisce le dimensioni del rettangolo rappresentato dall'elemento passato come parametro, espresso come coordinate del punto top-left, larghezza e altezza del rettangolo.

  • rect(xml.find("HIDDENTEXT")) -> [31, 246, 1533, 2866]
  • rect(xml.find("PARAGRAPH").eq(1)) -> [50, 502, 1514, 821]

La posizione e la larghezza relativa dei box colonna, regione, paragrafo rispetto a quello del testo completo permettono di riconoscere alcuni elementi di formattazione: blocco a sinistra - blocco normale a piena larghezza - blocco indentato a sinistra - blocco centrato - blocco a destra

All'interno dei box la comparazione fra la larghezza delle linee e quella dell'intero blocco permette di riconoscere: testo giustificato - testo non giustificato.

All'interno dei blocchi giustificati la prima linea indentata direttamente o inversamente conferma l'inizio di un paragrafo.

La prima e l'ultima linea potrebbero rappresentare l'header e il footer e presentano allora "anomalie" rispetto al resto delle linee della pagina.

In pratica: i tools in sviluppo (aprile 2018) modifica

L'utilizzo di tutti i dati di un eventuale xml caricato come prima versione di una pagina richiede:

  • il salvataggio del testo xml;
  • la sua elaborazione e conversione in normale testo;
  • la sostituzione del codice xml con il normale testo nella pagina.

Dopo una fase di test, sulla base di due caricamenti di prova via bot del codice xml in tutte le pagine di due volumi BEIC con testo particolarmente complesso (Opere di Metasrtasio, I e Opere di Metastasio, II è disponibile in Utente:Alex brollo/xml2text.js una funzione xmlGo(tipo) che esegue le tre operazioni. Al momento gli script, in fase di testo, non sono all'interno di una closure; generano e gestiscono una variabile globale xmlData, dizionario con due proprietà:

  • xmlData.PageName, nome della pagina corrente come in wgPageName;
  • xmlData.xml, testo xml della pagina corrente, che viene conservato fino all'uscita dalla pagina e che contiene una stringa vuota nel caso che il testo xml non sia disponibile.

La chiamata a xmlGo(tipo) con qualsiasi valore di tipo carica l'eventuale xml. Avviene attraverso un bottone in bottoniera chiamato Xml.

La chiamata xmlGo(1) converte il testo basandosi sulla suddivisione in blocchi (colonne, regioni, paragrafi...) originale come da output FineReader.

La chiamata xmlGo(2) rielabora profondamente la struttura del testo riordinando le parole in linee all'interno di un unico paragrafo; aggira e risolve eventuali errori di FineReader in fase di analisi del layout della pagina. Avviene attraverso un bottone in bottoniera chiamato Reorder.

Al momento l'interfaccia utente per chiamare queste funzioni (che operano sia in modifica normale che in ambiente eis) va attivata modificando la propria pagina PersonalButtons.js.