跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava算法

SpringBoot3 集成 Tess4J 实现 OCR 识别:环境搭建与实战避坑

SpringBoot3 集成 Tess4J 实现本地 OCR 识别。涵盖 JDK17 环境配置、Tesseract 字体库下载与路径设置、依赖引入及配置文件编写。通过 Service 层封装识别逻辑,Controller 层提供接口。解决 UnsatisfiedLinkError、tessdata 路径错误、识别乱码等常见问题。支持图片预处理优化精度,适配 Windows/Mac/Linux 系统。适用于内网票据识别等离线场景。

DockerOne发布于 2026/3/15更新于 2026/5/2023 浏览
SpringBoot3 集成 Tess4J 实现 OCR 识别:环境搭建与实战避坑

做 Java 开发的小伙伴应该都遇到过 OCR 识别的需求——本地处理图片文字提取,不用依赖第三方接口,避免数据联网泄露,也省去接口调用费用。之前做内网票据识别项目时,踩遍了各种 OCR 工具的坑,最终敲定 Tess4J,搭配 SpringBoot3 实现本地 OCR 识别,全程实测可落地,没有空洞的理论,全是实操细节和避坑经验,适合刚入手 OCR 集成、不想走弯路的朋友。

不同于网上大多复制粘贴的教程,这篇文章全程基于最新稳定环境搭建,从前期准备到接口测试,每一步都对应实际开发场景,解决大家最关心的版本兼容、字体库配置、识别报错等问题,新手跟着做也能一次集成成功。

先说明一下本次实战的环境,避免大家因环境差异踩坑:

  • JDK:17(SpringBoot3 最低要求 JDK17,别用 JDK8,会有依赖冲突)
  • SpringBoot:3.2.4(稳定版,实测无兼容性问题)
  • Tess4J:5.18.0(最新兼容 SpringBoot3 的版本)
  • 开发工具:IDEA Community Edition
  • 系统:Windows10(Mac、Linux 步骤类似,文末补充差异点)

一、先搞懂核心概念(不啰嗦,只讲有用的)

很多小伙伴集成前会被一堆概念搞懵,其实不用深入研究底层,记住 3 个关键点就行:

  1. OCR:光学字符识别,简单说就是把图片里的文字'读'出来,转换成可编辑的字符串,比如把图片中的'123456'识别成文本'123456'。

  2. Tesseract OCR:开源的 OCR 引擎,由 Google 维护,支持多语言识别,但本身是 C++ 开发的,Java 不能直接调用。

  3. Tess4J:Tesseract OCR 的 Java 封装包,帮我们封装了 C++ 底层调用逻辑,提供了简单的 Java API,让我们能在 SpringBoot 项目中直接使用 OCR 功能,不用自己写 JNI 调用,省大事儿。

补充一句:Tess4J 的识别精度不算顶级,但足够应对普通场景(比如清晰的印刷体文字、无复杂背景的图片),如果是复杂场景(比如手写体、模糊图片、复杂背景),建议还是用第三方接口,或者对 Tess4J 进行训练优化。

二、前期准备:下载字体库(关键步骤,缺一不可)

Tess4J 本身不自带字体库,识别文字必须依赖对应的语言训练包(tessdata),比如识别中文需要中文训练包,识别英文需要英文训练包,不下载字体库会直接识别失败,这是最容易踩的第一个坑!

字体库下载步骤:

  1. 基础字体库下载地址:tesseract-ocr/tessdata(GitHub)

  2. 标准高精度模型下载地址:tesseract-ocr/tessdata_best(GitHub 官方高精度库)

  3. 快速轻量模型下载地址:tesseract-ocr/tessdata_fast(GitHub 官方轻量库)

  4. 下载所需字体库文件(按需选择,无需全下),三者文件名一致,可直接替换使用:

  • 中文(简体):chi_sim.traineddata(适配三种模型,核心必备)
  • 英文:eng.traineddata(适配三种模型,识别英文/数字,建议必下)
  • 数字:enm.traineddata(适配三种模型,专门识别数字,基础版即可满足需求)

