Progetto:Trascrizioni/Routine DjvuLibre/Djvutxt

Djvutxt modifica

Qui le cose si fanno interessanti, perchè il programma estrae lo strato testo di una pagina o del set completo di tutte le pagine.

Il comando deve avere la struttura:

djvutxt [options] <djvufile> [<outputfile>]

Le opzioni più interessanti sono:

  • -page=[pagine]: pagina da estrarre (o intervallo di pagine), espresso come numero di pagina (es. per visualizzare la pagina 2 scrivere -page=2)
  • -detail=[dettaglio]: dettaglio della struttura testo da visualizzare. I valori ammessi sono page, column, region, para, line, word, char. Per capire l'output del comando, è necessario immaginare il testo della pagina come una serie di box rettangolari annidati l'uno dentro l'altro, ognuno con le proprie coordinate: queste matrioske rappresentano i rettamngoli che contengono il testo nell'immagine di dimensioni page (le stesse che sono viualizzate da djvudump). Nei file djvu di Internet Archive, si può chiedere dettagli fino a word (le singole parole all'interno delle linee, con lo spazio usato come separatore). In pratica, il file contiene tutti i dati che sono rappresentati dall'immagine della pagina, impostando View->Display-Hidden text, ossia le coordinate dei rettangolini che contengono le singole parole, e il testo delle parole contenute; ma contiene anche i dati delle strutture gerarchicamente superiori, linee, paragrafi, regioni, colonne. Impostando -detail si stabilisce a che livello fermarsi nella rappresentazione, e si ottiene per ogni livello finale le coordinate del rettangolo che contiene il testo ed il testo.

Ma le cose richiedono un esempio pratico, e molti test da parte di chi sta leggendo.

Cerchiamo di ottenere il testo contenuto nella pagina 10 di lincoln.djvu con dettaglio line:

 djvutxt -page=10 -detail=line lincoln.djvu >test.txt

Si ottiene, all'interno del file test.txt:

(page 180 209 1599 1797 
  (column 180 1514 1599 1797 
    (region 180 1514 1599 1797 
      (para 180 1649 1599 1797 
        (line 556 1749 1218 1797 "Proprietà Letteraria. ") 
        (line 180 1649 1599 1708 
          "/ diritti di traduzione sono riservati per tatti i paesi. " ) ) 
      (para 358 1514 1426 1618 
        (line 358 1572 1426 1618 
          "Nella filigrana di ogni foglio deve esser visibile " ) 
        (line 670 1514 1119 1558 "l'impresa editoriale. ") ) ) ) 
  (column 617 209 1167 232 
    (region 617 209 1167 232 
      (para 617 209 1167 232 
        (line 617 209 1167 232 "TIP. BLONDI » PARMEGGIAIMI - MODENA ") ) ) ) )

Con lo stesso comando, impostando -detail=para, si ottiene:

(page 180 209 1599 1797 
  (column 180 1514 1599 1797 
    (region 180 1514 1599 1797 
      (para 180 1649 1599 1797 
        "Proprietà Letteraria. \n/ diritti di traduzione sono riservati per tatti i paesi. \n" ) 
      (para 358 1514 1426 1618 
        "Nella filigrana di ogni foglio deve esser visibile \nl'impresa editoriale. \n" ) ) ) 
  (column 617 209 1167 232 
    (region 617 209 1167 232 
      (para 617 209 1167 232 "TIP. BLONDI » PARMEGGIAIMI - MODENA \n") ) ) )

e impostando -detail=page:

(page 180 209 1599 1797 
  "Proprietà Letteraria. \n/ diritti di traduzione sono riservati per tatti i paesi. \n\037Nella filigrana di ogni foglio deve
esser visibile \nl'impresa editoriale. \n\037\035\013TIP. BLONDI » PARMEGGIAIMI - MODENA \n\037\035\013" )

A chi legge, il compito di osservare con cura le differenze fra i tre output, trovando le parti costanti e le parti variabili. Da notare che man mano che si chiedono output di maggiore livello, compaiono, nel testo, alcuni caratteri speciali come \n, \037, \035 che rappresentano le fine linea e la fine di altre regioni; solo il fine linea è obbligatorio.