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.
Riconoscere le righe storte e raddrizzarle
Moderatore: Paolino
19 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
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
- 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

0
voti
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
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
0
voti
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.
0
voti
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'è.
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'è.
Big fan of ⋮ƎlectroYou
0
voti
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)
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)
-
DavideDaSerra
188 1 5 - Expert
- Messaggi: 265
- Iscritto il: 21 gen 2018, 18:41
0
voti
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
0
voti
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.
-
DavideDaSerra
188 1 5 - Expert
- Messaggi: 265
- Iscritto il: 21 gen 2018, 18:41
6
voti
In rete si trovano diversi programmi che esaminano le immagini e le raddrizzano. Ad esempio questo che usa la libreria OppenCV:
https://github.com/andrewdcampbell/Open ... nt-Scanner
https://github.com/alessandrozamberletti/docdetect
https://github.com/5starkarma/document-scanner
Quelli più recenti si basano sull'intelligenza artificiale come questi:
https://github.com/VishalS99/AutoAlignNN
https://developer.nvidia.com/blog/detec ... -the-odtk/
https://github.com/andrewdcampbell/Open ... nt-Scanner
https://github.com/alessandrozamberletti/docdetect
https://github.com/5starkarma/document-scanner
Quelli più recenti si basano sull'intelligenza artificiale come questi:
https://github.com/VishalS99/AutoAlignNN
https://developer.nvidia.com/blog/detec ... -the-odtk/
0
voti
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...
19 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti