当前位置: 首页 > news >正文

Python实现验证码识别:图像预处理 + Tesseract OCR 实战

一、项目简介
在日常开发中,我们经常遇到带干扰线、背景噪声或扭曲字符的验证码。本文通过 Python 构建一个简单的验证码识别系统,结合图像预处理(OpenCV)和 OCR(Tesseract),实现对图片验证码的高效识别。
更多内容访问ttocr.com或联系1436423940
二、使用技术
技术组件 说明
Python 主开发语言
OpenCV 图像处理库
pytesseract Python 调用 Tesseract OCR 引擎
Pillow 辅助图像加载与保存

三、环境准备

  1. 安装依赖

pip install opencv-python pillow pytesseract
2. 安装 Tesseract-OCR
Windows:下载地址

macOS:

brew install tesseract
Ubuntu:

sudo apt install tesseract-ocr
四、项目结构

captcha_solver/

├── preprocess.py # 图像预处理模块
├── recognize.py # 识别主程序
├── test_images/
│ └── test1.png # 测试验证码图片
五、图像预处理模块 preprocess.py

import cv2
import numpy as np

def preprocess_image(input_path, output_path):
image = cv2.imread(input_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)# 去除噪声
denoised = cv2.medianBlur(thresh, 3)# 形态学操作(可选)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
morph = cv2.morphologyEx(denoised, cv2.MORPH_CLOSE, kernel)# 反色(适配Tesseract默认识别)
result = cv2.bitwise_not(morph)cv2.imwrite(output_path, result)

六、识别主程序 recognize.py

from PIL import Image
import pytesseract
from preprocess import preprocess_image

可选:指定Tesseract路径(Windows用户)

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def recognize_captcha(image_path):
processed_path = 'processed.png'
preprocess_image(image_path, processed_path)

image = Image.open(processed_path)
text = pytesseract.image_to_string(image, config='--psm 8 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')return text.strip()

if name == "main":
result = recognize_captcha('test_images/test1.png')
print("识别结果:", result)
七、运行效果

python recognize.py
输出示例:

识别结果: H5K9

http://www.wuyegushi.com/news/821.html

相关文章:

  • 一些未来的思考
  • 学习之道 反思 记忆
  • Reference
  • 学习之道 反思 自信
  • 博弈论 冯 诺伊曼
  • Moq 的使用
  • InnoDB架构
  • 离线安装node.js node-red,及设置为服务注意事项
  • 北航操作系统上机实验使用vscode指南
  • Go 实现图像预处理 + OCR 的验证码识别流程
  • 7.27随笔
  • 实现图像预处理 + OCR 的验证码识别流程
  • 当 think 遇上 tool:深入解析 Agent 的规划之道
  • nonono
  • 2025.7.27学习日记
  • PG系列:PG数据库中分析操作系统IO是否正常
  • 【音频硬件相关】喇叭的阻值——了解阻抗:万用表测喇叭,测的是什么?
  • 【音频硬件相关】常见的模拟输出的硅麦
  • 免费SANS网络研讨会:IOC优先级评估与事件响应决策
  • 使用Amazon Bedrock和Amazon Transcribe构建AI驱动的自动化会议摘要系统
  • 【音频硬件相关】喇叭上的阻值和功率
  • 十木轻创:卖虚拟资料哪个平台好?小红书做这 5 个小项目,宝妈网上也能创业
  • 第二十二天
  • 十木轻创:有人偷偷挣了5.7个!干货全在这里。如何靠手机壁纸创收
  • 熔断降级(Go语言实现)
  • Vue + Node.js 全栈开发实战:构建现代化前端应用
  • Go语言的plugin
  • PandasAI连接LLM进行智能数据分析
  • 子序列中任意两个相邻元素的差值不超过 k的子序列个数
  • 低精度算术提升机器人定位效率 - 亚马逊科学团队技术创新