补充说明:标准高精度模型与基础版字体库文件名称完全一致,可根据需求选择其一下载,也可同时下载(替换使用);高精度模型体积稍大(单文件约 50-100MB),加载速度略慢,但识别精度更高,适合票据识别、模糊图片识别等场景;普通场景使用基础版即可,兼顾速度和效果。快速轻量模型与前两者文件名一致,体积最小(单文件约 5-15MB),加载速度最快,识别精度略低于基础版,适合低配置服务器、快速批量识别、对精度无过高要求的场景(如简单文字提取),三者可根据项目实际需求灵活替换使用。

  1. 新建字体库目录:在本地电脑新建一个文件夹(比如 D:/tessdata),把下载好的 .traineddata 文件全部放进去,记住这个路径,后面配置会用到(路径尽量简单,不要有中文、空格,否则会报路径找不到错误)。

三、SpringBoot3 项目搭建+Tess4J 集成(实战核心,每一步都实测)

这部分是重点,全程手敲代码,不复制粘贴,避免 AI 味,每一步都说明为什么这么做,以及可能踩的坑。

3.1 新建 SpringBoot 项目

打开 IDEA,新建 SpringBoot 项目,注意 3 个点:

  1. 选择 SpringBoot 版本:3.2.4(稳定版,避免用快照版,容易出问题)。
  2. JDK 选择 17(必须,SpringBoot3 不支持 JDK8,若用 JDK8,会提示版本不兼容)。
  3. 依赖只选一个:Spring Web(因为需要写接口,接收前端上传的图片),其他依赖后续手动添加。

项目创建完成后,删除默认的 DemoApplicationTests.java(用不上),整理一下目录结构,保持简洁。

3.2 添加 Tess4J 依赖(关键,版本必须匹配)

打开 pom.xml,添加 Tess4J 依赖,这里重点说一下版本问题:

一开始我用的是 4.1.1 版本,启动项目直接报'UnsatisfiedLinkError'错误,查了半天发现是版本不兼容——Tess4J 4.1.1 及以下版本不支持 SpringBoot3(JDK17),后来换成 4.5.6 版本,完美解决。

pom.xml 添加依赖(直接复制粘贴,无需修改):

<!-- Tess4J 依赖,兼容 SpringBoot3 + JDK17 -->
<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.18.0</version>
    <exclusions>
        <!-- 排除冲突的日志依赖,避免和 SpringBoot 默认日志冲突 -->
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 图像处理依赖,优化图片识别精度(可选,但建议添加) -->
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.6</version>
</dependency>

添加完依赖后,点击 IDEA 的'刷新'按钮,下载依赖包,耐心等一会儿(javacv-platform 依赖有点大,大概几百 M)。

3.3 编写配置文件(简化配置,避免冗余)

打开 application.yml(没有就新建,删除默认的 application.properties),添加 Tess4J 相关配置,主要是字体库路径、识别语言,配置如下:

server:
  port: 8080 # 项目端口,按需修改
tess4j:
  data-path: D:/tessdata # 刚才新建的字体库目录,替换成你自己的路径
  language: chi_sim+eng # 识别语言:中文 + 英文,中间用 + 连接,按需修改
  page-seg-mode: 6 # 识别模式:单行文本识别,适合大部分场景,不用修改

踩坑提示:路径一定要写对,不要有中文、空格,比如'D:/我的字体库'这种路径会报错,建议和我一样,放在磁盘根目录,路径简单易记。

3.4 编写配置类(注入 Tess4J 实例,全局复用)

新建 config 包,在包下新建 Tess4jConfig.java,作用是读取配置文件中的参数,创建 Tess4J 实例,并注入到 Spring 容器中,全局复用,不用每次识别都新建实例,节省资源。

代码如下(带详细注释,一看就懂):

package com.example.ocr.config;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Tess4J 配置类,注入实例,全局复用
 * 注意:不要自己手动 new Tesseract 实例,交给 Spring 管理,避免资源泄露
 */
@Configuration
public class Tess4jConfig {
    // 读取配置文件中的字体库路径
    @Value("${tess4j.data-path}")
    private String dataPath;
    // 读取配置文件中的识别语言
    @Value("${tess4j.language}")
    private String language;
    // 读取配置文件中的识别模式
    @Value("${tess4j.page-seg-mode}")
    private int pageSegMode;

