pip install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pytesseract -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- 安装好Tesseract-OCR.exe
- pytesseract 库的配置:搜索找到pytesseract.py,打开该.py文件,找到 tesseract_cmd,改变它的值为刚才安装 tesseract.exe 的路径。
二、验证码识别
识别验证码,需要先对图像进行预处理,去除会影响识别准确度的线条或噪点,提高识别准确度。
实例1
import cv2 as cv
import pytesseract
from PIL import Image
def recognize\_text(image):
# 边缘保留滤波 去噪
dst = cv.pyrMeanShiftFiltering(image, sp=10, sr=150)
# 灰度图像
gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
# 形态学操作 腐蚀 膨胀
erode = cv.erode(binary, None, iterations=2)
dilate = cv.dilate(erode, None, iterations=1)
cv.imshow('dilate', dilate)
# 逻辑运算 让背景为白色 字体为黑 便于识别
cv.bitwise_not(dilate, dilate)
cv.imshow('binary-image', dilate)
# 识别
test_message = Image.fromarray(dilate)
text = pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src = cv.imread(r'./test/044.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
识别结果:3n3D
Process finished with exit code 0
实例2
import cv2 as cv
import pytesseract
from PIL import Image
def recognize\_text(image):
# 边缘保留滤波 去噪
blur =cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
cv.imshow('dst', blur)
# 灰度图像
gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
# 二值化
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
print(f'二值化自适应阈值:{ret}')
cv.imshow('binary', binary)
# 形态学操作 获取结构元素 开操作
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 2))
bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow('bin1', bin1)
kernel = cv.getStructuringElement(cv.MORPH_OPEN, (2, 3))
bin2 = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel)
cv.imshow('bin2', bin2)
# 逻辑运算 让背景为白色 字体为黑 便于识别
cv.bitwise_not(bin2, bin2)
cv.imshow('binary-image', bin2)
# 识别
test_message = Image.fromarray(bin2)
text = pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src = cv.imread(r'./test/045.png')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
二值化自适应阈值:181.0
识别结果:8A62N1
Process finished with exit code 0
实例3
import cv2 as cv
import pytesseract
from PIL import Image
def recognize\_text(image):
# 边缘保留滤波 去噪
blur = cv.pyrMeanShiftFiltering(image, sp=8, sr=60)
cv.imshow('dst', blur)
# 灰度图像
gray = cv.cvtColor(blur, cv.COLOR_BGR2GRAY)
# 二值化 设置阈值 自适应阈值的话 黄色的4会提取不出来
ret, binary = cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)
print(f'二值化设置的阈值:{ret}')
cv.imshow('binary', binary)
# 逻辑运算 让背景为白色 字体为黑 便于识别
cv.bitwise_not(binary, binary)
cv.imshow('bg\_image', binary)
# 识别
test_message = Image.fromarray(binary)
text = pytesseract.image_to_string(test_message)
print(f'识别结果:{text}')
src = cv.imread(r'./test/045.jpg')
cv.imshow('input image', src)
recognize_text(src)
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
二值化设置的阈值:185.0
识别结果:7364
Process finished with exit code 0
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。