用 Python 和 Tesseract OCR 实现验证码识别(附完整图像预处理流程)
验证码识别是自动化测试和数据爬取中常见的任务之一。本篇文章将带你一步步构建一个验证码识别工具,使用 Python 搭配 Tesseract OCR 引擎,配合图像预处理技术提高识别准确率。
一、技术选型
语言:Python 3.x
OCR 引擎:Tesseract(Google 出品,免费开源)
图像处理:OpenCV(处理灰度、二值化、降噪等)
更多内容访问ttocr.com或联系1436423940
安装依赖
确保你的环境中安装以下内容:
pip install pytesseract opencv-python pillow numpy
另外,Tesseract OCR 引擎本体必须安装,且路径正确配置。安装地址:
Windows:https://github.com/tesseract-ocr/tesseract
Linux(如 Ubuntu):sudo apt install tesseract-ocr
配置 Tesseract 路径(Windows 用户):
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
二、完整识别流程代码
保存为 captcha_tesseract.py:
import cv2
import pytesseract
import numpy as np
设置 Tesseract 路径(Windows 用户需要)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
图像预处理函数
def preprocess_image(image_path):
image = cv2.imread(image_path)
# 转灰度 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 二值化(大津算法) _, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # 膨胀腐蚀处理(可选) kernel = np.ones((2, 2), np.uint8) processed = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) cv2.imwrite("processed.png", processed) return processed
OCR识别函数
def recognize_text(image):
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
text = pytesseract.image_to_string(image, config=custom_config)
return text.strip()
if name == "main":
image_path = "captcha.png"
processed_image = preprocess_image(image_path)
result = recognize_text(processed_image)
print("识别结果:", result)
三、关键步骤讲解
灰度处理
将 RGB 图像转换为单通道灰度图,便于后续二值化处理。
大津阈值法
自动选择最佳阈值,将灰度图像转换为黑白图像,强调文字区域。
图像形态学处理
适当的膨胀、腐蚀操作有助于消除背景噪点或连接断裂字符。
Tesseract 参数说明
--oem 3:使用 LSTM OCR 引擎
--psm 7:单行文字识别,适合验证码
tessedit_char_whitelist:限制字符集,提高准确性
四、示例识别效果
假设你有如下验证码图像:
图片名称:captcha.png
内容示例:W5RXK
运行程序后输出:
识别结果: W5RXK
五、进一步优化建议
字符分割处理:若字符粘连严重,可借助轮廓检测提取每个字符。
验证码数据增强:模拟多种样式、字体和噪声,训练专用模型(如 CNN)。
替代引擎:Tesseract 不适合高干扰验证码,可考虑 EasyOCR、CRNN、PaddleOCR 等。
API 化:使用 Flask/Django 封装为接口,供网页或爬虫调用。
网址:用 Python 和 Tesseract OCR 实现验证码识别(附完整图像预处理流程) https://m.mxgxt.com/news/view/1715670
相关内容
使用Python和Tesseract实现验证码识别功能!Python OCR库:自动化测试验证码识别神器!
神器!使用Python 轻松识别验证码
手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【明星自动大变脸】最新StarGAN对抗生成网络实现多领域图像变换(附代码)
Python实现Taylor Swift风格音乐试听应用:编程与音乐的完美结合
使用Python绘制混淆矩阵热力图
【程序员的吃鸡大法】利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
怎么用python实现粉丝地域分布热力图