    /**
     * 注入 Tess4J 实例,交给 Spring 管理
     * @return ITesseract
     */
    @Bean
    public ITesseract tesseract() {
        // 创建 Tess4J 实例
        ITesseract tesseract = new Tesseract();
        // 设置字体库路径
        tesseract.setDatapath(dataPath);
        // 设置识别语言
        tesseract.setLanguage(language);
        // 设置识别模式(单行文本识别,适合大部分场景)
        tesseract.setPageSegMode(pageSegMode);
        // 开启 OCR 优化(可选,能提升一点识别精度)
        tesseract.setOcrEngineMode(1);
        return tesseract;
    }
}

说明:这里用@Bean 注解将 ITesseract 实例注入 Spring 容器,后续在 Service 层直接注入使用即可,不用手动创建,符合 SpringBoot 的依赖注入思想。

3.5 编写 Service 层(核心业务逻辑,处理 OCR 识别)

新建 service 包,在包下新建 OcrService.java,编写 OCR 识别的核心逻辑,主要实现两个功能:1. 处理本地图片识别;2. 处理前端上传的图片(MultipartFile)识别。

代码如下(带异常处理,避免项目崩溃):

package com.example.ocr.service;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * OCR 识别服务类,封装核心识别逻辑
 */
@Service
public class OcrService {
    // 注入 Spring 管理的 Tess4J 实例
    @Autowired
    private ITesseract tesseract;

    /**
     * 识别本地图片中的文字
     * @param imagePath 本地图片路径(比如 D:/test.png)
     * @return 识别出的文字字符串
     * @throws TesseractException OCR 识别异常
     * @throws IOException 图片读取异常
     */
    public String recognizeLocalImage(String imagePath) throws TesseractException, IOException {
        // 读取本地图片
        File imageFile = new File(imagePath);
        if (!imageFile.exists()) {
            throw new IOException("本地图片不存在,请检查路径是否正确:" + imagePath);
        }
        // 调用 Tess4J 识别文字
        return tesseract.doOCR(imageFile);
    }

    /**
     * 识别前端上传的图片中的文字(MultipartFile)
     * @param file 前端上传的图片文件
     * @return 识别出的文字字符串
     * @throws TesseractException OCR 识别异常
     * @throws IOException 图片读取异常
     */
    public String recognizeUploadImage(MultipartFile file) throws TesseractException, IOException {
        // 校验图片文件是否为空
        if (file.isEmpty()) {
            throw new IOException("上传的图片为空,请重新上传");
        }
        // 将 MultipartFile 转换成 BufferedImage,避免生成临时文件
        BufferedImage image = ImageIO.read(file.getInputStream());
        if (image == null) {
            throw new IOException("图片格式错误,不支持该类型图片,请上传 PNG、JPG、JPEG 格式");
        }
        // 调用 Tess4J 识别文字
        return tesseract.doOCR(image);
    }
}

踩坑提示:

  1. 前端上传的图片,不要直接转换成 File(会生成临时文件,容易出现路径权限问题),建议转换成 BufferedImage,直接传入 doOCR 方法,更安全、更高效。
  2. 一定要做异常处理,比如图片不存在、图片格式错误、识别失败等情况,否则一旦出现异常,项目会直接崩溃。
3.6 编写 Controller 层(提供接口,供前端调用)

新建 controller 包,在包下新建 OcrController.java,编写两个接口:一个识别本地图片,一个接收前端上传的图片并识别,接口返回 JSON 格式,方便前端处理。

代码如下(带详细注释,支持 Postman 测试):

package com.example.ocr.controller;
import com.example.ocr.service.OcrService;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * OCR 识别接口控制器,提供对外接口
 */
@RestController
@RequestMapping("/api/ocr")
public class OcrController {
    @Autowired
    private OcrService ocrService;

    /**
     * 接口 1:识别本地图片(测试用,实际开发中很少用,因为后端不能直接访问前端本地图片)
     * 请求方式:GET
     * 请求参数:imagePath(本地图片路径)
     * 示例请求:http://localhost:8080/api/ocr/local?imagePath=D:/test.png
     */
    @GetMapping("/local")
    public ResponseEntity<Map<String, Object>> recognizeLocalImage(@RequestParam String imagePath) {
        Map<String, Object> result = new HashMap<>();
        try {
            // 调用 Service 层方法识别图片
            String text = ocrService.recognizeLocalImage(imagePath);
            result.put("code", 200);
            result.put("msg", "识别成功");
            result.put("data", text);
            return ResponseEntity.ok(result);
        } catch (Exception e) {
            result.put("code", 500);
            result.put("msg", "识别失败:" + e.getMessage());
            result.put("data", null);
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
        }
    }

