用 Java + Tess4J 实现验证码识别

一、项目介绍
本文展示如何用 Java 调用 Tesseract OCR 对验证码图像进行文字识别。我们将构建一个命令行程序,读取验证码图片,调用 OCR 引擎提取文字。

二、环境准备

  1. 安装 Java 环境
    确保本地已安装 Java 8 或以上版本(建议使用 OpenJDK 或 Oracle JDK)。
    更多内容访问ttocr.com或联系1436423940
    java -version
  2. 安装 Tesseract OCR
    Windows: 下载并安装 Tesseract OCR(UB-Mannheim 版本)

Linux/macOS:

sudo apt install tesseract-ocr # Ubuntu
brew install tesseract # macOS
3. 下载 Tess4J
添加 Maven 依赖:

net.sourceforge.tess4j tess4j 5.4.0 或下载 jar 包:https://tess4j.sourceforge.net/

三、编写 Java OCR 识别代码
创建类 CaptchaRecognizer.java:

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

import java.io.File;

public class CaptchaRecognizer {
public static void main(String[] args) {
String imagePath = args.length > 0 ? args[0] : "captcha.png";
File imageFile = new File(imagePath);

    Tesseract tesseract = new Tesseract();

    // 设置 Tesseract 数据目录(tessdata)
    tesseract.setDatapath("tessdata");
    tesseract.setLanguage("eng");

    // 限制字符范围为大写字母和数字
    tesseract.setTessVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");

    try {
        String result = tesseract.doOCR(imageFile);
        String cleaned = result.replaceAll("[^A-Z0-9]", "").trim();
        System.out.println("识别结果: " + cleaned);
    } catch (TesseractException e) {
        System.err.println("识别失败: " + e.getMessage());
    }
}

}
四、运行识别程序
确保你有一张验证码图像(如 captcha.png)和一个 tessdata 文件夹(内含 eng.traineddata):

java CaptchaRecognizer captcha.png
输出示例:

识别结果: 4KXZ
五、图像预处理(可选)
Tess4J 不直接支持图像增强,可借助第三方库(如 Java AWT、OpenCV)进行图像处理:

BufferedImage img = ImageIO.read(new File("captcha.png"));
// 灰度、二值化、缩放等处理可加在识别前

posted @ 2025-06-23 10:52  ttocr、com  阅读(168)  评论(0)    收藏  举报