Maison  >  Article  >  Java  >  Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte d'image en Java ?

Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte d'image en Java ?

王林
王林avant
2023-05-09 17:49:082453parcourir

    java utilise tess4j pour la reconnaissance de texte d'image

    1 Introduction

    Tess4J est Java ( JNA) encapsulation de l'API Tesseract OCR.
    Il y a longtemps, je devais effectuer une connexion automatique et cliquer sur le bouton sur les données non traitées sur la page Web, ce qui nécessitait une vérification du code de vérification de connexion, j'ai donc utilisé Tess4J, qui peut reconnaître quelques mots et chiffres simples , etc. Le taux semble moyen, mais si vous faites une erreur, modifiez simplement un code de vérification et réessayez. Vous pouvez réussir même si vous essayez plusieurs fois. Enregistrez maintenant le processus d'utilisation simple précédent pour référence future.

    Tess4J est un wrapper Java JNA pour l'API Tesseract OCR. Permet à Java d'utiliser Tesseract OCR en appelant l'API de Tess4J. Les formats pris en charge incluent TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF. Lorsque je suis entré en contact avec cela pour la première fois, j’étais encore confus entre ces deux choses. Pour être clair, Tess4J est un package jar qui peut être directement utilisé par Java, et Tesseract OCR est la base pour prendre en charge Tess4J dans le texte du document. La reconnaissance Tess4J peut être importée directement à l'aide de Maven. 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
    下载好后放在代码里面的目录下

    Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte dimage en Java ?

    3.写测试代码进行测试

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

    图片1

    Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte dimage en Java ?

    图片2

    Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte dimage en Java ?

    两张图片放在资源目录下

    Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte dimage en 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. Processus d'utilisation

    1. La dépendance Maven importe pom.xml

    rrreee

    2 Préparez le fichier de la bibliothèque de langage dans le répertoire tessdata

    . Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte dimage en Java ?Vous devez télécharger les fichiers de la bibliothèque de langue pertinents à l'avance. Ici, j'ai téléchargé deux chi_sim.traineddata et eng.traineddataAdresse de téléchargement : https://codechina.csdn.net. /mirrors/tesseract-ocr/tessdata

    Après le téléchargement, placez-le dans le répertoire dans le code

    #🎜🎜#Comment Java utilise-t-il tess4j pour la reconnaissance de texte d'image#🎜🎜#

    3. Écrivez le code de test pour tester

    #🎜🎜# Préparez deux pages Les images sont placées dans le répertoire des ressources du code pour une lecture facile par le programme, #🎜🎜##🎜🎜#Image 1#🎜🎜##🎜🎜#Comment utiliser tess4j pour la reconnaissance de texte d'image en Java#🎜🎜##🎜🎜#Image 2 #🎜🎜##🎜🎜#Comment Java utilise-t-il tess4j pour la reconnaissance de texte d'image#🎜🎜##🎜🎜#Deux images sont placées dans le répertoire des ressources#🎜🎜##🎜🎜#Comment Java utilise-t-il tess4j pour la reconnaissance de texte d'image#🎜🎜##🎜🎜#Le code est le suivant : #🎜🎜# rrreee#🎜🎜# Une capture d'écran du résultat du test est la suivante :#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#La reconnaissance de l'anglais est relativement normale, et La reconnaissance chinoise contient des espaces.Si nécessaire, les espaces peuvent être supprimés davantage via le Code, À ce stade, le test d'utilisation simple de tess4j est terminé. #🎜🎜#

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer