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

基于SpringBoot+Tess4j實(shí)現(xiàn)圖像文字識(shí)別功能

 更新時(shí)間:2026年04月01日 08:34:32   作者:皮皮林551  
文章介紹了Tesseract?OCR技術(shù)及其Java封裝庫Tess4j,并詳細(xì)描述了如何在SpringBoot項(xiàng)目中集成和使用Tess4j進(jìn)行圖像識(shí)別,文章涵蓋了下載字體庫、配置SpringBoot項(xiàng)目、編寫測試代碼及圖片識(shí)別測試等步驟,并提供了中文、英文及中英混合識(shí)別的實(shí)戰(zhàn)示例,需要的朋友可以參考下

1. 什么是 Tess4j

1.1 OCR

OCR 是 "Optical Character Recognition"(光學(xué)字符識(shí)別)的縮寫,它是一種技術(shù),能夠?qū)⒉煌问降奈臋n(如紙質(zhì)文檔、PDF 文件或圖像)中的打印文本、手寫文本或其他類型的數(shù)據(jù)轉(zhuǎn)換為機(jī)器可編輯和可搜索的數(shù)據(jù)格式,如文本文件或電子文檔。

OCR 技術(shù)的工作流程通常包括以下幾個(gè)步驟:

  • 圖像預(yù)處理:  這一步包括圖像的獲取、二值化、去噪、旋轉(zhuǎn)校正、分割等,以提高后續(xù)識(shí)別的準(zhǔn)確性。
  • 文本檢測:  在圖像中定位文本的位置,通常是通過檢測文本的行、單詞或字符邊界。
  • 特征提?。?/strong>  從圖像中提取文本的特征,這些特征將用于識(shí)別過程。
  • 字符識(shí)別:  這一步涉及將提取的特征與已知字符的模式進(jìn)行匹配,以識(shí)別每個(gè)字符。
  • 后處理:  這一步包括對(duì)識(shí)別結(jié)果進(jìn)行校對(duì)、格式化、布局分析等,以提高整體的可讀性和準(zhǔn)確性。

OCR 技術(shù)的應(yīng)用非常廣泛,包括:

  • 文檔管理:  將紙質(zhì)文檔轉(zhuǎn)換為電子文檔,便于存儲(chǔ)和搜索。
  • 數(shù)據(jù)輸入:  自動(dòng)從表格、表單等文檔中提取數(shù)據(jù),減少手動(dòng)輸入的工作量。
  • 內(nèi)容分析:  從大量文檔中提取信息,用于數(shù)據(jù)分析或知識(shí)管理。
  • 輔助技術(shù):  幫助視力障礙人士通過語音合成將文本轉(zhuǎn)換為語音。

1.2 Tesseract OCR

Tesseract OCR(光學(xué)字符識(shí)別)是一個(gè)開源的 OCR 引擎,最初由 HP 實(shí)驗(yàn)室開發(fā),并在 2005 年開源,之后由 Google 贊助并繼續(xù)開發(fā)。它是目前最準(zhǔn)確、最流行的開源 OCR 工具之一。

1.3 Tess4j

Tess4J 是一個(gè) Java 庫,它是 Tesseract OCR 引擎的 Java 封裝器。Tess4J 允許 Java 開發(fā)者輕松地將 Tesseract OCR 的功能集成到他們的 Java 應(yīng)用程序中。通過 Tess4J,Java 程序可以調(diào)用 Tesseract 來執(zhí)行光學(xué)字符識(shí)別(OCR)任務(wù),即將圖像中的文字轉(zhuǎn)換為可編輯和可搜索的文本格式。

Tess4j 的特點(diǎn):

  • 易于集成:  Tess4J 提供了簡單的 API,使得在 Java 應(yīng)用程序中使用 Tesseract 變得非常容易。
  • 跨平臺(tái):  Tess4J 可以在任何支持 Java 的操作系統(tǒng)上運(yùn)行,包括 Windows、macOS 和 Linux。
  • 功能豐富:  Tess4J 支持 Tesseract 的所有主要功能,包括多語言識(shí)別、自定義訓(xùn)練等。
  • 社區(qū)支持:  作為一個(gè)開源項(xiàng)目,Tess4J 擁有一個(gè)活躍的社區(qū),提供支持和更新。

2. 下載字體庫

下載地址:

https://github.com/tesseract-ocr/tessdata

2.1 中文字體庫

點(diǎn)擊 chi_sim.traineddata

中文字體庫下載

接著點(diǎn)擊下載按鈕

下載按鈕

2.2 英文字體庫

點(diǎn)擊 eng.traineddata

英文字體庫下載

