最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2023年04月04日 10:08:01   作者:冰之杍  
Tess4J?是Java?(JNA)?對?Tesseract?OCR?API?的封裝,Tess4J是java直接可使用的jar包,而Tesseract?OCR是支持Tess4J進文件文字識別的基礎,Tess4J可直接使用Maven方式引入,這篇文章主要介紹了java使用tess4j進行圖片文字識別,需要的朋友可以參考下

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

一、簡介

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

Tess4J是對Tesseract OCR APIJava JNA 封裝。使java能夠通過調(diào)用Tess4J的API來使用Tesseract OCR。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF。這個開始接觸的時候,我對這兩個東西還搞混淆了。明確說一下,Tess4J是java直接可使用的jar包,而Tesseract OCR是支持Tess4J進文件文字識別的基礎,Tess4J可直接使用Maven方式引入。

tesseract:https://tesseract-ocr.github.io/
官網(wǎng):http://tess4j.sourceforge.net/codesample.html

語言庫:
https://github.com/tesseract-ocr/tessdata
https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata

二、使用過程

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

在這里插入圖片描述

3.寫測試代碼進行測試

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

圖片1

在這里插入圖片描述

圖片2

在這里插入圖片描述

兩張圖片放在資源目錄下

在這里插入圖片描述

代碼如下:

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

測試結果截圖如:

在這里插入圖片描述

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

三、源碼下載地址

最后提供源碼如下:

github: https://github.com/jxlhljh/tess4jOcrTest
gitee: https://gitee.com/jxlhljh/tess4jOcrTest

到此這篇關于java使用tess4j進行圖片文字識別的文章就介紹到這了,更多相關java圖片文字識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • ThreadLocal內(nèi)存泄露的產(chǎn)生原因和處理方法

    ThreadLocal內(nèi)存泄露的產(chǎn)生原因和處理方法

    ThreadLocal 的內(nèi)存泄漏問題通常發(fā)生在使用 ThreadLocal 存儲對象時,尤其是在多線程環(huán)境中,線程池中的線程復用可能導致一些資源沒有及時清理,從而引發(fā)內(nèi)存泄漏,所以本文給大家介紹了ThreadLocal內(nèi)存泄露的產(chǎn)生原因和處理方法,需要的朋友可以參考下
    2024-12-12
  • Java List的sort()方法改寫compare()實現(xiàn)升序,降序,倒序的案例

    Java List的sort()方法改寫compare()實現(xiàn)升序,降序,倒序的案例

    這篇文章主要介紹了Java List的sort()方法改寫compare()實現(xiàn)升序,降序,倒序的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Java完整實現(xiàn)記事本代碼

    Java完整實現(xiàn)記事本代碼

    這篇文章主要介紹了Java實現(xiàn)的簡易記事本,較為詳細的分析了基于java實現(xiàn)記事本程序的完整過程,具有一定參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 使用IntelliJ IDEA查看類的繼承關系圖形(圖文詳解)

    使用IntelliJ IDEA查看類的繼承關系圖形(圖文詳解)

    這篇文章主要介紹了使用IntelliJ IDEA查看類的繼承關系圖形,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的工作或學習具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • mybatis insert返回主鍵代碼實例

    mybatis insert返回主鍵代碼實例

    這篇文章主要介紹了mybatis insert返回主鍵代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • java線程池使用場景及一些建議

    java線程池使用場景及一些建議

    本文主要介紹了java線程池使用場景及一些建議,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • java的package和import機制原理解析

    java的package和import機制原理解析

    這篇文章主要介紹了java的package和import機制原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • @Scheduled定時器使用注意事項及說明

    @Scheduled定時器使用注意事項及說明

    這篇文章主要介紹了@Scheduled定時器使用注意事項及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring Boot實現(xiàn)郵件注冊功能示例代碼

    Spring Boot實現(xiàn)郵件注冊功能示例代碼

    本篇文章主要介紹了Spring Boot實現(xiàn)郵件注冊功能示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 利用feign調(diào)用返回object類型轉換成實體

    利用feign調(diào)用返回object類型轉換成實體

    這篇文章主要介紹了利用feign調(diào)用返回object類型轉換成實體,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

陕西省| 沈阳市| 基隆市| 新津县| 邻水| 丰宁| 抚顺市| 巴林左旗| 元谋县| 临高县| 镶黄旗| 岳普湖县| 伊金霍洛旗| 五指山市| 桃江县| 五台县| 佛坪县| 南郑县| 遵义县| 确山县| 栖霞市| 贵港市| 靖边县| 河南省| 天全县| 娄烦县| 柳江县| 铁岭市| 玉龙| 德清县| 夏河县| 荣昌县| 库伦旗| 锡林郭勒盟| 垣曲县| 江都市| 汨罗市| 永德县| 玉树县| 天等县| 昭通市|