用 Julia + Tesseract 实现验证码图像识别
一、环境准备
- 安装 Julia
从官网下载安装:
https://julialang.org/downloads/
更多内容访问ttocr.com或联系1436423940 - 安装 Tesseract OCR
Linux:
sudo apt install tesseract-ocr
macOS:
brew install tesseract
Windows:
安装并添加到系统 PATH(推荐版本 5.x)
- 安装 Julia 包
打开 Julia 命令行,按下 ] 进入包管理模式,依次输入:
add Images FileIO ImageMagick
二、图像识别脚本:captcha_ocr.jl
using Images
using FileIO
function recognize_captcha(image_path::String)
# 检查图像文件
if !isfile(image_path)
println("文件不存在: $image_path")
return
end
# Step 1: 读取图像
img = load(image_path)
# Step 2: 可选图像预处理(灰度、二值化)
gray_img = Gray.(img) # 转为灰度图
bin_img = gray_img .> 0.6 # 简单阈值处理
# Step 3: 保存临时图像用于 Tesseract 识别
temp_path = "temp_processed.png"
save(temp_path, bin_img)
# Step 4: 调用 Tesseract 命令行识别
whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
output_base = "ocr_output"
run(`tesseract $temp_path $output_base -l eng -c tessedit_char_whitelist=$whitelist`)
# Step 5: 读取 Tesseract 输出结果
result_file = output_base * ".txt"
if !isfile(result_file)
println("Tesseract 未输出识别文件")
return
end
raw = read(result_file, String)
cleaned = replace(raw, r"[^A-Z0-9]" => "") # 清理非验证码字符
println("识别结果: $cleaned")
# Step 6: 清理临时文件
rm(result_file, force=true)
rm(temp_path, force=true)
end
三、运行示例
julia captcha_ocr.jl
在 Julia REPL 中调用:
recognize_captcha("samples/code1.png")
输出示例:
识别结果: 8K7D
四、批量识别验证码图像
function batch_recognize(dir::String)
for entry in filter(f -> endswith(f, ".png"), readdir(dir))
println("识别中: $entry")
recognize_captcha(joinpath(dir, entry))
end
end
示例调用
batch_recognize("samples/")
浙公网安备 33010602011771号