Python中如何进行验证码识别求助?

目前需要识别一个 6 位数字+大写字母的验证码, 只有 CPU 环境, 请问大佬们有没有推荐好用的文章或者代码, 自备标记好的数据, 但是网上找的代码跑了一周了, 还是 0.6%左右晃悠。
Python中如何进行验证码识别求助?

8 回复
import pytesseract
from PIL import Image
import cv2
import numpy as np

def preprocess_image(image_path):
    """预处理图像:灰度化、二值化、去噪"""
    # 读取图像
    img = cv2.imread(image_path)
    
    # 转为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 二值化处理
    _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)
    
    # 去噪(中值滤波)
    denoised = cv2.medianBlur(thresh, 3)
    
    return denoised

def recognize_captcha(image_path):
    """识别验证码主函数"""
    # 预处理图像
    processed_img = preprocess_image(image_path)
    
    # 使用pytesseract识别
    config = '--psm 8 --oem 3 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    text = pytesseract.image_to_string(processed_img, config=config)
    
    return text.strip()

# 使用示例
if __name__ == "__main__":
    result = recognize_captcha("captcha.png")
    print(f"识别结果: {result}")

核心步骤:

  1. 图像预处理:灰度化、二值化、去噪是关键,能显著提升识别率
  2. OCR引擎:Tesseract是主流选择,通过--psm--oem参数调整识别模式
  3. 字符白名单:用tessedit_char_whitelist限定字符集减少误识别

简单方案:

  • 简单验证码用pytesseract直接识别
  • 复杂验证码需要CNN训练(用tensorflowpytorch

一句话建议: 预处理做得好,识别没烦恼。

上图,没有通用的代码

楼主发几张验证码的图看看

难点在于图像处理,而不在于神经网络。
图像处理一般可用 opencv-python pillow。

已经对图片进行预处理, 干扰线只能去掉一部分, 不过应该不会有太大的干扰。

楼主也可以把样本发给我试试,正好周末比较空~

回到顶部