1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart)是一种区分用户是人类还是计算机程序的技术。常见的验证码类型包括:
Tesseract 是一个由 Google 维护的开源 OCR 引擎,支持多种语言和字符识别。它可以通过 Python 的 pytesseract
库调用,轻松实现文字识别功能。
在开始编码之前,需要完成以下环境的配置。
1
2
3
|
sudo apt update sudo apt install tesseract-ocr sudo apt install libtesseract-dev |
通过 Homebrew 安装:
1
|
brew install tesseract |
从 Tesseract 官方 GitHub 下载 Windows 安装包,并配置环境变量。
安装 pytesseract
和图像处理相关库:
1
|
pip install pytesseract pillow opencv-python |
我们将使用 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) # 使用 OpenCV 显示图片 cv2.imshow( "Captcha" , image) cv2.waitKey( 0 ) cv2.destroyAllWindows() |
为了提高识别率,我们需要对验证码图片进行预处理,包括灰度化、二值化和噪声去除。
灰度化将彩色 图片转换为黑白图片,简化处理。
1
2
3
4
|
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow( "Gray Image" , gray) cv2.waitKey( 0 ) cv2.destroyAllWindows() |
二值化通过阈值将图片转换为黑白两色,突出文字部分。
1
2
3
4
|
_, binary = cv2.threshold(gray, 127 , 255 , cv2.THRESH_BINARY) cv2.imshow( "Binary Image" , binary) cv2.waitKey( 0 ) cv2.destroyAllWindows() |
使用形态学操作(如开运算)去除图片中的干扰点。
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() |
使用 pytesseract
调用 Tesseract 识别处理后的验证码图片。
1
2
3
4
5
6
7
8
9
|
import pytesseract from PIL import Image # 将处理后的图片保存为临时文件 cv2.imwrite( "processed_captcha.png" , denoised) # 使用 pytesseract 识别 text = pytesseract.image_to_string( "processed_captcha.png" , config = "--psm 6" ) print (f "识别结果: {text}" ) |
通过修改 Tesseract 的 --psm
参数,可以改变文字布局分析模式,例如:
--psm 6
:假设为一个块的文字。--psm 7
:将图像作为一行文字处理。如果验证码的字符范围已知,可以设置白名单,提高识别准确率。
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}" ) |
如果验证码的字符样式特殊,可以通过 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) # 使用 pytesseract 进行文字识别 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
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。