识别英文数字验证码的程序(Python示例)

news/2024/11/30 12:52:04/文章来源:https://www.cnblogs.com/ocr12/p/18578299

在本篇文章中,我们将使用 Python 来实现一个 英文数字验证码识别 的程序。我们会使用 Tesseract OCR(Optical Character Recognition,光学字符识别)来识别验证码中的文本内容。

  1. 环境准备
    首先,需要安装以下 Python 库:

Pillow:用于图像处理。
pytesseract:Tesseract 的 Python 包,用于文本识别。
Tesseract OCR:一个开源的 OCR 引擎。
安装 Python 库:

bash

pip install Pillow pytesseract
同时,您需要安装 Tesseract OCR 引擎。可以从 Tesseract GitHub页面 下载并安装,或者使用包管理工具安装:

Windows:下载并安装 tesseract-ocr-w32-x64.exe。
Linux:可以使用以下命令安装:
bash

sudo apt-get install tesseract-ocr
MacOS:可以通过 Homebrew 安装:
bash
brew install tesseract
2. 验证码识别程序
创建一个 Python 脚本 captcha_recognition.py,并将以下代码写入其中:

python

import pytesseract
from PIL import Image
import matplotlib.pyplot as plt

设置 Tesseract 可执行文件路径(仅在 Windows 上需要)

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

读取验证码图像

image = Image.open('captcha_image.png')

显示原始图像

plt.imshow(image)
plt.axis('off') # 不显示坐标轴
plt.show()

进行 OCR 识别

captcha_text = pytesseract.image_to_string(image, config='--psm 6')

输出识别的验证码内容

print(f"识别的验证码是:{captcha_text.strip()}")
3. 代码解析
图像加载:使用 PIL 库的 Image.open() 方法加载验证码图像。
OCR 识别:使用 pytesseract.image_to_string() 方法来识别图像中的文本。config='--psm 6' 配置告诉 Tesseract 我们预计图像包含的是一行文本(即验证码的常见格式)。
可视化:用 matplotlib.pyplot 库显示原始图像,方便查看输入的验证码图像。
4. 如何运行
将验证码图像保存为 captcha_image.png(您可以使用任何实际的验证码图像)。

运行 Python 脚本:

bash

python captcha_recognition.py
程序将会显示验证码图像,并输出识别的验证码内容。

  1. 样例图像及输出
    假设输入的验证码图像如下:

captcha_image.png:

(这里您可以将任何实际验证码图像替换)

运行后的输出会类似于:

识别的验证码是:4k3d7
6. 改进方案
图像预处理:如果验证码图像包含噪声或干扰,您可以使用 Pillow 库来进行图像预处理,例如二值化、去噪等,增强识别率。

示例:更多内容访问ttocr.com或联系1436423940

转为灰度图

gray_image = image.convert('L')

二值化处理

bw_image = gray_image.point(lambda x: 0 if x < 128 else 255, '1')
调整 Tesseract 配置:Tesseract 提供了许多配置选项,可以根据验证码的具体情况进行优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844112.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net mvc视图传递数据至另一页的视图

由于简篇,C# mvc +axios + web api + javascript 这里只是简单一笔带过。如果操作,看如下截图 可以写一个javascript函数, 具体如何传,代码如何写?参考博文前链接内的DetailButton_EventListener(data)函数的写法。 把数据传至MVC 的控制器中,让控制器来处理。 在此数据处…

AI让照片跳舞,人人都能是舞王!Swan下载介绍

最近,兵马俑、马斯克以及各地网友跳科目三和网红舞的视频陆续在社交媒体和朋友圈刷屏,这些大约10秒左右的视频都不是真人出镜,均由大模型生成,这种低门槛的跳舞方式引发了网友的广泛体验,掀起了一波斗舞狂潮「AI治愈了我的四肢不协调」Swan是一款使用扩散模型实现的时域一…

D触发器

一、D触发器原理D触发器(data flip-flop)也称为维持-阻塞边沿D触发器,由六个与非门组成,其电路图及其逻辑符号如下图所示。其中G1和G2构成基本的RS触发器,G3和G4构成时钟控制电路,G5和G6组成数据输入电路。 二、D触发器原理- -钟控D触发器在分析维持-阻塞边沿D触发器的工作…

idea 2024.2切换到旧版的UI

安装官方的 Classic UI 插件。 步骤:File -> Settings -> Plugins ,搜索 Classic UI 安装即可。

基于Ubuntu2410搭建openstack-D版

@目录初始化环境安装数据库、memcahe、rabbitmq等服务安装keystone服务安装glance服务安装placement服务安装nova服务安装neutron服务安装horizon服务启动云主机 本次实验使用单节点搭建,Ubuntu2410系统:搭建openstack-D版,采用ovs网络组件,最终创建云主机,并实现远程连接…

快速安装 Qt 的各种方法

1 在 Windows 下快速安装 Qt 由于QT的服务器在国外,而国内通国外的网络往往不够流畅,因此在下载QT时我们经常会出现下载中断的问题。一个好的解决办法是在安装程序时替换下载源,下面我以中科大源为例子,替换QT的下载源。 1.1 下载 Qt 安装器 首先点击 download-open-source…

Typora配置导出word

下载“pandoc”,解压文件,配置路径即可。下载连接: 阿里云盘 https://www.alipan.com/s/YDaia5u8MRs 提取码: 67ur

从Delphi到Lazarus——Lazarus开发环境使用入门教程

0.前言 曾经有过更换开发环境体验的编程爱好者都会有同样的感受:打开新更换的开发环境后,看到陌生的界面无从下手。想写一段小程序试一试,却你找不到自己需要的组件在哪里。 其实,我们每到一个新地方,首先要找点资料熟悉周围的环境。编写程序也是这样,使用一个新的开发环…

CV总结之边缘检测

边缘检测 常见算子 边缘检测是图像处理和计算机视觉中的一个基本任务,目的是识别图像中物体的边界。边缘是图像中亮度变化显著的区域,通常标志着物体、表面或形状的边界。边缘检测对于后续的图像分析任务,如特征提取、目标识别和图像分割等,都是非常重要的。 常见边缘检测算…

C# mvc +axios + web api + javascript

2024年,是Insus.NET生命中转折的一年,许久没有更新博客了。许多网友在通讯或邮件私聊,希望在博客上更新内容,分享一些技能与通用的博文。回归正题,在C# mvc使用javascript axios访问web api。 在ms sql server创建数据表 存储过程... C# MVC程序与数据库交互,创建entit…

cron: 如何使用Cron表达式配置定时任务

Cron表达式用于设置定时任务,无论是在Linux的Crontab中,还是在各种语言开发的程序中都有应用,它提供了一种强大而灵活的方法来设定定时任务。 Cron表达式语法 Cron表达式是一种字符串格式,标准的Cron表达式是由五部分组成,分别表示,分钟、小时、日期、月份和星期几。这个…

[C++][MSVC][Error] 检测到 RuntimeLibrary 的不匹配项: 值 MT_StaticRelease 不匹配值 MD_DynamicRelease

1 简介 本文将介绍在 C++ 编程中使用 MSVC 编译器时可能遇到的错误:检测到 RuntimeLibrary 的不匹配项:值 MT_StaticRelease 不匹配值 MD_DynamicRelease。该错误通常是由于编译器和链接器之间的设置不一致引起的。 2 VisualStudio环境 在 MSVC 工程上右键->属性,找到配置…