资源经验分享python、Tesseract的简易验证码的识别

python、Tesseract的简易验证码的识别

2019-11-07 | |  64 |   0

原标题: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.png

图像预处理:

1.验证码图片(滤波)灰度化
2.png
2.二值化(使用自适应阈值的方法)
3.png
3.形态学操作(膨胀腐蚀开闭…)
得到白色背景较干净的图片
4.png

字符识别结果:

5.png
可以检测一些规则字体的图片,试一试其他的稍微难点的验证码,效果不是那么好,特别是一下字体。手写字体效果也不好。可以对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

上一篇:【LVCSR】各种大词表连续语音识别技术,它们之间的异同,并比较优缺点。

下一篇:【spark】pyspark中数据类型转换pandas_df,rdd,spark_df

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...