Heim  >  Artikel  >  Java  >  Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

王林
王林nach vorne
2023-05-09 17:49:082459Durchsuche

    java verwendet tess4j für die Bildtexterkennung

    1 Einführung

    Tess4J ist eine Java (JNA)-Kapselung der Tesseract OCR API.
    Vor langer Zeit musste ich mich automatisch anmelden und auf die Schaltfläche für unverarbeitete Daten auf der Webseite klicken, was eine Überprüfung des Anmeldebestätigungscodes erforderte. Deshalb habe ich Tess4J verwendet, das einige einfache Wörter und Zahlen usw. erkennen kann ., und die Erkennungsrate scheint durchschnittlich zu sein, aber wenn etwas schief geht, ändern Sie einfach den Bestätigungscode und versuchen Sie es erneut. Sie können Erfolg haben, auch wenn Sie es noch ein paar Mal versuchen. Notieren Sie nun den vorherigen einfachen Verwendungsprozess zum späteren Nachschlagen.

    Tess4J ist ein Java JNA-Wrapper für die Tesseract OCR API. Ermöglicht Java die Verwendung von Tesseract OCR durch Aufrufen der API von Tess4J. Zu den unterstützten Formaten gehören TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF. Als ich zum ersten Mal damit in Kontakt kam, war ich immer noch verwirrt zwischen diesen beiden Dingen. Um es klar auszudrücken: Tess4J ist ein JAR-Paket, das direkt von Java verwendet werden kann, und Tesseract OCR ist die Grundlage für die Unterstützung von Tess4J im Dokumenttext Erkennung. Tess4J kann direkt mit Maven importiert werden. Tess4J是对Tesseract OCR APIJava JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF。这个开始接触的时候,我对这两个东西还搞混淆了。明确说一下,Tess4J是java直接可使用的jar包,而Tesseract OCR是支持Tess4J进文件文字识别的基础,Tess4J可直接使用Maven方式引入。

    二、使用过程

    1.maven依赖引入pom.xml

    		<!-- tess4j start -->
    		<dependency>
    		    <groupId>net.sourceforge.tess4j</groupId>
    		    <artifactId>tess4j</artifactId>
    		    <version>5.6.0</version>
    		</dependency>
    		<!-- tess4j end -->

    2.准备好tessdata目录下的语言库文件

    需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个
    下载地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
    下载好后放在代码里面的目录下

    Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

    3.写测试代码进行测试

    准备好两张图片放置在代码的资源目录下,方便程序读取,

    图片1

    Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

    图片2

    Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

    两张图片放在资源目录下

    Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?

    代码如下:

    package cn.ljhua;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    
    import javax.imageio.ImageIO;
    
    import lombok.extern.slf4j.Slf4j;
    import net.sourceforge.tess4j.ITesseract;
    import net.sourceforge.tess4j.Tesseract;
    import net.sourceforge.tess4j.TesseractException;
    
    /**
     * Tess4jOcr测试示例
     * @author liujh
     */
    @Slf4j
    public class Tess4jOcrTest {
    	
    	public static void main(String[] args) {
    		
    		Tess4jOcrTest test = new Tess4jOcrTest();
    		test.ocrTest();
    		
    	}
    	
    	public void ocrTest() {
    		
    		log.info("ocrTest start....");
    		long startMs = System.currentTimeMillis();
    		
    		 //Tesseract的代码开始---------------------->>>>
    		ITesseract instance = new Tesseract();
    		
    		/**
    		 * 组装接好tessdata目录的路径字符串
    		 */
    		String filePathPre = System.getProperty("user.dir");
        	String dataPath = filePathPre + File.separator + "tessdata";
        	
        	/**
    		 * 设置目录datapath the tessdata path to set
    		 * 否则会报Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.错误
    		 */
        	instance.setDatapath(dataPath);
        	//instance.setLanguage("eng");//默认,可以不写
        	instance.setLanguage("chi_sim");//设置中文识别
    		
        	String imageName = "verifyCode.png";
            try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) {
                
            	BufferedImage bImage = ImageIO.read(inStream);
            	//doOCR也可以传参为File,我这里传的BufferedImage
            	String result = instance.doOCR(bImage);
            	//识别的结果回来可能会带回车,处理掉
            	result = result.replaceAll("\n", "");
            	log.info("图片名:" + imageName +" 识别结果:"+ result);
            	
            } catch (IOException e) {
                log.error(e.getMessage(),e);
            } catch (TesseractException e) {
            	log.error(e.getMessage(),e);
    		}
            
            imageName = "vCode2.jpg";
            try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) {
                
            	BufferedImage bImage = ImageIO.read(inStream);
            	//doOCR也可以传参为File,我这里传的BufferedImage
            	String result = instance.doOCR(bImage);
            	//识别的结果回来可能会带回车,处理掉
            	result = result.replaceAll("\n", "");
            	log.info("图片名:" + imageName +" 识别结果:"+ result);
            	
            } catch (IOException e) {
                log.error(e.getMessage(),e);
            } catch (TesseractException e) {
            	log.error(e.getMessage(),e);
    		}
    		//Tesseract的代码结束--------------------->>>>
            
    		log.info("ocrTest success. spend time :{} ms.", (System.currentTimeMillis() - startMs));
    		
    	}
    }

    测试结果截图如:

    2. Verwendungsprozess

    1. Maven hängt vom Importieren von pom.xml ab

    rrreee

    2. Bereiten Sie die Sprachbibliotheksdatei im Tessdata-Verzeichnis vor

    Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?Sie müssen herunterladen die relevanten Informationen im Voraus Sprachbibliotheksdateien, hier habe ich zwei chi_sim.traineddata und eng.traineddata heruntergeladenDownload-Adresse: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata

    Nach dem Herunterladen setzen es im Code Im Verzeichnis darin

    🎜So verwenden Sie tess4j für die Bildtexterkennung in Java 🎜

    3. Testcode zum Testen schreiben

    🎜Bereiten Sie zwei Bilder vor und platzieren Sie sie im Ressourcenverzeichnis des Codes, um das Lesen des Programms zu erleichtern, 🎜🎜Bild 1 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575272371.png" alt="Wie verwendet Java tess4j für die Bildtexterkennung">🎜🎜 <code>Bild 2 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575222312.jpg" alt="So verwenden Sie tess4j für Bildtext Erkennungsfunktion in Java">🎜🎜 <code>Platzieren Sie die beiden Bilder im Ressourcenverzeichnis🎜🎜java So verwenden Sie tess4j für die Bildtexterkennungsfunktion🎜🎜Der Code lautet wie folgt: 🎜rrreee🎜Der Screenshot des Testergebnisses lautet wie folgt:🎜 🎜🎜🎜🎜Die englische Erkennung ist relativ normal und die chinesische Erkennung enthält Leerzeichen. Bei Bedarf können Leerzeichen durch Code weiter entfernt werden. An diesem Punkt ist der einfache Verwendungstest von tess4j abgeschlossen. 🎜

    Das obige ist der detaillierte Inhalt vonWie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen