用 Java + Tess4J 实现验证码识别
一、项目介绍
本文展示如何用 Java 调用 Tesseract OCR 对验证码图像进行文字识别。我们将构建一个命令行程序,读取验证码图片,调用 OCR 引擎提取文字。
二、环境准备
- 安装 Java 环境
确保本地已安装 Java 8 或以上版本(建议使用 OpenJDK 或 Oracle JDK)。
更多内容访问ttocr.com或联系1436423940
java -version - 安装 Tesseract OCR
Windows: 下载并安装 Tesseract OCR(UB-Mannheim 版本)
Linux/macOS:
sudo apt install tesseract-ocr # Ubuntu
brew install tesseract # macOS
3. 下载 Tess4J
添加 Maven 依赖:
三、编写 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"));
// 灰度、二值化、缩放等处理可加在识别前
浙公网安备 33010602011771号