激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

2023-10-16 07:03未知服務器之家 Java教程

今天給大家分享一個SpringBoot整合Tess4j庫實現圖片文字識別的小案例,希望xdm喜歡。文末有案例代碼的Git地址,可以自己下載了去玩玩兒或繼續擴展也行。 前言 今天給大家分享一個 SpringBoot 整合 Tess4j 庫實現圖片文字識別的小案例

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別 今天給大家分享一個SpringBoot整合Tess4j庫實現圖片文字識別的小案例,希望xdm喜歡。文末有案例代碼的Git地址,可以自己下載了去玩玩兒或繼續擴展也行。

前言

今天給大家分享一個SpringBoot整合Tess4j庫實現圖片文字識別的小案例,希望xdm喜歡。

文末有案例代碼的Git地址,可以自己下載了去玩玩兒或繼續擴展也行。

話不多說,開整吧。

什么是Tess4j庫

先簡單給沒聽過的xdm解釋下,這里要分清楚TesseractTess4j的區別。

Tesseract是一個開源的光學字符識別(OCR)引擎,它可以將圖像中的文字轉換為計算機可讀的文本。支持多種語言和書面語言,并且可以在命令行中執行。它是一個流行的開源OCR工具,可以在許多不同的操作系統上運行。

Tess4J是一個基于Tesseract OCR引擎的Java接口,可以用來識別圖像中的文本,說白了,就是封裝了它的API,讓Java可以直接調用。

搞清楚這倆東西,就足夠了。

案例

1、引入依賴

既然是SpringBoot,基礎依賴我就不贅述了,這里貼下Tess4J的依賴,是可以用maven下載的。

<!-- tess4j -->
<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.5.4</version>
</dependency>

2、yml配置

這里,我特地把訓練數據的目錄路徑配置在yml里,后續可以擴展到配置中心。

server:
  port: 8888

# 訓練數據文件夾的路徑
tess4j:
  datapath: D:/tessdata

然后我解釋下什么是訓練數據

Tesseract OCR庫通過訓練數據來學習不同語言和字體的特征,以便更好地識別圖片中的文字。

在安裝Tesseract OCR庫時,通常會生成一個包含多個子文件夾的訓練數據文件夾,其中每個子文件夾都包含了特定語言或字體的訓練數據。

比如我這里是下載后放到了D盤的tessdata目錄下,如圖所示,其實就是一個.traineddata為后綴的文件,大小約2M多。

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

如果你沒有特定的訓練數據需求,使用默認的訓練數據文件即可,我這里就是直接下載默認的來用的。

還有一點要注意的是,直接讀resource目錄下的路徑是讀不到的哈,所以我放到了D盤,訓練數據本身也是更推薦放到獨立的位置,方便后續訓練數據。

3、config配置類

我們新建一個配置類,初始化一下Tesseract類,交給Spring管理,這樣借用了Spring的單例模式。

package com.example.tesseractocr.config;

import net.sourceforge.tess4j.Tesseract;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @作者: 公眾號【Java分享客?!? * @日期: 2023/10/12 22:58
 * @描述:
 */
@Configuration
public class TesseractOcrConfiguration {

   @Value("${tess4j.datapath}")
   private String dataPath;

   @Bean
   public Tesseract tesseract() {

      Tesseract tesseract = new Tesseract();
      // 設置訓練數據文件夾路徑
      tesseract.setDatapath(dataPath);
      // 設置為中文簡體
      tesseract.setLanguage("chi_sim");
      return tesseract;
   }
}

4、service實現

就幾行代碼,非常簡單。

package com.example.tesseractocr.service;

import lombok.AllArgsConstructor;
import net.sourceforge.tess4j.*;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

@Service
@AllArgsConstructor
public class OcrService {

    private final Tesseract tesseract;

