首页 > 编程语言 >Python 和 pytesseract 实现验证码识别

Python 和 pytesseract 实现验证码识别

时间:2025-01-23 18:31:39浏览次数:1  
标签:Python image 验证码 captcha pytesseract 图像 path 识别

验证码识别是一个常见的自动化需求,广泛应用于数据抓取、自动登录等场景。本文将介绍如何使用 Python 和 pytesseract(一种 Tesseract OCR 的封装库)实现英文数字验证码的自动化识别。

  1. 环境准备
    安装 Tesseract OCR
    Tesseract 是一个开源的光学字符识别(OCR)引擎,可识别多种语言和字符。首先,需要在系统中安装 Tesseract:

Windows 用户:从 Tesseract 官方 GitHub 下载并安装。
Linux 用户:运行以下命令安装:
bash
更多内容访问ttocr.com或联系1436423940
sudo apt install tesseract-ocr
macOS 用户:通过 Homebrew 安装:
bash

brew install tesseract
安装完成后,在终端中运行以下命令,验证安装是否成功:

bash

tesseract --version
安装 Python 和所需库
确保系统中已安装 Python(推荐版本 3.7 或以上)。然后安装必要的依赖库:

bash

pip install pytesseract pillow
2. 编写验证码识别代码
以下是完整的 Python 代码示例,用于加载验证码图像并识别其内容:

python

from PIL import Image
import pytesseract

设置 Tesseract 的路径(如果需要)

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

def recognize_captcha(image_path):
try:
# 打开图像
img = Image.open(image_path)

    # 使用 Tesseract OCR 识别文字
    text = pytesseract.image_to_string(img, lang='eng')
    
    return text.strip()
except Exception as e:
    return f"识别失败: {e}"

验证码图像路径

captcha_image = "captcha.png"

执行识别

result = recognize_captcha(captcha_image)
print(f"识别的验证码是: {result}")
3. 图像预处理
为了提高识别准确率,可以在调用 OCR 前对图像进行处理,例如灰度化、二值化或降噪。以下代码演示了如何使用 Pillow 库进行图像预处理:

灰度化和二值化
python

from PIL import Image

def preprocess_image(input_path, output_path):
# 打开图像
img = Image.open(input_path)

# 转换为灰度图像
gray = img.convert('L')

# 二值化(设定阈值为128)
binary = gray.point(lambda x: 0 if x < 128 else 255, '1')

# 保存处理后的图像
binary.save(output_path)

原始图像路径和处理后图像路径

input_image = "captcha.png"
processed_image = "processed_captcha.png"

preprocess_image(input_image, processed_image)
print(f"图像预处理完成,保存为 {processed_image}")
将预处理后的图像传递给 OCR 识别函数:

python

result = recognize_captcha(processed_image)
print(f"识别的验证码是: {result}")
4. 优化识别效果
调整 OCR 参数

可以通过设置 Tesseract 的 config 参数来优化识别。例如,只识别数字和字母:
python

