使用 R 与 Tesseract 实现验证码识别
一、环境准备
安装 R(https://cran.r-project.org)
安装 Tesseract OCR
更多内容访问ttocr.com或联系1436423940
macOS
brew install tesseract
Ubuntu
sudo apt install tesseract-ocr
Windows
从 https://github.com/tesseract-ocr/tesseract/releases 下载并安装
安装 R 包:tesseract 和 magick(图像处理)
install.packages("tesseract")
install.packages("magick")
二、R 脚本示例
保存为 captcha_ocr.R:
library(tesseract)
library(magick)
设定验证码图像路径
img_path <- "captcha1.png"
读取图像
img <- image_read(img_path)
可选:预处理图像(灰度化 + 提高对比度)
img <- image_convert(img, colorspace = "gray")
img <- image_contrast(img, sharpen = 1)
指定字符集(仅识别大写字母和数字)
eng <- tesseract("eng", options = list(tessedit_char_whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"))
进行 OCR
result <- ocr(img, engine = eng)
提取有效字符
result_clean <- gsub("[^A-Z0-9]", "", result)
cat("识别结果:", result_clean, "\n")
三、运行示例
在 R 控制台或 Rscript 命令下运行:
Rscript captcha_ocr.R
示例输出:
识别结果: 8ZD2
四、可选功能扩展
你可以:
遍历文件夹内所有验证码图像批量识别:
files <- list.files("captcha_folder", pattern = "\.png$", full.names = TRUE)
for (f in files) {
img <- image_read(f)
result <- ocr(img, engine = eng)
cleaned <- gsub("[^A-Z0-9]", "", result)
cat(basename(f), ":", cleaned, "\n")
}
结果写入 CSV:
write.csv(data.frame(filename = basename(files), text = cleaned), "results.csv", row.names = FALSE)
浙公网安备 33010602011771号