使用 Python 和 Tesseract OCR 识别验证码


1. 安装 Tesseract 和相关依赖
首先,你需要安装 Tesseract OCR 和相关 Python 包。可以通过以下步骤完成安装:

安装 Tesseract
在 Windows 上,你可以从 Tesseract 官方 GitHub 下载 Tesseract 安装包并按照说明进行安装。

安装完成后,确保将 Tesseract 的安装路径添加到系统的环境变量中。例如,安装路径可能类似于 C:\Program Files\Tesseract-OCR\tesseract.exe。

安装 Python 依赖
接下来,你需要安装 Python 库 pytesseract 和 Pillow。你可以使用 pip 安装这些包:

bash
更多内容访问ttocr.com或联系1436423940
pip install pytesseract Pillow
2. 编写 Python 代码
接下来,编写代码来加载验证码图片并使用 Tesseract 进行 OCR 识别。

python

import pytesseract
from PIL import Image
import cv2
import numpy as np

# 设置 Tesseract 的路径,如果你已经将其加入环境变量则不需要设置
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def preprocess_image(image_path):
    # 使用 OpenCV 进行一些图像预处理(如灰度化和二值化)
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转为灰度图
    _, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY)  # 二值化处理
    return binary

def recognize_captcha(image_path):
    # 预处理图像
    processed_image = preprocess_image(image_path)
    
    # 将处理后的图像保存为临时文件
    temp_image_path = "processed_captcha.png"
    cv2.imwrite(temp_image_path, processed_image)

    # 使用 Tesseract 进行 OCR 识别
    text = pytesseract.image_to_string(Image.open(temp_image_path))
    
    return text.strip()

if __name__ == '__main__':
    # 输入验证码图像路径
    captcha_image_path = 'captcha_image.png'
    
    # 识别验证码
    captcha_text = recognize_captcha(captcha_image_path)
    
    print("识别的验证码是:", captcha_text)
3. 代码解释
Tesseract 设置:如果你没有将 Tesseract 路径添加到环境变量中,可以通过设置 pytesseract.pytesseract.tesseract_cmd 来指定 Tesseract 的安装路径。例如:

python

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
图像预处理:验证码的图像预处理是提高 OCR 识别准确率的关键步骤。这里我们使用 OpenCV 将图像转为灰度图并进行二值化处理。

灰度化:将彩色图像转换为灰度图像,减少信息量,集中精力处理文字部分。
二值化:将灰度图转换为黑白图像,使文字与背景更清晰,从而提高 OCR 的准确度。
Tesseract 识别:使用 pytesseract.image_to_string() 对图像进行 OCR 识别,返回识别的文本。

处理流程:

读取图像文件。
预处理图像(灰度化和二值化)。
使用 Tesseract OCR 识别验证码文字。
4. 运行程序
确保你已经安装了 Tesseract 和 Python 依赖包,并且准备好验证码图片(例如 captcha_image.png)。运行 Python 程序时,你会在控制台中看到识别的验证码内容。

makefile

识别的验证码是: 3g6h9
5. 改进和优化
更复杂的验证码:对于更复杂的验证码(如有干扰线、噪声等),可能需要更复杂的图像预处理步骤,比如去噪、形态学操作、边缘检测等。

图像增强:你可以使用 OpenCV 中的其他功能对验证码进行进一步的处理,例如:

轮廓检测:去除图像中的干扰元素。
自适应阈值:处理不均匀光照的图像。
多语言支持:Tesseract 支持多语言,你可以下载并使用其他语言的训练数据来识别不同语言的验证码。

6. 使用 Tesseract 训练数据
如果你的验证码是非英文字符集的(如中文、日文等),你需要使用适当的语言训练数据。

下载训练数据:Tesseract 数据下载链接
将训练数据文件(例如 chi_sim.traineddata)放置在 tessdata 目录下。
设置语言参数来加载其他语言:
python

text = pytesseract.image_to_string(Image.open(temp_image_path), lang='chi_sim')  # 使用中文简体训练数据
 

你可能感兴趣的:(python,ocr,开发语言)