首页 > 编程语言 >用 Python 实现验证码文本识别

用 Python 实现验证码文本识别

时间:2025-01-16 18:32:33浏览次数:1  
标签:Tesseract OCR Python image cv2 验证码 图像 文本

在本文中,我们将使用 Python 和 Tesseract OCR 引擎,编写一个程序来识别英文数字验证码的内容。通过图像处理技术和光学字符识别(OCR),我们可以快速提取验证码中的文本。

  1. 环境准备
    安装 Python 和依赖库
    确保已安装 Python。如果尚未安装,可以访问 Python 官网进行下载和安装。接着,我们需要安装以下依赖库:

pytesseract:Python 的 Tesseract OCR 接口。
Pillow:用于加载和处理图像。
opencv-python:用于图像预处理和分析。
通过以下命令安装这些依赖:

bash

pip install pytesseract pillow opencv-python
安装 Tesseract OCR
系统中还需要安装 Tesseract OCR 引擎。如果尚未安装,可以访问 Tesseract 官网获取安装方法,或者使用以下命令安装:

在 Linux 上:
bash

sudo apt install tesseract-ocr
在 macOS 上(通过 Homebrew):
bash

brew install tesseract
在 Windows 上:直接从 Tesseract 下载页面下载安装包并完成安装。
确保安装完成后可以通过以下命令验证:

bash

tesseract --version
2. 编写验证码识别程序
下面是一个完整的 Python 示例程序,用于识别验证码中的英文数字:

python

import pytesseract
from PIL import Image, ImageOps
import cv2

设置 Tesseract 的路径(Windows 用户需要指定安装路径)

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

1. 读取验证码图像

image_path = "captcha.png"
image = Image.open(image_path)

2. 转为灰度图像,减少颜色干扰

gray_image = ImageOps.grayscale(image)

3. 图像预处理(可选,增加识别率)

将灰度图转换为二值化图像

gray_cv_image = cv2.cvtColor(cv2.imread(image_path), cv2.COLOR_BGR2GRAY)
_, binary_image = cv2.threshold(gray_cv_image, 128, 255, cv2.THRESH_BINARY)

保存处理后的图像(可用于调试)

cv2.imwrite("processed_captcha.png", binary_image)

4. 使用 Tesseract OCR 识别文本

text = pytesseract.image_to_string(binary_image, config="--psm 6")

输出识别结果

print(f"识别的验证码是: {text}")
3. 关键步骤解析
图像加载与处理
使用 Pillow 加载图像并将其转换为灰度图,可以减少颜色干扰,使文本特征更加突出。
通过 OpenCV 的 cv2.threshold 函数,将图像二值化以去除背景杂质,从而提高识别准确性。
OCR 配置
pytesseract.image_to_string 方法用于从图像中提取文本。
--psm 参数(页面分割模式)影响识别方式:
6 表示按单行模式识别(适用于验证码)。
4. 运行程序更多内容访问ttocr.com或联系1436423940
将上述代码保存为 captcha_recognition.py 文件,并确保目标验证码图片(如 captcha.png)与程序在同一目录下。然后运行程序:

bash

python captcha_recognition.py
程序会加载图像、进行处理,并使用 Tesseract 识别出验证码文本。

  1. 示例输入与输出
    输入:
    原始验证码图像 captcha.png

输出:
识别的验证码是:ABC123

标签:Tesseract,OCR,Python,image,cv2,验证码,图像,文本
From: https://www.cnblogs.com/ocr12/p/18675574

相关文章

  • Python九九乘法表(for循环和while循环)
    运行结果样例:for循环:foriinrange(1,10):forjinrange(1,i+1):print(f"{i}*{j}={i*j}\t",end='')print()具体解释如下:这是一个嵌套的 for 循环。对于 i 的每一个值,都有一个新的 for 循环。range(1,i+1) 创建了一个新的整数序列,该序列从1......
  • 使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级
    一、API的选择我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、查)。尤其对于我你们学习接口测试的初学开发者来说,它......
  • 尝试用GO给python写共享库
    背景就突发奇想,Go的效率相对来说高一些,那我们可不可以用Go来给python写关键处理库呢查了下,还真可以实现,只是障碍比较多,而且使用起来也比较麻烦,但是也还是能实现的解决用Go编写Python库可以通过Cgo或C共享库的方式实现。Go代码可以被编译为C兼容的共享库(.so或.dl......
  • Python时间序列分析:使用TSFresh进行自动化特征提取
    TSFresh(基于可扩展假设检验的时间序列特征提取)是一个专门用于时间序列数据特征自动提取的框架。该框架提取的特征可直接应用于分类、回归和异常检测等机器学习任务。TSFresh通过自动化特征工程流程,显著提升了时间序列分析的效率。自动化特征提取过程涉及处理数百个统计特征,包括均......
  • SQL中的。和python中的。的区别。让你彻底明白 。
    SELECTsale_order.name,SUM(sale_order_line.price_total)astotal_amountFROMsale_orderJOINsale_order_lineASsale_order_lineONsale_order.id=sale_order_line.order_idGROUPBYsale_order.id像上面的语句中,sale_order.name为什么这个可以.name能像python那......
  • 面向对象分析与设计Python版 控制器与多态原则
    文章目录一、控制器原则二、多态原则一、控制器原则控制器原则名称:控制器Controller应用场景:确定谁负责接收、处理和分发系统的输入事件。解决方案:系统输入事件处理的职责分给控制器对象一个控制器对象实现业务系统的所有输入事件处理和业务逻辑分发,这一类控制器......
  • 开发人员学习书籍推荐(C#、Python方向)
    作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典的书籍,涵盖了C#、数据库、前端开发等多个领域,帮助你......
  • 【深度学习教程】Python 如何用 LSTM 做情感分析?小白也能上手!
    【深度学习教程】如何用LSTM做情感分析?小白也能上手!Hello大家好,今天我们来聊一个超热门的话题——LSTM网络在情感分析中的应用!想象一下,通过深度学习,你的代码可以读懂人类情绪,知道“我爱你”和“我讨厌你”的区别,是不是很酷?今天这篇文章,我会手把手教你从零开始,用Python和Ke......
  • Python生成成绩报告单:从理论到实践
    在教育信息化日益普及的今天,自动化生成和处理学生成绩报告单已成为学校和教育机构的一项重要任务。Python作为一种功能强大且易于学习的编程语言,非常适合用于这种数据处理和报告生成任务。本文将详细介绍如何使用Python生成成绩报告单,包括理论概述和完整的代码示例。一、理论概述......
  • 【python入门】2.安装搭建python环境
    1.安装python解析器1.1为什么要装python解析器?python属于高级语言,计算机并不认识我们需要用解析器,将python文件,经过python解析器翻译成,计算机能够识别的机器语言1.2如何安装下载地址:PythonReleasePython3.7.9|Python.org检验安装完成在cmd中输入python,若出......