   /**
    * 識別圖片中的文字
    * @param imageFile 圖片文件
    * @return 文字信息
    */
    public String recognizeText(MultipartFile imageFile) throws TesseractException, IOException {

        // 轉換
        InputStream sbs = new ByteArrayInputStream(imageFile.getBytes());
        BufferedImage bufferedImage = ImageIO.read(sbs);

        // 對圖片進行文字識別
        return tesseract.doOCR(bufferedImage);
    }
}

5、新增rest接口

我們新建一個rest接口,用來測試效果,使用上傳圖片文件的方式。

package com.example.tesseractocr.controller;

import com.example.tesseractocr.service.OcrService;
import lombok.AllArgsConstructor;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RequestMapping("/api")
@RestController
@AllArgsConstructor
public class OcrController {
    private final OcrService ocrService;

    @PostMapping(value = "/recognize", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String recognizeImage(@RequestParam("file") MultipartFile file) throws TesseractException, IOException {

      // 調用OcrService中的方法進行文字識別
      return ocrService.recognizeText(file);
    }
}

6、測試效果

這里我用ApiPost工具來測試下最終效果

我準備的一張圖片如下,是從知乎上隨便截取的一張。

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

我們調接口試一下,這里要設置Header的Content-Type,別忘了哈。

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

這里是body中的參數,我們選擇form-data中的File屬性,表示以上傳文件形式來調接口。

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

看下效果,其實還是挺不錯的,我和圖片比對了一下,基本上都識別出來了。

Java也能做OCR!SpringBoot 整合 Tess4J 實現圖片文字識別

相關地址

1)、Tesseract-ocr官方Github地址:https://github.com/tesseract-ocr/tesseract

2)、Tesseract-ocr安裝下載:https://digi.bib.uni-mannheim.de/tesseract/

PS:這里我沒有用官方Github文檔中給的地址,因為太慢了,找了一個下載比較快的,你們可以往下拉找到win64位的安裝即可,如果沒有訓練需求,不用下也可以)

3)、訓練文件:https://digi.bib.uni-mannheim.de/tesseract/tessdata_fast/

PS:在2)的路徑下,有一個tessdata_fast目錄,點進去就能直接下載到默認訓練文件,這種比較簡便,省去了前面安裝下載的過程。

4)、案例代碼:https://gitee.com/fangfuji/java-share

PS:代碼放在Gitee上,在同名博文目錄里面,包含代碼+安裝文件+訓練文件。

總結

是不是非常簡單xdm,反正我覺得挺有意思的,后面抽空再試試訓練數據。

好了,今天的小知識,你學會了嗎?


如果喜歡,請點贊+關注↓↓↓,持續分享干貨哦!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美日韩精品一区二区三区不卡 | 日本久久精品视频 | 嫩草影院在线观看网站成人 | 国产视频在线一区 | 黄视频免费在线观看 | 欧美一级电影在线观看 | jj视频在线播放 | 久色乳综合思思在线视频 | av影院在线 | 99久久久久国产精品免费 | 欧美顶级毛片在线播放小说 | 九九热精彩视频 | 国产人成精品综合欧美成人 | 久久成人国产精品入口 | 国产高潮好爽受不了了夜色 | 国产精选久久久 | 96视频在线免费观看 | chinese xvideos gay | 欧美 日韩 中文 | 日本在线观看一区二区 | 国产精品99免费视频 | 宅男视频在线观看免费 | 久久久噜噜噜久久熟有声小说 | 国产成人在线一区二区 | 一级黄片毛片免费看 | 午夜视频在线免费播放 | 欧美大电影免费观看 | a一级黄色毛片 | 7m视频成人精品分类 | 国产日产久久久久久 | 曰批全过程40分钟免费视频多人 | 亚洲精品久久久久久下一站 | 国产激情精品一区二区三区 | 在线成人精品视频 | 亚洲日本欧美 | 亚洲精品欧美二区三区中文字幕 | 一级黄色片武则天 | 成人免费毛片片v | 欧美日本国产精品 | 最近中文字幕一区二区 | 蜜桃91麻豆|