Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

王林
王林ke hadapan
2023-05-09 17:49:082452semak imbas

    java menggunakan tess4j untuk pengecaman teks imej

    1 Pengenalan

    Tess4J ialah enkapsulasi Java (JNA) bagi Tesseract OCR API. .
    Sudah lama dahulu, saya perlu melakukan log masuk automatik dan klik butang pada data yang tidak diproses pada halaman web, yang memerlukan pengesahan kod pengesahan log masuk, jadi saya menggunakan Tess4J, yang boleh mengecam beberapa perkataan dan nombor mudah , dsb., dan kadar pengecaman adalah Nampaknya perkara biasa, tetapi jika anda membuat ralat, cuma tukar kod pengesahan dan cuba lagi Anda boleh berjaya walaupun anda mencuba beberapa kali lagi. Sekarang rekodkan proses penggunaan mudah sebelum ini untuk rujukan masa hadapan.

    Tess4J ialah Tesseract OCR API enkapsulasi Java JNA. Membolehkan java menggunakan Tess4J dengan memanggil API Tesseract OCR. Format yang disokong termasuk TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF. Apabila saya mula-mula bersentuhan dengan ini, saya masih keliru antara dua perkara ini. Untuk menjadi jelas, Tess4J ialah pakej balang yang boleh digunakan secara langsung oleh Java, dan Tesseract OCR ialah asas untuk menyokong Tess4J dalam pengecaman teks fail Tess4J boleh diperkenalkan terus menggunakan kaedah Maven.

    2. Proses penggunaan

    1 Import pom.xml sebagai maven dependency

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

    2. Sediakan fail pustaka bahasa dalam direktori tessdata

    需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个
    Alamat muat turun: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
    Selepas memuat turun, letakkannya dalam direktori dalam kod

    Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

    3. Tulis kod ujian untuk ujian

    Sediakan dua gambar dan letakkan dalam direktori sumber kod untuk memudahkan program membaca,

    图片1

    Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

    图片2

    Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

    两张图片放在资源目录下

    Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

    Kodnya ialah seperti berikut:

    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));
    		
    	}
    }

    测试结果截图如:

    Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?

    Pengiktirafan bahasa Inggeris agak biasa, tetapi pengiktirafan bahasa Cina mempunyai ruang jika perlu, ruang boleh dialih keluar lagi kod. Pada ketika ini, ujian penggunaan mudah tess4j Selesai.

    Atas ialah kandungan terperinci Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam