Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Java Ocr

  1. #1

    Scannerizzare documenti con java e leggere il contenuto

    Ciao a tutti!
    Sto cercando di realizzare un programma in java che legge da uno scanner e, senza salvare il documento nel client, mi restituisce il contenuto del file... Ho provato con Morena 6 (ho la licenza di prova fino al 28 febbraio), sono disposta ad acquistarlo se riesco a farlo funzionare bene... Il problema è che non sono riuscita a evitare il salvataggio nel client e inoltre ho usato l'ocr della libreria Tesseract che mi restituisce un ocr che sembra arabo e non italiano!!! nonostante ho settato il linguaggio correttamente! qualcuno mi può aiutare?!?!?! qualcuno ha usato Morena e Tess4j? o meglio conoscete qualcosa di gratuito? Grazie!

  2. #2

    Moderazione

    Java ha una sezione apposita, dove ti sposto; inoltre, dovresti specificare meglio i problemi ottenuti e soprattutto il codice che impieghi.
    Infine, dato che si tratta di problemi con prodotti piuttosto particolari, forse puoi ottenere risposte migliori chiedendo direttamente sui forum di supporto dei prodotti citati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3

    Java Ocr

    Ciao a tutti,
    sto scrivendo un'applicazione in java (java 7 + eclipse + Tomcat) che acquisisce un documento (di tipo testo) dallo scanner e, senza salvarlo sul disco, legge il contenuto e lo memorizza in un'area di testo (TextArea).
    La prima parte sono riuscita a risolverla grazie a "Morena 6" un framework di acquisizione immagini disponibile al sito http://www.gnome.sk/Twain/jtp.html (a pagamento).
    Cliccando su un bottone lo scanner viene avviato e ottengo un BufferedImage, che poi passo a Tesseract per eseguire l'ocr. Il mio problema è che Tesseract mi restituisce un ocr che sembra arabo!!! e non italiano! cosa sbaglio? cercando sul web ho visto che è uno dei migliori ocr ma perchè a me non funziona bene? conoscete qualcosa di alternativo che funziona bene? grazie!

    Riporto il codice della mia classe:

    codice:
    public void acquireFromScanner() throws TwainException, IOException
    		{
    			
    			try {
    		    	TwainSource source=TwainManager.getDefaultSource();
    				System.err.println("Selected source is "+source);
    			    if (source!=null)
    			    { 
    			    	source.setAutoScan(true);
    			    	source.setVisible(false);  // Lesson 2
    			        source.setColorMode();     // Lesson 2
    			        source.setResolution(100); // Lesson 2
    			        System.err.println("Image resolution is " +source.getResolution()); // Lesson 2
    			        
    			        System.out.println("Starting scan ... ");
    			        
    			    	MorenaImage morenaImage=new MorenaImage(source);
    
    			    	System.err.println("Size of acquired image is "
    					      	+morenaImage.getWidth()+" x "
    					      	+morenaImage.getHeight()+" x "
    					      	+morenaImage.getPixelSize());
    
    			    	Image image=Toolkit.getDefaultToolkit().createImage(morenaImage); 
    			    	
    			        BufferedImage bimg=new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
    			        bimg.createGraphics().drawImage(image, 0, 0, null);
    			     
    			       
    			        	Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
    			            // Tesseract1 instance = new  Tesseract1(); // JNA Direct Mapping 
    			             instance.setLanguage("ita");
    			            
    			            try {
    			            	ImageIO.scanForPlugins();  
    			            	
    			                String result = instance.doOCR(bimg);   
    			               
    			                System.out.println(result);
    			            } catch (TesseractException e) {
    			                System.err.println(e.getMessage());
    			            }catch (Exception ex) {
    			                System.err.println(ex.getMessage());
    			            }
    			    }
    				Morena.close();
    			} catch (MorenaException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325

    Moderazione

    Avevi già aperto una discussione del tutto identica... bastava recuperarla e incollarci il codice.
    Ho fuso le due discussioni assieme.

    PS: quando si posta del codice, si devono usare i tag CODE, altrimenti il codice perde indentazione e formattazione, risultando abbastanza illeggibile.

    [CODE]
    poi si incolla il codice
    [/CODE]

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ok grazie! scusami!

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non me ne sono mai occupato ma mi riprometto di provare questo più tardi quando torno dal lavoro (o nel weekend):

    http://sourceforge.net/projects/javaocr/
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    con quella che ti ho suggerito io ci ho rinunciato praticamente... ci ho messo una vita a trovare il sorgente, il compilato che si scarica da sourceforge non corrisponde all'ultima versione (oppure è incompleto) ed il sorgente che scarichi da google code ha bisogno di un po' di altre librerie per essere compilato.
    Mi rimetto a cercare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Ok grazie! io non ho ancora trovato una soluzione...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ho scaricato Tesseract, ovvero Tess4J e provato a modificare il codice dell'esempio:
    codice:
    import java.awt.image.BufferedImage;
    import java.io.File;
    import javax.imageio.ImageIO;
    import net.sourceforge.tess4j.*;
    
    public class TesseractExample {
    
        public static void main(String[] args) throws Exception {
            //File imageFile = new File("eurotext.gif");
            BufferedImage bimg = ImageIO.read(new File("C:/Users/Andrea/Desktop/per_assicurazione_Pagina_1.tiff"));
            Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
            // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping
    
            try {            
                //String result = instance.doOCR(imageFile);
                String result = instance.doOCR(bimg);
                System.out.println(result);
            } catch (TesseractException e) {
                System.err.println(e.getMessage());
            }
        }
    }
    Ottenendo un discreto risultato (qualche pasticcio per via di linee di moduli e altri elementi grafici interpretabili, però tutto sommato un risultato facilmente editabile a mano e ben rispondente al testo contenuto nell'immagine).

    Mi viene da dirti: controlla che cosa ottieni nel BufferedImage proveniente dallo scanner (magari sparala dentro una JLabel e visualizzala)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Ok grazie! domani in ufficio proverò!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.