接著點(diǎn)擊下載按鈕

英文字體庫下載按鈕

3. 在 SpringBoot 項(xiàng)目中集成 Tess4j

本次演示的環(huán)境為:JDK 17.0.7 + SpringBoot 3.0.2

3.1 引入依賴

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.1.1</version>
</dependency>

3.2 編寫配置文件

將 F:/HeiMaTouTiao/tessdata 更換為你存放字體庫文件的目錄(使用絕對(duì)路徑)

application.yml

server:
  port: 11014
tess4j:
  data-path: F:/HeiMaTouTiao/tessdata
  chinese-train-data: chi_sim
  english-train-data: eng

3.3 編寫配置類

Tess4jConfiguration.java

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "tess4j")
publicclass Tess4jConfiguration {

    private String dataPath;

    private String chineseTrainData;

    private String englishTrainData;

    public String getDataPath() {
        return dataPath;
    }

    public void setDataPath(String dataPath) {
        this.dataPath = dataPath;
    }

    public String getChineseTrainData() {
        return chineseTrainData;
    }

    public void setChineseTrainData(String chineseTrainData) {
        this.chineseTrainData = chineseTrainData;
    }

    public String getEnglishTrainData() {
        return englishTrainData;
    }

    public void setEnglishTrainData(String englishTrainData) {
        this.englishTrainData = englishTrainData;
    }

}

4. 測試圖像識(shí)別功能

4.1 中文

4.1.1 測試代碼

import cn.edu.scau.config.Tess4jConfiguration;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;

@SpringBootTest
publicclass Tess4jApplicationTests {

    @Autowired
    private Tess4jConfiguration tess4jConfiguration;

    @Test
    public void testChinese() throws TesseractException {
        long start = System.currentTimeMillis();

        ITesseract iTesseract = new Tesseract();

        // 設(shè)置字體庫路徑
        iTesseract.setDatapath(tess4jConfiguration.getDataPath());

        // 設(shè)置語言
        iTesseract.setLanguage(tess4jConfiguration.getChineseTrainData());

        File file = new File("F:/HeiMaTouTiao/tessdata/CaiXuKun-Chinese.png");

        // 識(shí)別圖片
        String result = iTesseract.doOCR(file);

        long end = System.currentTimeMillis();
        System.err.println("耗時(shí):" + (end - start) + "ms");
        System.out.println(result);
    }

}

4.1.2 測試圖片

中文識(shí)別測試圖片

4.1.3 測試結(jié)果

不得不說,圖像識(shí)別耗時(shí)很長

中文識(shí)別測試結(jié)果

4.2 英文

4.2.1 測試代碼

@Test
public void testEnglish() throws TesseractException {
    long start = System.currentTimeMillis();

    ITesseract iTesseract = new Tesseract();

    // 設(shè)置字體庫路徑
    iTesseract.setDatapath(tess4jConfiguration.getDataPath());

    // 設(shè)置語言
    iTesseract.setLanguage(tess4jConfiguration.getEnglishTrainData());

    File file = new File("F:/HeiMaTouTiao/tessdata/CaiXuKun-English.png");

    // 識(shí)別圖片
    String result = iTesseract.doOCR(file);

    long end = System.currentTimeMillis();
    System.err.println("耗時(shí):" + (end - start) + "ms");
    System.out.println(result);
}

4.2.2 測試圖片

英文識(shí)別測試圖片

4.2.3 測試結(jié)果

英文識(shí)別測試結(jié)果

4.3 中英混合

4.3.1 測試代碼

中英混合時(shí)需要使用中文字體庫

@Test
public void testChineseAndEnglish() throws TesseractException {
    long start = System.currentTimeMillis();

    ITesseract iTesseract = new Tesseract();

    // 設(shè)置字體庫路徑
    iTesseract.setDatapath(tess4jConfiguration.getDataPath());

    // 設(shè)置語言
    iTesseract.setLanguage(tess4jConfiguration.getChineseTrainData());

    File file = new File("F:/HeiMaTouTiao/tessdata/ParagraphWithChineseAndEnglish.png");

    // 識(shí)別圖片
    String result = iTesseract.doOCR(file);

    long end = System.currentTimeMillis();
    System.err.println("耗時(shí):" + (end - start) + "ms");
    System.out.println(result);
}

4.3.2 測試圖片

中英混合測試圖片

4.3.3 測試結(jié)果

中英混合測試結(jié)果

5. 注意事項(xiàng)

字體庫文件的后綴必須是 .traineddata,前綴要與 Java 代碼對(duì)應(yīng)

字體庫文件命名

