中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java怎么使用tess4j進行圖片文字識別功能

發布時間:2023-05-06 11:19:03 來源:億速云 閱讀:269 作者:iii 欄目:開發技術

這篇文章主要介紹“java怎么使用tess4j進行圖片文字識別功能”,在日常操作中,相信很多人在java怎么使用tess4j進行圖片文字識別功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java怎么使用tess4j進行圖片文字識別功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    java使用tess4j進行圖片文字識別

    一、簡介

    Tess4J 是Java (JNA) 對 Tesseract OCR API 的封裝。
    很久之前需要做一個自動登陸并對網頁上的未處理的數據進行按鈕點擊,其中需要登陸的驗證碼校驗,因此用了一下Tess4J,能識別一些簡單的文字和數字等,識別率好像一般,但出錯了就重新換一個驗證碼再試,多試幾次也能成功。現將之前的簡單使用過程記錄,備查。

    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
    下載好后放在代碼里面的目錄下

    java怎么使用tess4j進行圖片文字識別功能

    3.寫測試代碼進行測試

    準備好兩張圖片放置在代碼的資源目錄下,方便程序讀取,

    圖片1

    java怎么使用tess4j進行圖片文字識別功能

    圖片2

    java怎么使用tess4j進行圖片文字識別功能

    兩張圖片放在資源目錄下

    java怎么使用tess4j進行圖片文字識別功能

    代碼如下:

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

    測試結果截圖如:

    java怎么使用tess4j進行圖片文字識別功能

    英文識別出來比較正常,中文識別出來帶了空格,如果需要可以通過代碼進一步去掉空格,至此,tess4j的簡單使用測試完成。

    到此,關于“java怎么使用tess4j進行圖片文字識別功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    武邑县| 五常市| 镇平县| 石台县| 吉安县| 闽清县| 朝阳区| 曲阳县| 兴隆县| 阿拉善盟| 子长县| 亚东县| 长垣县| 盐城市| 南川市| 定兴县| 仙游县| 大英县| 台东市| 六安市| 天等县| 晋州市| 平顶山市| 岗巴县| 临猗县| 逊克县| 天台县| 德州市| 思茅市| 商南县| 金阳县| 普定县| 芮城县| 新宾| 巢湖市| 孝昌县| 石阡县| 阜阳市| 印江| 汝阳县| 旬阳县|