Pagina 1 di 2
Riconoscere le righe storte e raddrizzarle

Inviato:
8 ott 2021, 14:19
da Piercarlo
Ciao a tutti! Il problema che vi sottopongo è più un problema di grafica al computer che non di programmazione in senso stretto. Forse è già stato risolto e forse la soluzione è semplice ma io non la conosco, ragion per cui chiedo lumi.
Mi trovo spesso a ripulire testi scanditi (spesso interi libri) che sono stati ripresi storti e che vanno pertanto raddrizzati in photoshop - manualmente. Quello che sto cercando è un algoritmo, da implementare come script di azione in photoshop, che sia in grado di "leggere" le righe di testo scandite di una pagine, valutare la loro inclinazione e raddrizzarle di conseguenza. Esiste? Dove si può trovare? Grazie fin da ora per ogni suggerimento.
NOTA BENE - Non sto cercando una estensione o un plug-in pronti all'uso ma proprio un algoritmo da implementare come script. Se può essere d'aiuto, tale algoritmo dovrebbe essere in grado di riconoscere e correggere righe inclinate di al massimo più o meno 5 gradi, con una sensibilità particolare per le inclinazioni comprese entro i più o meno 2 gradi.
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
8 ott 2021, 14:35
da IlGuru
Non saprei come implementarlo, ma a graaaandi linee direi:
- Applicare un filtro, tipo il blur, all'immagine in modo da rendere le righe con i caratteri delle barre scure.
- Fornire l'immagine ottenuta ad una matrice neuronale addestrata a riconoscere le righe orizzontali, che ignorando immagini ecc.. dia in uscita uno scalare che corrisponde all'angolo di inclinazione del testo
- Applicare quel valore ad un tool di rotazione dell'immagine in modo da raddrizzarla
- Salvare l'immagine
- Ripetere con un'altra immagine
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
8 ott 2021, 14:46
da alev
Non ho la soluzione per il problema, però penso di aver individuato un possibile bug nella descrizione della tua richiesta
Spesso, se non sempre, le scansioni vengono effettuate in 2 modalità: testo (txt) oppure immagine, molto più probabilmente la seconda
Che io sappia, una volta che una immagine è scansionata, quella rimane e andare ad individuare delle righe che non siano orizzontali necessita giocoforza di un riferimento rispetto al quale effettuare la valutazione
E ritengo che tale valutazione debba essere fatta per tutte le righe di una pagina, ammesso che non sia troppo complicato distinguere, in una immagine, le righe di caratteri alfanumerici rispetto al resto; la problematica è nota a chi sviluppa gli OCR e non sempre pare risolvibile con qualità che non richieda aggiustamenti a mano
A valle del pippone, secondo me, è più semplice raddrizzare la pagina intera, ossia l'immagine che la restituisce visivamente
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
8 ott 2021, 16:50
da Piercarlo
Ringrazio entrambi per aver tentato di dare una risposta e preciso qui qualcosa in più. Chi va raddrizzata è in effetti l'intera pagina, non le singole righe; l'algoritmo cercato non deve "leggere" alcunché ma soltanto determinare l'inclinazione delle righe rispetto ai bordi del documento che costituiscono i riferimenti rispetto ai quali raddrizzare in un senso o nell'altro l'immagine della pagina. Forse il problema si può semplificare (si fa per dire) a come leggere l'inclinazione di un parallelepipedo scuro (l'area di testo da raddrizzare) rispetto ai bordi del documento in cui è racchiuso per poi correggerla.
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
8 ott 2021, 17:25
da Franco012
Se i testi sono in formato PDF, niente di più facile: utilizzando la funzione "riconoscimento testo OCR" presente in Adobe Acrobat Pro, in pochi secondi ci si ritrova la pagina automaticamente raddrizzata, in base all'orientamento del testo presente nella pagina (bastano anche poche righe). Se il documento è composto da più pagine, ciascuna viene raddrizzata separatamente.
Quando faccio la scansione di un documento, uso sempre questo sistema, e il risultato è perfetto (la funzione OCR di per sè non mi interessa, perché a seconda della qualità del testo scansionato può rivelarsi molto imprecisa). Il limite di questo sistema è costituito dal fatto che in mancanza di testo la pagina viene lasciata com'è.
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
17 ott 2021, 18:08
da DavideDaSerra
Sei sicuro di avere singole "righe" storte e non l'intero foglio?
Se è il foglio che è stato scansionato "un po' ruotato", in questo caso dovresti solo trovare la rototraslazione adeguata.
Trovi un parallelogramma che contiene tutto il corpo del testo e lo "proietti" su un rettangolo dai bordi ortogonali (in realtà modificherai opportunamente la matrice per mantenere solo i termini rotazionali così da non distorcere le dimensioni)
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
17 ott 2021, 19:07
da alev
DavideDaSerra ha scritto:Sei sicuro di avere singole "righe" storte e non l'intero foglio?
Se è il foglio che è stato scansionato "un po' ruotato", in questo caso dovresti solo trovare la rototraslazione adeguata.
Io ho inteso che la domanda di @Piercarlo fosse per i PDF già scansionati storti, quindi con poche possibilità di raddrizzarli a meno di non ri-scansionare le pagine storte
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
17 ott 2021, 19:26
da DavideDaSerra
Se la pagina è stata scansionata tutta "un po' girata" sul piano dello scanner, basta ruotare l'immagine di qualche grado per rendere le righe "orizzontali", più o meno lo stesso dell'usare "visualizza -> ruota la visualizzazione" in Acrobat. E con l'algoritmo descritto è automatizzabile senza troppo sforzo trovare tale angolo.
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
18 ott 2021, 1:06
da xyz
Re: Riconoscere le righe storte e raddrizzarle

Inviato:
18 ott 2021, 10:23
da Piercarlo
DavideDaSerra ha scritto: Trovi un parallelogramma che contiene tutto il corpo del testo e lo "proietti" su un rettangolo dai bordi ortogonali (in realtà modificherai opportunamente la matrice per mantenere solo i termini rotazionali così da non distorcere le dimensioni)
Ecco, bravo, come si fa? Tieni conto che il computer lo deve fare DA SOLO una volta datogli il comando...