Tesseract OCR的Java使用(附安装包,非常详细)

一、工具简介

Tesseract OCR 是一款开源免费、支持离线运行的光学字符识别引擎,能够从图片中提取文字并转为可编辑、复制的文本内容。

它全面兼容 PNG、JPEG、GIF、BMP、TIFF 等主流图片格式,识别结果可导出为 TXT、PDF、HTML 等文件;内置上百种语言识别库,完美支持英文、简体中文等常用语种,图片清晰度越高,识别准确率越好

目前市面上主流 OCR 工具还有 ABBYY FineReader、EasyOCR、百度智能云 OCR 等。对比而言,Tesseract OCR 核心优势为:完全免费、无需联网离线使用、支持 Windows/Linux/Mac 跨平台部署,同时支持自定义训练模型,可适配各类复杂场景的文字识别需求。

二、Tesseract OCR 安装包下载

1. 官方资源

2. 百度网盘(整合包,推荐新手)

已打包好安装程序 + 全量语言包,直接解压即可使用

链接:https://pan.baidu.com/s/1KZI0aaTIJKhfVX7TIDrUTQ

提取码:amhi

文件名称:Tesseract-OCR.zip

三、系统环境变量配置

安装 / 解压完成后,必须配置两道环境变量,否则 Java 项目无法正常调用。

1. 新增 TESSDATA_PREFIX 变量(语言包目录)

该变量用于指定语言库 tessdata 所在路径,路径指向 tessdata 文件夹根目录

  • 变量名:TESSDATA_PREFIX
  • 变量值:E:\dev\OCR\Tesseract-OCR\tessdata

提示:请根据你实际的安装 / 解压路径修改。

2. 配置 Path 环境变量(程序执行目录)

将 Tesseract 主程序目录添加到系统 Path 中,示例:

复制代码
E:\dev\OCR\Tesseract-OCR

四、Java 项目集成(Tess4J)

Java 通过 Tess4J 框架调用 Tesseract 原生能力,下面提供完整依赖、工具类及使用说明。

1. 引入 Maven 依赖

pom.xml 中添加核心依赖:

xml 复制代码
<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.7.0</version>
</dependency>

2. 通用 OCR 工具类

封装识别方法,增加参数优化、异常捕获、日志打印,适配中文 + 英文混合场景:

java 复制代码
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;

/**
 * Tesseract OCR 图片文字识别工具类
 *
 * @Author:
 * @Date:
 */
public class OCRUtils {

    private static final Logger log = LoggerFactory.getLogger(OCRUtils.class);

    /**
     * 图片文字识别
     * @param file 待识别图片文件
     * @return 识别后的文本内容
     */
    public static String ocr(File file) {
        long startTime = System.currentTimeMillis();
        log.info("开始执行图片OCR识别");

        // 校验语言包环境变量
        String tessdataPath = System.getenv("TESSDATA_PREFIX");
        if (tessdataPath == null || tessdataPath.isBlank()) {
            log.error("环境变量 TESSDATA_PREFIX 未配置,请检查!");
            throw new RuntimeException("Tesseract 环境变量配置异常");
        }
        log.debug("当前语言包路径:{}", tessdataPath);

        Tesseract tesseract = new Tesseract();
        // 识别语言:chi_sim简体中文 + eng英文,按需删减
        tesseract.setLanguage("chi_sim+eng");
        // 页面分割模式:整张图片作为单个文本块(适配常规截图/图片)
        tesseract.setPageSegMode(6);
        // 引擎模式:混合引擎(LSTM+传统),综合识别精度最高
        tesseract.setOcrEngineMode(3);

        String result;
        try {
            result = tesseract.doOCR(file);
        } catch (TesseractException e) {
            log.error("OCR 识别失败", e);
            throw new RuntimeException("图片文字识别异常", e);
        }

        long costTime = System.currentTimeMillis() - startTime;
        log.info("OCR识别完成,耗时:{} 毫秒,识别结果:{}", costTime, result);
        return result;
    }
}

3. 调用示例

java 复制代码
public class TestMain {
    public static void main(String[] args) {
        // 传入本地图片文件
        File imgFile = new File("C:\\Users\\86183\\Desktop\\test.png");
        String text = OCRUtils.ocr(imgFile);
        System.out.println("最终识别内容:\n" + text);
    }
}

五、参数说明 & 优化建议

  1. setLanguage("chi_sim+eng")

    复制代码
    chi_sim

    简体中文、

    复制代码
    eng

    英文,纯中文场景可简写为

    复制代码
    chi_sim
  2. setPageSegMode(6)

    将整张图片视为一个完整文本块,适配绝大多数截图、文档图片;图片倾斜可改为 1,多段落图文可改为 3。

  3. setOcrEngineMode(3)

    启用 LSTM + 传统混合引擎,是目前识别精度、兼容性最优配置。

六、运行效果

配置完成后运行代码,即可成功提取图片内文字,识别效果参考:

七、常见问题排查

  1. 报错找不到 tesseract 程序:检查 Path 环境变量是否配置正确;
  2. 中文乱码 / 识别为空:检查 TESSDATA_PREFIX 路径、是否放置 chi_sim.traineddata 中文语言包;
  3. 识别精度低:替换 tessdata_best 高精度语言包,同时保证原图清晰无模糊、倾斜。

题排查

  1. 报错找不到 tesseract 程序:检查 Path 环境变量是否配置正确;
  2. 中文乱码 / 识别为空:检查 TESSDATA_PREFIX 路径、是否放置 chi_sim.traineddata 中文语言包;
  3. 识别精度低:替换 tessdata_best 高精度语言包,同时保证原图清晰无模糊、倾斜。
相关推荐
程序喵大人3 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
cui_ruicheng3 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
Jelena157795857923 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
wdfk_prog4 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
晴空了无痕4 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
神明不懂浪漫4 小时前
【第五章】Java中的继承与多态
java·开发语言
神州世通5 小时前
解密企业通信安全防线:Avaya Aura 三层安全架构深度解析
开发语言·php
AC赳赳老秦6 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
AI多Agent协作实战派6 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit7 小时前
Java+Ai+vue
java·spring·maven