使用Python和Tesseract实现验证码识别功能!

发布时间:2025-08-26 16:57

使用Python和Tesseract实现验证码识别功能!

验证码识别是一个常见且实用的技术需求,尤其是在自动化测试和数据采集场景中,通过开源 OCR工具 Tesseract,结合 Python 的强大生态,我们可以高效实现验证码识别任务,本篇博客将以详细步骤和代码示例,介绍如何使用 Python 和 Tesseract 实现验证码识别。

一、验证码识别的背景与难点

1.1 什么是验证码?

验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种区分用户是人类还是计算机程序的技术。常见的验证码类型包括:

文本验证码:图片中包含扭曲或噪声干扰的字符。 图片验证码:用户需要选择特定内容的图片。 行为验证码:要求用户拖动滑块或完成特定任务。

1.2 验证码识别的应用场景

自动化测试:绕过验证码验证,以便进行完整的自动化测试。 数据采集:识别网页中的验证码,自动登录或提交表单。 辅助功能:为视障用户提供验证码读取功能。

1.3 验证码识别的挑战

图像噪声:许多验证码包含背景噪声、干扰线条或色块。 字符扭曲:为了增加识别难度,字符通常被扭曲或旋转。 字符连体:字符之间的分隔不明确,需要精确分割。

二、Tesseract 简介

Tesseract 是一个由 Google 维护的开源 OCR 引擎,支持多种语言和字符识别。它可以通过 Python 的 pytesseract 库调用,轻松实现文字识别功能。

2.1 Tesseract 的主要特点

多语言支持:Tesseract 支持超过 100 种语言。 易于扩展:支持自定义训练,适应特定场景的需求。 开源免费:无需授权费用,适用于商业项目。

2.2 Tesseract 的核心流程

图像预处理:将图像转化为适合 OCR 的格式。 文字区域检测:识别图像中的文字区域。 字符识别:将文字区域的像素转换为字符。 输出文本:生成最终的文字结果。

三、环境准备

在开始编码之前,需要完成以下环境的配置。

3.1 安装 Tesseract

1. Linux

1

2

3

sudo apt update

sudo apt install tesseract-ocr

sudo apt install libtesseract-dev

2. macOS

通过 Homebrew 安装:

1

brew install tesseract

3. Windows

从 Tesseract 官方 GitHub 下载 Windows 安装包,并配置环境变量。

3.2 安装 Python 库

安装 pytesseract 和图像处理相关库:

1

pip install pytesseract pillow opencv-python

四、验证码识别的实现

4.1 读取并显示图片

我们将使用 Pillow 和 OpenCV 库来加载和显示验证码图片。

1

2

3

4

5

6

7

8

9

10

11

from PIL import Image

import cv2

image_path = "captcha.png"

image = cv2.imread(image_path)

cv2.imshow("Captcha", image)

cv2.waitKey(0)

cv2.destroyAllWindows()

4.2 图像预处理

为了提高识别率,我们需要对验证码图片进行预处理,包括灰度化、二值化和噪声去除。

1. 转灰度图像

灰度化将彩色 图片转换为黑白图片,简化处理。

1

2

3

4

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cv2.imshow("Gray Image", gray)

cv2.waitKey(0)

cv2.destroyAllWindows()

2. 二值化

二值化通过阈值将图片转换为黑白两色,突出文字部分。

1

2

3

4

_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

cv2.imshow("Binary Image", binary)

cv2.waitKey(0)

cv2.destroyAllWindows()

3. 去噪声

使用形态学操作(如开运算)去除图片中的干扰点。

1

2

3

4

5

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

denoised = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)

cv2.imshow("Denoised Image", denoised)

cv2.waitKey(0)

cv2.destroyAllWindows()

4.3 调用 Tesseract 进行识别

使用 pytesseract 调用 Tesseract 识别处理后的验证码图片。

1

2

3

4

5

6

7

8

9

import pytesseract

from PIL import Image

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

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

print(f"识别结果: {text}")

五、优化识别效果

5.1 调整 Tesseract 参数

通过修改 Tesseract 的 --psm 参数,可以改变文字布局分析模式,例如:

--psm 6:假设为一个块的文字。 --psm 7:将图像作为一行文字处理。

5.2 设置白名单字符

如果验证码的字符范围已知,可以设置白名单,提高识别准确率。

1

2

3

custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz'

text = pytesseract.image_to_string("processed_captcha.png", config=custom_config)

print(f"识别结果: {text}")

5.3 自定义训练模型

如果验证码的字符样式特殊,可以通过 Tesseract 的训练工具定制模型,以提升识别率。

六、完整代码示例

以下是整合图像预处理和验证码识别的完整代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

import cv2

import pytesseract

image_path = "captcha.png"

image = cv2.imread(image_path)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

denoised = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)

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

custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyz'

text = pytesseract.image_to_string("processed_captcha.png", config=custom_config)

print(f"识别结果: {text}")

cv2.imshow("Processed Image", denoised)

cv2.waitKey(0)

cv2.destroyAllWindows()

七、总结

通过本文的介绍,我们学习了如何使用 Python 和 Tesseract 实现验证码识别,并通过图像预处理和参数优化提高识别率。在实际项目中,结合深度学习模型可以进一步提升复杂验证码的识别效果。

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

Excelbook.cn Excel技巧 SQL技巧 Python 学习!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。


THE END

二维码

网址:使用Python和Tesseract实现验证码识别功能! https://mxgxt.com/news/view/1715668

相关内容

使用Python和Tesseract实现验证码识别功能!
神器!使用Python 轻松识别验证码
Python OCR库:自动化测试验证码识别神器!
使用Python实现数据可视化的魅力与应用
手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...
使用Python绘制混淆矩阵热力图
八爪鱼与python结合使用
Python 如何使用Python可视化社交网络
Python编码规范(PEP 8)
pep8 python 编码规范 中文版

随便看看