使用 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)

posted @ 2025-06-28 22:33  ttocr、com  阅读(7)  评论(0)    收藏  举报