原标题:python、Tesseract的简易验证码的识别
原文来自:CSDN 原文链接:https://blog.csdn.net/qq_38190041/article/details/102915682
因课程作业有字符识别相关题目,所以使用tesseract库试试效果
环境
Python3.6
Pycharm
Opencv-python
pillow
Pytesseract
Tesseract-OCR
环境配置可以参考:
python、opencv的安装配置
pil、tesseract的安装配置
识别的二维码:
图像预处理:
1.验证码图片(滤波)灰度化
2.二值化(使用自适应阈值的方法)
3.形态学操作(膨胀腐蚀开闭…)
得到白色背景较干净的图片
字符识别结果:
可以检测一些规则字体的图片,试一试其他的稍微难点的验证码,效果不是那么好,特别是一下字体。手写字体效果也不好。可以对Tesseract重新训练一些样本进行相对应图片的识别。
代码:
import cv2 as cv
import numpy as np
from PIL import Image
import pytesseract as tess
def recognize_text():
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
# 固定阈值二值化
ret, binary = cv.threshold(gray, 150, 255, cv.THRESH_BINARY)
# 自适应二值化
# binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 25, 10)
cv.imshow("binary", binary)
# 形态学的处理,滤除噪点
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 1))
dilate_image = cv.dilate(binary, kernel)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
erode_image = cv.erode(dilate_image, kernel)
cv.imshow("erode_image", erode_image)
# 将dilate_image转为Image
textImage = Image.fromarray(erode_image)
# 识别
txt = tess.image_to_string(textImage)
print("识别结果为:", txt)
print("验证码识别:")
src = cv.imread("G:\Python\verification\4.png")
cv.imshow("src", src)
recognize_text()
cv.waitKey(0)
cv.destroyAllWindows()
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com