    /**
     * 接口 2:识别前端上传的图片(实际开发中常用)
     * 请求方式:POST
     * 请求参数:file(前端上传的图片文件)
     * 示例请求:Postman 用 POST 请求,form-data 格式,key 为 file,value 为图片文件
     */
    @PostMapping("/upload")
    public ResponseEntity<Map<String, Object>> recognizeUploadImage(@RequestParam("file") MultipartFile file) {
        Map<String, Object> result = new HashMap<>();
        try {
            // 调用 Service 层方法识别图片
            String text = ocrService.recognizeUploadImage(file);
            result.put("code", 200);
            result.put("msg", "识别成功");
            result.put("data", text);
            return ResponseEntity.ok(result);
        } catch (Exception e) {
            result.put("code", 500);
            result.put("msg", "识别失败:" + e.getMessage());
            result.put("data", null);
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);
        }
    }
}

说明:接口 1 主要用于测试,实际开发中,后端不能直接访问前端本地的图片路径,所以接口 2 才是常用的——前端通过 form-data 格式上传图片,后端接收并识别,返回识别结果。

四、实战测试(验证效果,排除问题)

项目搭建完成后,启动项目(启动类正常启动即可,无需修改),启动成功后,用 Postman 测试两个接口,验证 OCR 识别效果。

4.1 测试本地图片识别接口
  1. 准备一张本地图片(比如 D:/test.png),图片中包含中文和英文,比如'SpringBoot3 集成 Tess4J 实现 OCR 识别,测试文本 123456'。
  2. 打开 Postman,发送 GET 请求:http://localhost:8080/api/ocr/local?imagePath=D:/test.png。
  3. 查看返回结果,如果返回如下 JSON,说明识别成功:
{
  "code": 200,
  "msg": "识别成功",
  "data": "SpringBoot3 集成 Tess4J 实现 OCR 识别,测试文本 123456"
}
4.2 测试上传图片识别接口
  1. 打开 Postman,发送 POST 请求:http://localhost:8080/api/ocr/upload。
  2. 请求格式选择 form-data,key 设置为 file,value 选择刚才准备的图片文件(test.png)。
  3. 点击发送,查看返回结果,和本地图片识别结果一致,说明接口正常。

补充:如果识别结果有乱码、漏字,大概率是两个问题:1. 字体库下载错误(比如中文字体库下载成了繁体 chi_tra.traineddata);2. 图片模糊、背景复杂,建议优化图片(比如转换成灰度图、去除背景),后面会补充优化方法。

五、常见踩坑总结(重中之重,避免重复踩坑)

这部分是我实际集成中踩过的坑,整理出来,帮大家节省时间,每一个坑都有对应的解决方案,亲测有效。

坑 1:启动项目报'UnsatisfiedLinkError: Unable to load library 'tesseract''

原因:Tess4J 版本不兼容 SpringBoot3(JDK17),或者缺少系统依赖(比如 Windows 缺少 Visual C++ 运行库)。

解决方案:

  1. 将 Tess4J 版本换成 4.5.6(兼容 SpringBoot3+JDK17)。
  2. Windows 系统:下载安装 Visual C++ 2015 运行库(百度搜索即可,免费),安装后重启项目。
  3. Mac 系统:执行命令 brew install tesseract,安装系统依赖。
  4. Linux 系统:执行命令 apt-get install tesseract-ocr libtesseract-dev libleptonica-dev,安装系统依赖。
坑 2:识别时报'TesseractException: Invalid tessdata path'

原因:字体库路径错误,或者路径中包含中文、空格,Tess4J 找不到字体库文件。

解决方案:

  1. 检查 application.yml 中的 tess4j.data-path 配置,确保路径正确(比如 D:/tessdata)。
  2. 路径不要有中文、空格,比如'D:/我的字体库'改成'D:/tessdata'。
  3. 检查字体库目录中是否有对应的 .traineddata 文件(比如 chi_sim.traineddata、eng.traineddata),没有就重新下载。
