Java调用tess4j完成 OCR 文字识别

1,新建 maven 工程

2,引入依赖
<dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>5.11.0</version>
    </dependency>


3,安装 tesseract-ocr

下载地址https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.3.20231005.exe

其他版本可以查看 https://digi.bib.uni-mannheim.de/tesseract/

安装过程中一直点下一步,建议取消语言包选项,后面手动下载

可能需要安装visual c++ 2015-2019 redistributable或最新版visual c++ 2015-2022 redistributable

4,下载语言包
https://digi.bib.uni-mannheim.de/tesseract/tessdata_fast/

下载enm.traineddata和chi_sim.traineddata,复制粘贴到C:\Program Files\Tesseract-OCR\tessdata

5,调用 Tesseract API 完成文本识别

import java.io.File;

import net.sourceforge.tess4j.Tesseract;

public class Tess4jDemo {

    public static void main(String[] args) {
        // 创建实例
        Tesseract instance = new Tesseract();
        
        // 设置语言包路径
        instance.setDatapath("C:\\Program Files\\Tesseract-OCR\\tessdata");
        
        // 设置语言
        instance.setLanguage("chi_sim");
        
        // 设置文本文件
        File file = new File("C:\\Users\\user1\\Desktop\\截图.PNG");
        
        try {
            // 文本识别
            String result = instance.doOCR(file);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

示例代码见


 https://download.csdn.net/download/daqinzl/89221358

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tess4J 是一个基于 Tesseract OCR 引擎的 Java 包装器,用于识别文本。在使用 Tess4J 时,可能会遇到以下问题: 1. 找不到 JNI 库 如果在使用 Tess4J 时出现 "java.lang.UnsatisfiedLinkError" 异常,这可能是因为 JVM 找不到 JNI 库的原因。解决方法是将 Tesseract 的 JNI 库添加到 Java 库路径中。可以在代码中使用以下语句添加: ```java System.setProperty("jna.library.path", "path/to/tesseract/lib"); ``` 其中 "path/to/tesseract/lib" 是 JNI 库所在的路径。 2. Tessdata 目录设置错误 Tess4J 需要 Tesseract 引擎的训练数据(tessdata)目录来进行 OCR。如果没有正确设置该目录,可能会出现 "java.lang.IllegalArgumentException: Invalid memory access" 异常。解决方法是在代码中使用以下语句设置该目录: ```java File tessDataFolder = LoadLibs.extractTessResources("tessdata"); ``` 其中 "tessdata" 是训练数据目录的名称,可以根据实际情况修改。 3. 字符集不匹配 如果 OCR 结果包含了乱码或者无法识别的字符,可能是因为字符集不匹配的原因。可以在代码中使用以下语句设置字符集: ```java tesseract.setTessVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); ``` 其中 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 是要识别的字符集,可以根据实际需求修改。 4. Tesseract 引擎版本不匹配 如果在使用 Tess4J 时出现 "java.lang.UnsatisfiedLinkError" 或者其他异常,可能是因为 Tesseract 引擎的版本不匹配。建议使用与 Tess4J 版本匹配的 Tesseract 引擎版本。 以上是一些常见的 Tess4J 使用问题及其解决方法,希望对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值