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

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

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

1. 什么是 Tess4j

1.1 OCR

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

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

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

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

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

1.2 Tesseract OCR

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

1.3 Tess4j

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

Tess4j 的特點:

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

2. 下載字體庫

下載地址:

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

2.1 中文字體庫

點擊 chi_sim.traineddata

中文字體庫下載

接著點擊下載按鈕

下載按鈕

2.2 英文字體庫

點擊 eng.traineddata

英文字體庫下載

接著點擊下載按鈕

英文字體庫下載按鈕

3. 在 SpringBoot 項目中集成 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 更換為你存放字體庫文件的目錄(使用絕對路徑)

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. 測試圖像識別功能

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

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

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

}

4.1.2 測試圖片

中文識別測試圖片

4.1.3 測試結(jié)果

不得不說,圖像識別耗時很長

中文識別測試結(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");

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

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

4.2.2 測試圖片

英文識別測試圖片

4.2.3 測試結(jié)果

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

4.3 中英混合

4.3.1 測試代碼

中英混合時需要使用中文字體庫

@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");

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

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

4.3.2 測試圖片

中英混合測試圖片

4.3.3 測試結(jié)果

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

5. 注意事項

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

字體庫文件命名

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

相關(guān)文章

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

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

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

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

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

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

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

    SpringDoc和Swagger使用示例詳解

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

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

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

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

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

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

    這篇文章深入解析了Spring Data JPA的實現(xiàn)原理,包括Repository接口的層次結(jié)構(gòu)、方法名解析、查詢生成策略、事務(wù)管理和性能優(yōu)化,通過源碼剖析和實戰(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的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring AI整合Ollama實現(xiàn)工具調(diào)用的實戰(zhàn)全解

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

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

最新評論

唐山市| 上杭县| 宾阳县| 龙陵县| 博野县| 岢岚县| 广州市| 湖州市| 崇礼县| 凯里市| 南江县| 乡城县| 印江| 原平市| 广宗县| 曲松县| 香港| 平定县| 巴东县| 盖州市| 湄潭县| 香格里拉县| 昌江| 盐池县| 丹凤县| 准格尔旗| 德昌县| 肃宁县| 调兵山市| 岳普湖县| 沁源县| 米泉市| 博罗县| 龙南县| 金平| 兰溪市| 临清市| 内黄县| 会同县| 吐鲁番市| 双江|