首页 > 编程语言 >Python 和 Tesseract OCR 识别复杂验证码

Python 和 Tesseract OCR 识别复杂验证码

时间:2025-01-13 22:44:46浏览次数:1  
标签:Tesseract Python image cv2 captcha 图像 path OCR

  1. 安装依赖
    首先,确保已安装所需的工具和库。

安装 Tesseract
在 Windows 上,下载安装包并进行安装:Tesseract GitHub。
在 Linux 上,你可以通过以下命令安装:

bash

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

sudo apt-get install tesseract-ocr

安装 Python 库
使用 pip 安装 Python 库:

bash

pip install pytesseract Pillow opencv-python numpy

  1. 编写 Python 代码

python

import pytesseract from PIL import Image import cv2 import numpy as np # 设置 Tesseract 路径(如果在 Windows 上安装) # pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' def preprocess_image(image_path): # 读取图像 img = cv2.imread(image_path) # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊去噪 blurred = cv2.GaussianBlur(gray, (5, 5), 0) # 自适应阈值处理:把图像转换成黑白 binary_image = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2) # 使用形态学操作去除噪点:膨胀和腐蚀 kernel = np.ones((3, 3), np.uint8) dilated_image = cv2.dilate(binary_image, kernel, iterations=1) # 对图像进行轮廓检测,去除背景噪声 contours, _ = cv2.findContours(dilated_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 在图像上绘制轮廓,去除可能的干扰 clean_image = np.zeros_like(gray) for contour in contours: if cv2.contourArea(contour) > 500: # 过滤掉小面积的轮廓 cv2.drawContours(clean_image, [contour], -1, (255, 255, 255), -1) return clean_image 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)

  1. 代码解释
  2. Tesseract 设置
    如果你没有将 Tesseract 路径添加到环境变量中,可以通过以下方式设置其路径:

python

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

  1. 图像预处理步骤
    灰度化:首先将图像转为灰度图,减少颜色信息,专注于字符形状。
    高斯模糊:使用高斯模糊平滑图像,去除一些细小的噪点。
    自适应阈值:使用自适应阈值将图像转为黑白二值图,这有助于增强字符的对比度,去除背景干扰。
    膨胀操作:通过膨胀操作增强字符的轮廓,使其更加清晰。
    轮廓检测:通过轮廓检测来排除一些干扰元素,仅保留字符区域。通过过滤小面积的轮廓,去除不必要的干扰。

  2. OCR 识别
    图像处理后,我们将图像传给 Tesseract OCR 进行文字识别。pytesseract.image_to_string() 会返回识别的文本内容。

  3. 运行程序
    准备好验证码图像(例如 captcha_image.png),然后运行代码。输出将显示识别出的验证码文本:

makefile

识别的验证码是: ab2c1

标签:Tesseract,Python,image,cv2,captcha,图像,path,OCR
From: https://www.cnblogs.com/ocr12/p/18669560

相关文章

  • Python|【Pytorch】基于小波时频图与SwinTransformer的轴承故障诊断研究
    ......
  • 为什么在 Python 中 hash(-1) == hash(-2)?
    英文:https://omairmajid.com/posts/2021-07-16-why-is-hash-in-python作者:OmairMajid译者:豌豆花下猫&Claude-3.5-Sonnet时间:原文发布于2021.07.16,翻译于2025.01.11收录于:Python为什么系列https://github.com/chinesehuazhou/python-whydo当我在等待代码编译的时候,我在R......
  • 从零开始的python之旅(day2)
    从零开始的python之旅(day2)  今天主要学数据类型,类型处理方式和循环以及异常处理(当然还有数学。目前学到现在,我感觉python和c语言最大的区别就是,python更更更方便了,主要是前人栽树后人乘凉了,特别是对于元组类型和列表类型以及字符串处理中,python和c语言有相似,但是python更好读而......
  • Python AI教程之十九:监督学习之决策树(10)超参调整
    如何在超参数调整中调整决策树决策树是机器学习中广泛用于分类和回归任务的强大模型。决策树的结构类似于决策流程图,有助于我们轻松解释和说明。然而,决策树的性能高度依赖于超参数,选择最佳超参数会显著影响模型的准确性、泛化能力和鲁棒性。在本文中,我们将探讨借助决策树调......
  • 【学习路线】Python Web开发 详细知识点学习路径(附学习资源)
    学习本路线内容之前,请先学习Python的基础知识其他路线:Python基础>>Python进阶>>Python爬虫>>Python数据分析(数据科学) >>Python 算法(人工智能) >>Python Web开发 >>Python自动化运维 >>符号表解释:可根据知识点前的符号按需选学,并获取知识点描述和学习资源......
  • Python库房管理系统开发指南
    在现代仓储管理中,高效、准确的信息系统是提高运营效率的关键。Python作为一种强大且易于学习的编程语言,非常适合用来开发简易而功能齐全的库房管理系统。本文将详细介绍如何使用Python编写一个基本的库房管理系统,包括商品入库、出库、查询库存及生成报表等功能。通过本文,读者不......
  • 【最新原创毕设】基于SSM的在线学习平台+09650(免费领源码)可做计算机毕业设计JAVA、PHP
    目 录摘要1绪论1.1选题背景及意义1.2国内外现状分析1.3论文结构与章节安排2 在线学习平台系统分析2.1可行性分析2.2系统业务流程分析2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结3在线学习平台总体设......
  • springboot+vue的河南天气数据分析与可视化系统python-计算机毕业设计
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • springboot+vue的二手交易平台评论情感分析系统python-计算机毕业设计
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • springboot+vue的网购平台用户购买力差异分析及研究python-计算机毕业设计
    目录功能和技术介绍具体实现截图![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/43904518e65045b98fdab97fa21adb87.png)开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于......