Progetto:Trascrizioni/Dentro l'OCR

In questa pagina mi propongo di annotare alcune recenti "scoperte" riguardanti l'OCR con tesseract, frutto di serate di discussioni e prove insieme a @C.R. e dei preziosi e puntuali suggerimenti di Federico Boschetti. Si tratta di ottenere la liberazione dai vincoli:

  1. commerciali, FineReader11 è a pagamento;
  2. di dizionario, any2djvu dispone solo di un dizionario inglese;
  3. di resa grafica, Internet Archive produce djvu molto compresso, spesso francamente bruttino;
  4. di dipendenza dal misterioso OCR interno di Windows, su cui si appoggia DjvuToy.

Iniziare a dissodare il problema modifica

Le fasi per produrre un file djvu finale con strato testo, usando tesseract come "motore OCR" sono:


  • digitalizzazione per immagini del testo cartaceo
    • scansione/fotografia digitale delle immagini.
    • recupero/utilizzo di scansioni/fotografie fatte da altri e "montate" in file di vari formati (in genere pdf)
  • normalizzazione delle immagini
    • divisione di pagine doppie o eliminazione di parte della pagina precedente/seguente nell'immagine
    • raddrizzamento
    • centratura del contenuto
    • normalizzazione dei margini attorno al contenuto
    • correzione di eventuali deformazioni a trapezio/a pagina non distesa
    • correzione dell'illuminazione disomogenea
    • conversione in formato file adatto al montaggio su djvu
    • conversione in formato file adatto all'OCR
  • estrazione del testo OCR mappato, con dettaglio parola con tesseract
  • conversione delle immagini in pagine djvu: scegliere fra tre opzioni (BN, Foto, Multilayer)
  • montaggio del testo OCR mappato nelle pagine djvu (indipendente dal passaggio precedente)
  • montaggio di tutte le pagine djvu in un file djvu monoblocco

In grassetto i due passaggi critici: il primo si risolve con il software scantailor, il secondo con uno script di "conversione mappaggio" che di deve costruire da sè, funzione dentro un'applicazione python in bozza, che si chiama jpg2djvu.py perchè effettivamente converte una cartella di immagini jpg in un file djvu con strato testo.

Gli attrezzi del mestiere modifica

  • la libreria DjvuLibre per gestire ogni aspetto dei file djvu (sia strato immagine che strato testo), montarli e smontarli;
  • imagemagick per le conversioni di immagini;
  • tesseract per ottenere l'hOCR;
  • script python per effettuare la trasformazione hOCR->dsed e la complementare dsed->hOCR, utilissima la libreria aggiuntiva PyQuery, meglio aver sottomano anche la libreria PIL, non si sa mai;
  • pdf2djvu per la conversione dei pdf in djvu, senza o con strato testo;
  • briss per un rapido cropping dei file pdf multipagina;
  • pdfsam per la suddivisione di un pdf in blocchi o in pagine singole;
  • scantailor per la correzione delle immagini (particolarmente utile nel caso di fotografie) e la divisione "intelligente" delle pagine a doppia facciata:
  • kompozer come html editor, permette di editare l'hOCR in modalità WYSIWIG VisualEditor-like.
  • un linguaggio di scripting (batch sotto windows, bash sotto linux, oppure python, oppure java) per chiamare tutti i programmi sopra elencati in una sequenza logica e utile con gli opportuni parametri;
  • pywikibot per caricare il risultato in wikisource.