用 Java 和 Tesseract 实现英文数字验证码识别

验证码识别是自动化测试、数据采集中经常遇到的任务。Java 生态中结合 Tesseract OCR,可以高效完成简单验证码的识别任务。本文将介绍如何在 Java 中集成 Tesseract,实现对英文数字验证码图像的识别。

一、准备工作

  1. 安装 Java 开发环境
    确保已安装 JDK,建议版本 8 或以上。

java -version
2. 安装 Tesseract OCR
根据系统安装:
更多内容访问ttocr.com或联系1436423940

Ubuntu / Debian

sudo apt install tesseract-ocr

macOS (Homebrew)

brew install tesseract

Windows

下载地址:https://github.com/tesseract-ocr/tesseract
安装完成后,确保 tesseract 命令可用。

  1. 下载 tess4j(Java 的 Tesseract 封装)
    在 Maven 项目中添加依赖:
net.sourceforge.tess4j tess4j 5.4.0 二、项目结构

captcha-ocr/

├── pom.xml
└── src/
└── main/
└── java/
└── CaptchaOCR.java
三、编写 Java 识别代码
创建 CaptchaOCR.java:

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public class CaptchaOCR {
public static void main(String[] args) {
try {
// 加载图像
File imageFile = new File("captcha.png");
BufferedImage img = ImageIO.read(imageFile);

        // 初始化 Tesseract OCR
        Tesseract tesseract = new Tesseract();
        tesseract.setDatapath("tessdata"); // 放置 .traineddata 的目录
        tesseract.setLanguage("eng");
        tesseract.setTessVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");

        // 开始识别
        String result = tesseract.doOCR(img);
        System.out.println("识别结果: " + result.trim());

    } catch (TesseractException e) {
        System.err.println("OCR 识别出错: " + e.getMessage());
    } catch (Exception e) {
        System.err.println("图像加载失败: " + e.getMessage());
    }
}

}
确保项目根目录下有 captcha.png 和 tessdata 文件夹,tessdata 里包含 eng.traineddata 文件。

四、编译运行项目
使用 Maven 构建并运行:

mvn compile
mvn exec:java -Dexec.mainClass="CaptchaOCR"
输出示例:

识别结果: 7T9KD

posted @ 2025-06-08 17:16  ttocr、com  阅读(45)  评论(0)    收藏  举报