>  기사  >  Java  >  tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?

tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?

王林
王林앞으로
2023-05-09 17:49:082385검색

    java는 이미지 텍스트 인식을 위해 tess4j를 사용합니다

    1. 소개

    Tess4J는 Tesseract OCR API의 Java(JNA) 캡슐화입니다.
    오래전에는 자동로그인을 해야하고 웹페이지의 처리되지 않은 데이터에 버튼을 눌러야 했기 때문에 로그인 인증번호 확인이 필요해서 간단한 단어나 숫자 등을 인식할 수 있는 Tess4J를 사용했습니다. ., 그리고 인식률은 보통 수준인 것 같은데, 뭔가 잘못되면 인증코드를 바꿔서 다시 시도하면 됩니다. 이제 나중에 참고할 수 있도록 이전의 간단한 사용 과정을 기록해 보세요.

    Tess4JTesseract OCR APIJava JNA 래퍼입니다. Tess4J의 API를 호출하여 Java에서 Tesseract OCR을 사용할 수 있도록 합니다. 지원되는 형식에는 TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF가 포함됩니다. 처음 이 문제를 접했을 때 나는 여전히 이 두 가지 사이에서 혼란스러웠습니다. 명확히 말하면 Tess4J는 Java에서 직접 사용할 수 있는 jar 패키지이고, Tesseract OCR은 문서 텍스트에서 Tess4J를 지원하는 기반이 됩니다. Tess4JMaven을 사용하여 직접 가져올 수 있습니다. 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
    下载好后放在代码里面的目录下

    tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?

    3.写测试代码进行测试

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

    图片1

    tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?

    图片2

    tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?

    两张图片放在资源目录下

    tess4j를 사용하여 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. 사용 프로세스

    1. Maven은 pom.xml 가져오기에 의존합니다.

    rrree

    2. tessdata 디렉터리에 언어 라이브러리 파일을 준비합니다.

    tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까? 관련 정보를 미리 언어 라이브러리 파일, 여기에 chi_sim.traineddata 및 eng.traineddata 두 개를 다운로드했습니다.다운로드 주소: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata

    다운로드 후 코드에 있습니다

    🎜이미지 텍스트 인식을 위해 tess4j를 사용하는 방법 function in java 🎜

    3. 테스트용 테스트 코드 작성

    🎜프로그램이 쉽게 읽을 수 있도록 두 장의 그림을 준비하여 코드의 리소스 디렉터리에 배치합니다. 🎜🎜그림 1🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575272371.png" alt="Java는 이미지 텍스트 인식을 위해 tess4j를 어떻게 사용합니까?">🎜 🎜<code>그림 2 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575222312.jpg" alt="이미지에 tess4j를 사용하는 방법 Java의 텍스트 인식 기능">🎜🎜 <code>두 그림을 리소스 디렉터리에 넣습니다🎜🎜java 이미지 텍스트 인식 기능을 위한 tess4j 사용 방법🎜🎜코드는 다음과 같습니다.🎜rrreee🎜테스트 결과 스크린샷은 다음과 같습니다. 🎜🎜🎜🎜🎜영어 인식은 비교적 정상이고, 중국어 인식은 공백이 있습니다. 필요한 경우 코드를 통해 공백을 추가로 제거할 수 있습니다. 이 시점에서 tess4j의 간단한 사용 테스트가 완료됩니다. 🎜

    위 내용은 tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제