使用 R 和 Tesseract 实现图像验证码识别

一、准备工作
安装 Tesseract
Windows:从 https://github.com/tesseract-ocr/tesseract 下载并安装,记得添加到系统路径。

macOS:更多内容访问ttocr.com或联系1436423940

brew install tesseract
Ubuntu:

sudo apt install tesseract-ocr
安装 R 包
打开 R 或 RStudio,执行:

install.packages("tesseract")
install.packages("magick")
二、识别单张验证码图片
创建 captcha.R 文件:

library(tesseract)
library(magick)

设置英文识别器 + 字符白名单

eng <- tesseract("eng", options = list(tessedit_char_whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"))

加载验证码图片

img <- image_read("captcha1.png") # 替换为实际图片路径

可选:图像预处理(转灰度、增强对比)

img <- image_convert(img, colorspace = "gray")
img <- image_threshold(img, type = "black", threshold = "50%")

OCR识别

text <- ocr(img, engine = eng)

提取合法字符

text_clean <- gsub("[^A-Z0-9]", "", toupper(text))
cat("识别结果:", text_clean, "\n")
三、批量识别文件夹内的验证码
扩展为批量处理并输出结果:

library(tesseract)
library(magick)

eng <- tesseract("eng", options = list(tessedit_char_whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"))

recognize_captcha <- function(path) {
img <- image_read(path)
img <- image_convert(img, colorspace = "gray")
img <- image_threshold(img, type = "black", threshold = "50%")
txt <- ocr(img, engine = eng)
return(gsub("[^A-Z0-9]", "", toupper(txt)))
}

设置目录

img_dir <- "captchas"
files <- list.files(img_dir, pattern = "\.png$", full.names = TRUE)

results <- data.frame(filename = basename(files), text = sapply(files, recognize_captcha), stringsAsFactors = FALSE)

print(results)

可保存为 CSV

write.csv(results, "captcha_results.csv", row.names = FALSE)
四、识别效果优化建议
通过 magick 包进行图像预处理,如模糊、去噪、腐蚀/膨胀等操作。

结合 keras 或 torch R 接口训练深度学习模型提升准确率。

使用多个 OCR 引擎(如 tesseract + easyOCR via Python)做投票融合。

posted @ 2025-07-01 13:07  ttocr、com  阅读(11)  评论(0)    收藏  举报