【Java】学习使用Tesseract实现验证码图片内容识别

Tesseract为OCR中最为流行的开源软件,本文仅演示了使用Tesseract识别验证码图片的应用场景,其他使用场景需要自行解锁

本人学习环境:

操作系统:win10

java版本:jdk11

(仅作为环境介绍,不一致也无妨)

 

步骤一:

安装Tesseract环境

可去官网查看各个环境的安装教程,本次是使用的windows版本,windows安装地址

 

如需要使用简体中文,需要在安装过程中指定其他语言数据下载,如下图所示:

 

步骤二:

添加相关Maven依赖

<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>tesseract-platform</artifactId>
    <version>4.0.0-1.4.4</version>
</dependency>

 

步骤三:

java测试类代码

复制代码
package wcontour.ocr;

import org.bytedeco.javacpp.BytePointer;
import org.bytedeco.javacpp.lept;
import org.bytedeco.javacpp.tesseract;

import static org.bytedeco.javacpp.lept.pixDestroy;
import static org.bytedeco.javacpp.lept.pixRead;

public class OCRTest {

    public static void main(String[] args) {
        //验证码路径
        String filePath = "C:\\Pictures\\OCR\\yzm2.jpg";
        //开始识别
        ocrTest(filePath);
    }

    public static void ocrTest(String filePath) {
        BytePointer outText;

        tesseract.TessBaseAPI api = new tesseract.TessBaseAPI();
        //s指定安装好的tessdata目录路径,s1指定语言
        //chi_sim为简体中文(需要在安装tessdata过程中手动指定安装chi_sim语言),eng为英文(为默认安装语言)
        if (api.Init("E:\\ENV\\Tesseract-OCR\\tessdata", "chi_sim") != 0) {
            System.err.println("无法初始化tesseract");
            return;
        }
        // 放入图片
        lept.PIX image = pixRead(filePath);
        api.SetImage(image);
        // 获取OCR结果
        outText = api.GetUTF8Text();
        System.out.println("OCR output:\n" + outText.getString());

        // 销毁使用过的对象并释放内存
        api.End();
        api.close();
        outText.deallocate();
        pixDestroy(image);
    }
}
复制代码

 

测试结果:

 

 

感谢观看!

本文借鉴博客:Tesseract教程 - 李理的博客 (fancyerii.github.io)

posted @   不想输入手机号和邮箱  阅读(1290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示