以上就是基于SpringBoot+Tess4j實(shí)現(xiàn)圖像文字識(shí)別功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Tess4j圖像文字識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 升級(jí)springboot3之自動(dòng)配置導(dǎo)入失效問題及解決

    升級(jí)springboot3之自動(dòng)配置導(dǎo)入失效問題及解決

    這篇文章主要介紹了升級(jí)springboot3之自動(dòng)配置導(dǎo)入失效問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java中containsKey 、 contains 方法詳解及代碼舉例詳解

    Java中containsKey 、 contains 方法詳解及代碼舉例詳解

    在Java中,containsKey和contains方法常用于集合操作,但它們的應(yīng)用場景和功能有所不同,本文詳細(xì)介紹這兩種方法的用法及區(qū)別,并提供豐富的代碼實(shí)例,感興趣的朋友一起看看吧
    2025-09-09
  • 基于Java網(wǎng)絡(luò)編程和多線程的多對(duì)多聊天系統(tǒng)

    基于Java網(wǎng)絡(luò)編程和多線程的多對(duì)多聊天系統(tǒng)

    這篇文章主要介紹了基于Java網(wǎng)絡(luò)編程和多線程的多對(duì)多聊天系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java網(wǎng)絡(luò)編程的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringDoc和Swagger使用示例詳解

    SpringDoc和Swagger使用示例詳解

    Swagger和Springdoc是兩個(gè)常用的工具,用于生成和維護(hù)API文檔,特別是針對(duì)基于REST的Web服務(wù),這篇文章給大家介紹SpringDoc和Swagger使用示例,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)

    圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)

    折半查找法也叫做?分查找,顧名思義就是把數(shù)據(jù)分成兩半,再判斷所查找的key在哪?半中,再重復(fù)上述步驟知道找到?標(biāo)key,下面這篇文章主要介紹了圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)
    2022-09-09
  • java中線程的sleep()方法和yield()方法的區(qū)別

    java中線程的sleep()方法和yield()方法的區(qū)別

    本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時(shí)間,不釋放鎖,而yield()提示調(diào)度器當(dāng)前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下
    2024-10-10
  • Spring Data JPA原理與實(shí)戰(zhàn) Repository接口的最佳實(shí)踐

    Spring Data JPA原理與實(shí)戰(zhàn) Repository接口的最佳實(shí)踐

    這篇文章深入解析了Spring Data JPA的實(shí)現(xiàn)原理,包括Repository接口的層次結(jié)構(gòu)、方法名解析、查詢生成策略、事務(wù)管理和性能優(yōu)化,通過源碼剖析和實(shí)戰(zhàn)案例,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Windows和macOS系統(tǒng)下Java21環(huán)境配置全流程

    Windows和macOS系統(tǒng)下Java21環(huán)境配置全流程

    在日常開發(fā)工作中,合適的開發(fā)環(huán)境是提升效率的重要前提,這篇文章主要介紹了Windows和macOS系統(tǒng)下Java21環(huán)境配置的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-03-03
  • Maven工程搭建spring boot+spring mvc+JPA的示例

    Maven工程搭建spring boot+spring mvc+JPA的示例

    本篇文章主要介紹了Maven工程搭建spring boot+spring mvc+JPA的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring AI整合Ollama實(shí)現(xiàn)工具調(diào)用的實(shí)戰(zhàn)全解

    Spring AI整合Ollama實(shí)現(xiàn)工具調(diào)用的實(shí)戰(zhàn)全解

    在大模型應(yīng)用開發(fā)中,工具調(diào)用(Tool Calling / Function Calling)是實(shí)現(xiàn)智能 Agent 的核心能力,本文將基于 Spring AI + Ollama,從基礎(chǔ)環(huán)境搭建、工具的定義與注冊(cè)、完整項(xiàng)目實(shí)現(xiàn)到常見問題排查,系統(tǒng)性地講解如何實(shí)現(xiàn)本地大模型的工具調(diào)用,需要的朋友可以參考下
    2026-05-05

最新評(píng)論

平湖市| 霞浦县| 乾安县| 吉安市| 湖北省| 绥江县| 阜新| 日照市| 老河口市| 崇仁县| 闽侯县| 五常市| 红河县| 烟台市| 家居| 焦作市| 章丘市| 梨树县| 朝阳县| 东光县| 乡城县| 札达县| 上思县| 渭源县| 镶黄旗| 凭祥市| 吉隆县| 卢湾区| 华宁县| 新干县| 无棣县| 松桃| 永吉县| 湖州市| 湘潭市| 民丰县| 星座| 宝应县| 龙泉市| 依安县| 会昌县|