text = pytesseract.image_to_string(img, config='--psm 6 -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
降噪处理

对于噪点较多的验证码图像,可以尝试使用滤波器去除噪点,例如:
python

from PIL import ImageFilter

def denoise_image(image_path, output_path):
img = Image.open(image_path)
filtered_img = img.filter(ImageFilter.MedianFilter(size=3))
filtered_img.save(output_path)

denoise_image("captcha.png", "denoised_captcha.png")
自定义训练

如果验证码字体特殊,可以为 Tesseract 创建自定义的训练数据,从而显著提高识别准确率。
5. 运行代码
将上述代码保存为 captcha_recognition.py,并将验证码图像保存为 captcha.png。在终端运行以下命令:

bash

python captcha_recognition.py
程序会加载图像,进行预处理并识别,输出类似以下的结果:

makefile

识别的验证码是: A12B3C

标签:Python,image,验证码,captcha,pytesseract,图像,path,识别
From: https://www.cnblogs.com/ocr12/p/18688477

相关文章

  • 用Python和Pygame打造绚丽烟花效果
    用Python和Pygame打造绚丽烟花效果摘要一年一度的春节即将到来,为了渲染节日气氛,绚丽的烟花表演是必不可少的。本文介绍了一款基于Python和Pygame库实现的烟花效果程序。该程序通过模拟烟花的发射、爆炸和粒子轨迹,结合动态文本显示,营造出逼真的烟花表演效果。文章详细解析......
  • 使用 PHP 和 Tesseract OCR 实现验证码识别
    验证码是一种常见的验证手段,用于区分用户和自动化程序。通过OCR(光学字符识别)技术,我们可以实现对验证码的自动化识别。在本文中,我们将使用PHP和TesseractOCR引擎构建一个验证码识别程序。环境准备安装TesseractOCR引擎首先,你需要安装TesseractOCR引擎,这是实现光学......
  • 2025最新Python安装教程,PyCharm安装授权教程【附安装包】
    Python安装1、打开Python官网下载安装包:WelcometoPython.org注意:由于官网下载速度较慢,我这边将官网下载的安装包提前打包成了压缩文件,需要的同学可以直接点击这里免下载!2、下载完成后打开安装包: 3、按照下图,先勾选最下方两个配置选项,然后选择上方的自定义安装4、这......
  • 『Python底层原理』--CPython 虚拟机
    在Python编程的世界里,我们每天都在使用python命令运行程序,但你是否曾好奇这背后究竟发生了什么?本文将初步探究CPython(Python中最流行的实现)的一些内部机制,为了更好的来理解Python语言的底层运作。1.CPython简介CPython是用**C语言**编写的Python解释器,在众多Py......
  • pycharm导入Python解释器错误解决
     1.Pycharm中显示PleaseselectavalidPythonInterpreterhttps://blog.csdn.net/hou09tian/article/details/120900335 _________________________________________________________________________________________________________________ 1、新建环境出现问题的......
  • python flask中使用or查询和and查询,还有同时使用or、and的情况
    在Flask中处理数据库查询时,通常会结合使用ORM工具,例如SQLAlchemy。以下是or查询、and查询以及两者同时使用的示例。文章目录基础准备1.使用or_查询2.使用and_查询3.同时使用or_和and_4.更加复杂的嵌套查询基础准备假设有一个模型User,定义......
  • 基于Python和uiautomation的Windows桌面自动化操作方案
    基于Python和uiautomation的Windows桌面自动化操作方案在日常开发和测试过程中,我们经常需要对Windows桌面应用程序进行自动化操作。本文将记录如何使用uiautomation库来实现这些操作,同时为了避免对主机的正常使用造成干扰,借助VMwareWorkstation虚拟机环境进行操作,并结合实际案例......
  • Python 融合豆包 AI 优化测试用例生成
    在软件开发过程中,测试用例的编写是确保软件质量的关键环节。传统的测试用例编写往往依赖人工经验,不仅耗时费力,还容易出现遗漏。随着人工智能技术的发展,利用AI来辅助生成测试用例成为了提高效率和质量的有效途径。本文将介绍如何使用Python与豆包AI融合,实现测试用例的......
  • 从零开始的Python之旅—Day2—语法特点和变量
    Day2—语法特点和变量目录Day2—语法特点和变量Python语法特点注释规则代码缩进编码规范变量保留字和标识符保留字标识符变量变量命名规则变量赋值常量Python语法特点注释规则1.单行注释:#之后的都被注释掉直到换行#注释内容以下两种注释都是正确的#输入身高,单位为......
  • Python中防止因外部调用导致程序崩馈
    使用 try 和 catch 只能处理Python中的一部分异常;但如果异常是由于外部程序(如 ffmpeg)调用时产生的,那么这种异常很可能会直接导致程序崩溃,不给你使用 try 和 catch 处理异常的机会。一个解决办法是用multiprocessing另起一个子进程来运行相关的代码。如果程序崩溃,也只......