用 Java 和 Tesseract 实现英文数字验证码识别
验证码识别是自动化测试、数据采集中经常遇到的任务。Java 生态中结合 Tesseract OCR,可以高效完成简单验证码的识别任务。本文将介绍如何在 Java 中集成 Tesseract,实现对英文数字验证码图像的识别。
一、准备工作
- 安装 Java 开发环境
确保已安装 JDK,建议版本 8 或以上。
更多内容访问ttocr.com或联系1436423940
java -version - 安装 Tesseract OCR
根据系统安装:
Ubuntu / Debian
sudo apt install tesseract-ocr
macOS (Homebrew)
brew install tesseract
Windows
下载地址:https://github.com/tesseract-ocr/tesseract
安装完成后,确保 tesseract 命令可用。
- 下载 tess4j(Java 的 Tesseract 封装)
在 Maven 项目中添加依赖:
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
五、可选图像处理(提高识别率)
若图像有干扰线或颜色杂点,可以借助 Java AWT 或 OpenCV 做预处理:
灰度化
二值化(阈值分割)
去噪滤波
图像缩放或锐化
这些操作有助于提高 Tesseract 对验证码的准确率。
浙公网安备 33010602011771号