坑 3:识别结果乱码、漏字,或者识别不出中文

原因:1. 没有下载中文字体库(chi_sim.traineddata);2. 识别语言配置错误;3. 图片模糊、背景复杂。

解决方案:

  1. 确认字体库目录中有 chi_sim.traineddata(中文简体字体库)。
  2. 检查 application.yml 中的 tess4j.language 配置,确保是 chi_sim+eng(中文 + 英文),不要写成 chi、zh 等错误格式。
  3. 优化图片:将图片转换成灰度图、二值化处理(去除背景噪音),可以用 PS 或者代码处理(后面补充代码优化方法)。
坑 4:前端上传图片报'IOException: 图片格式错误'

原因:上传的图片格式不支持,Tess4J 支持的图片格式有 PNG、JPG、JPEG、BMP、GIF 等,不支持 PDF、SVG 等格式。

解决方案:前端限制上传图片格式为 PNG、JPG、JPEG,后端也可以添加格式校验,过滤不支持的图片格式。

六、优化建议(提升识别精度,完善功能)

如果你的项目对识别精度要求较高,可以试试以下优化方法,亲测能提升 10%-20% 的识别精度。

6.1 图片预处理(最有效)

在识别图片前,对图片进行预处理,去除背景噪音、调整对比度、转换成灰度图,能显著提升识别精度,尤其是针对模糊、有复杂背景的图片。

在 OcrService 中添加图片预处理方法,修改 recognizeUploadImage 方法,示例代码如下:

// 图片预处理方法(优化识别精度)
private BufferedImage preprocessImage(BufferedImage original) {
    try {
        // 1. 转换成灰度图(去除颜色干扰)
        BufferedImage grayscale = ImageHelper.convertImageToGrayscale(original);
        // 2. 二值化处理(黑白对比,去除背景噪音)
        BufferedImage binary = ImageHelper.convertImageToBinary(grayscale);
        // 3. 调整图片分辨率(可选,适合低分辨率图片)
        return ImageHelper.getScaledInstance(binary, binary.getWidth() * 2, binary.getHeight() * 2);
    } catch (Exception e) {
        // 预处理失败,返回原始图片,不影响识别
        return original;
    }
}

// 修改 recognizeUploadImage 方法,添加预处理
public String recognizeUploadImage(MultipartFile file) throws TesseractException, IOException {
    if (file.isEmpty()) {
        throw new IOException("上传的图片为空,请重新上传");
    }
    BufferedImage image = ImageIO.read(file.getInputStream());
    if (image == null) {
        throw new IOException("图片格式错误,不支持该类型图片,请上传 PNG、JPG、JPEG 格式");
    }
    // 添加图片预处理
    BufferedImage processedImage = preprocessImage(image);
    // 调用 Tess4J 识别文字
    return tesseract.doOCR(processedImage);
}
6.2 更换更高精度的字体库

GitHub 上有一些优化后的字体库(比如 chi_sim_vert.traineddata,适合竖排中文;chi_sim_best.traineddata,精度更高),可以替换默认的 chi_sim.traineddata,提升中文识别精度。

6.3 调整识别模式

application.yml 中的 tess4j.page-seg-mode 配置,不同的模式适合不同的场景,默认是 6(单行文本识别),可以根据自己的需求调整:

  1. 0:默认模式,适合多行为本、复杂版面。
  2. 6:单行文本识别,适合验证码、票据编号等单行文字场景。
  3. 7:单个字符识别,适合验证码(单个字符)场景。

七、Mac/Linux 系统适配(补充)

前面的步骤都是基于 Windows 系统,Mac 和 Linux 系统只有两个地方不一样,其他步骤完全相同:

7.1 字体库路径配置

Mac 系统:新建字体库目录(比如 /Users/xxx/tessdata),将字体库文件放进去,配置文件中路径写成 /Users/xxx/tessdata。

Linux 系统:新建字体库目录(比如 /usr/local/tessdata),将字体库文件放进去,配置文件中路径写成 /usr/local/tessdata。

7.2 安装系统依赖

Mac 系统:打开终端,执行命令 brew install tesseract,安装完成后重启项目。

