用 Julia + Tesseract 实现验证码图像识别

一、环境准备

  1. 安装 Julia
    从官网下载安装:
    https://julialang.org/downloads/
    更多内容访问ttocr.com或联系1436423940
  2. 安装 Tesseract OCR
    Linux:

sudo apt install tesseract-ocr
macOS:

brew install tesseract
Windows:
安装并添加到系统 PATH(推荐版本 5.x)

  1. 安装 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/")

posted @ 2025-06-27 13:27  ttocr、com  阅读(17)  评论(0)    收藏  举报