Voglio rilevare l'area di testo dall'immagine come una fase di preelaborazione per il motore OCR di tesseract, il motore funziona bene quando l'input è solo testo ma quando l'immagine di input contiene Contenuto non testo cade, quindi voglio rilevare solo il contenuto di testo nell'immagine , qualsiasi idea su come farlo sarà utile, grazie.Come rilevare l'area di testo dall'immagine?
risposta
Date un'occhiata a questo bounding box tecnica dimostrata con il codice di OpenCV:
ingresso:
eroso:
Risultato:
cosa dire della regione non testuale nell'immagine scansionata, (cioè quando eseguo un'erosione sull'immagine di input, le regioni non di testo nell'immagine di input sono trascurate?) – chostDevil
Quando hai un riquadro di delimitazione puoi estrarne il contenuto in un nuova immagine e dimentica tutto ciò che non è all'interno della scatola. Per questa attività, cerca nel nostro forum ** Regione di interesse ** o ** ROI ** nel tag OpenCV. – karlphillip
se c'è una tecnica accurata di questo per favore fammi sapere, e grazie mille :) – chostDevil
Beh, non sto bene-esperto in elaborazione delle immagini, ma spero di poterti aiutare con il mio approccio teorico.
Nella maggior parte dei casi, il testo sta formando righe orizzontali e orizzontali, dove lo spazio tra le righe conterrà lotti di pixel di sfondo. Questo potrebbe essere utilizzato per risolvere questo problema. Quindi ... se componi componi ogni colonna di pixel dell'immagine, otterrai un'immagine di 1 pixel di larghezza come output. Quando l'immagine di input contiene del testo, l'output sarà molto probabilmente un pattern periodico, dove le aree scure sono seguite da aree più luminose ripetutamente. Questi "gruppi" di pixel più scuri indicano la posizione del contenuto del testo, mentre il più luminoso "gruppi" indicherà gli spazi tra le singole righe. Probabilmente scoprirai che le aree più luminose saranno molto più piccole delle altre. Il testo è molto più generico di qualsiasi altro elemento dell'immagine, quindi dovrebbe essere facile da separare.
È necessario implementare una procedura per rilevare queste ricorrenze periodiche. Una volta che lo script può determinare che l'immagine in ingresso ha queste caratteristiche, c'è un'alta possibilità che contenga testo. (Tuttavia, questo approccio non può distinguere tra testo reale e strisce orizzontali semplici ...)
Per il passaggio successivo, è necessario trovare un modo per determinare i bordi dei paragrafi, utilizzando il metodo sopra indicato. Sto pensando ad un algoritmo piuttosto fittizio, la strega dividerebbe l'immagine in input in strisce più piccole e strette (50-100 px), e controllerebbe queste aree separatamente. Quindi, confronta questi risultati per costruire una mappa delle possibili aree piene di testo. Questo metodo non sarebbe così preciso, ma probabilmente non infastidisce il sistema OCR.
Infine, è necessario utilizzare la mappa di testo per eseguire l'OCR solo nelle posizioni desiderate.
Dall'altro lato, questo metodo fallirebbe se il testo di input viene ruotato di più di ~ 3-5 gradi. C'è un altro backdraw, perché se hai solo poche righe, la tua ricerca di pattern sarà molto inaffidabile. Più righe, una maggiore accuratezza ...
saluti, G.
Sono nuovo di StackOverflow.com, ma ho scritto una risposta a una domanda simile a questa che potrebbe essere utile a tutti i lettori che condividono questa domanda. Se la domanda sia o meno un duplicato, dal momento che questo è stato il primo, lascerò agli altri. Se dovessi copiare e incollare la risposta qui, fammi sapere. Ho anche trovato questa domanda prima su google piuttosto che su quella a cui ho risposto, quindi questo potrebbe essere di beneficio a più persone con un link. Soprattutto dal momento che fornisce diversi modi per ottenere aree di testo. Per me, quando ho cercato questa domanda, non si adattava al mio caso problematico.
- 1. Come rilevare l'orientamento dell'immagine (testo)
- 2. Come rilevare il codice sorgente in un testo?
- 3. Posso rilevare la modifica nei campi di testo in SWT?
- 4. Come rilevare l'eccezione di sintassi
- 5. Come rilevare l'overflow nell'elemento div?
- 6. Come rilevare la lingua dell'utente
- 7. Come rilevare la codifica dei caratteri di un file di testo usando Delphi?
- 8. Come rilevare una data in una query di ricerca libera del testo di Lucene?
- 9. Come posso rilevare la perdita di concentrazione da un oggetto di modifica del testo?
- 10. Come rilevare l'URL iframe corrente?
- 11. come rilevare interruzioni di riga in java
- 12. Come rendere angularJS $ l'orologio per rilevare i cambiamenti di stile?
- 13. Rilevare se il testo è inglese (in blocco)
- 14. Come rilevare se un controllo di input HTML5 è supportato?
- 15. Come dovrei rilevare quale delimitatore è usato in un file di testo?
- 16. Come rilevare correttamente l'evento change/focusOut sull'input di testo in React.js?
- 17. come rilevare window.print() terminare
- 18. Come rilevare HttpRequestValidationException
- 19. Come rilevare HTC Sense?
- 20. Come rilevare un clic in qualsiasi punto di un SearchView
- 21. Come rilevare quando UITextField diventa vuoto
- 22. Come posso rilevare i messaggi di spam russi con Perl?
- 23. Come rilevare la disinstallazione dell'estensione di Chrome
- 24. come rilevare Flash Player versione di JS
- 25. Come rilevare la modifica di dict?
- 26. Come rilevare la chiamata ricorsiva di root?
- 27. Come rilevare la versione di IIS Express?
- 28. Come rilevare un'istanza di una classe anonima?
- 29. Come rilevare la presenza di moduli es6
- 30. Come rilevare lo stato di alimentazione?
Vorrei andare a una soluzione di elaborazione delle immagini. Prova google per rimuovere le tecniche di background. –
è difficile capire il tuo problema senza immagine di esempio. Si prega di caricare l'immagine in imageshack.us e fornire il link qui. –
ok, questo è il link di un'immagine di esempio voglio rimuovere l'area non di testo da http://imageshack.us/photo/my-images/171/img0052ir.jpg/ ma penso che tesseract gestisca tutto il processo su di esso proprio così non ci preoccuperemo di come l'immagine assomiglia. – chostDevil