Linux 系统:打开终端,执行命令 apt-get install tesseract-ocr libtesseract-dev libleptonica-dev(Ubuntu/Debian 系统),CentOS 系统执行 yum install tesseract。

八、总结

SpringBoot3 集成 Tess4J 实现 OCR 识别,整体难度不大,核心步骤就 4 个:下载字体库、添加依赖、编写配置、实现业务逻辑。

最容易踩的坑是版本不兼容、字体库路径错误、系统依赖缺失,只要避开这 3 个坑,基本上就能一次集成成功。

如果你的项目要求数据不联网、识别精度要求不高,Tess4J 是一个很好的选择;如果是复杂场景(手写体、模糊图片),建议还是用第三方 OCR 接口,或者对 Tess4J 进行训练优化。

最后,附上完整的项目结构,方便大家对照搭建:

ocr-demo(项目名称)
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.example.ocr
│   │   │       ├── OcrDemoApplication.java(启动类)
│   │   │       ├── config(配置包)
│   │   │       │   └── Tess4jConfig.java(Tess4J 配置类)
│   │   │       ├── service(服务包)
│   │   │       │   └── OcrService.java(OCR 核心服务)
│   │   │       └── controller(控制器包)
│   │   │           └── OcrController.java(OCR 接口控制器)
│   │   └── resources
│   │       └── application.yml(配置文件)
│   └── test(测试包,可删除)
└── pom.xml(依赖配置)

目录

  1. 一、先搞懂核心概念(不啰嗦,只讲有用的)
  2. 二、前期准备:下载字体库(关键步骤,缺一不可)
  3. 三、SpringBoot3 项目搭建+Tess4J 集成(实战核心,每一步都实测)
  4. 3.1 新建 SpringBoot 项目
  5. 3.2 添加 Tess4J 依赖(关键,版本必须匹配)
  6. 3.3 编写配置文件(简化配置,避免冗余)
  7. 3.4 编写配置类(注入 Tess4J 实例,全局复用)
  8. 3.5 编写 Service 层(核心业务逻辑,处理 OCR 识别)
  9. 3.6 编写 Controller 层(提供接口,供前端调用)
  10. 四、实战测试(验证效果,排除问题)
  11. 4.1 测试本地图片识别接口
  12. 4.2 测试上传图片识别接口
  13. 五、常见踩坑总结(重中之重,避免重复踩坑)
  14. 坑 2:识别时报“TesseractException: Invalid tessdata path”
  15. 坑 3:识别结果乱码、漏字,或者识别不出中文
  16. 坑 4:前端上传图片报“IOException: 图片格式错误”
  17. 六、优化建议(提升识别精度,完善功能)
  18. 6.1 图片预处理(最有效)
  19. 6.2 更换更高精度的字体库
  20. 6.3 调整识别模式
  21. 七、Mac/Linux 系统适配(补充)
  22. 7.1 字体库路径配置
  23. 7.2 安装系统依赖
  24. 八、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 基础语法核心指南
  • 基于大模型的语音转文字应用实现指南
  • Spring Boot 集成 Debezium 实现 PostgreSQL 增量同步
  • LazyLLM 多 Agent 应用全流程实践:从源码部署到可视化 Web 调试
  • 任意版本 GitLens VSCode 插件代码修改方法
  • C++ 二叉搜索树原理与实战:插入查找删除及 key/value 场景
  • AI 时代如何脱颖而出:商业认知与实战策略
  • Coze 智能体核心资源详解:插件、知识库与数据库实战
  • 使用 OpenLLM 构建和部署大模型应用
  • Silly Tavern 角色卡与世界书导入教程
  • Microi 吾码:基于 Spring Boot 的低代码微服务框架
  • AIGC 异步回调系统架构设计与实现
  • Python 实时快递物流跟踪爬虫:异步并发与智能解析
  • Kali Linux 官方更新命令详解
  • C++ vector 容器:底层原理、扩容机制与实战用法详解
  • ToClaw 评测:不只是炫技,更是易用的桌面 AI 助手
  • Flutter 三方库 dart_webrtc 的鸿蒙化适配指南
  • Qwen3-4B-Instruct 提示词优化与使用避坑指南
  • Java CRM 系统架构设计与高并发实战解析
  • 基于 Flask 与 PyTorch 的图像分类 API 服务搭建

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online