opencv + Tessert-OCR
安装指令:
pip install pytesseract
Tesseracr-OCR 验证码识别
1、预处理——去除干扰线与点
2、不同的结构元素中选择
3、Image与numpy array相互转化
4、识别与输出
OCR(Optional Character Recognition,光学字符识别)是通过扫描字符,然后通过其形状将其翻译成电子文本的过程。
from matplotlib import pyplot as plt
from cv2 import cv2 as cv
import numpy as np
from PIL import Image
import pytesseract as tess
def recognize_test():
blurred = cv.GaussianBlur(img,(3,3),0) #高斯降噪,适度
gray = cv.cvtColor(blurred,cv.COLOR_BGR2GRAY)
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
cv.imshow('binary',binary)
#步骤不是一层不变的,要是二值化后得到很好的,就不在需要进行下列操作
kernel = cv.getStructuringElement(cv.MORPH_RECT,(1,3))#构造3*3的元素
binl = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)#进行开操作
kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,1))#构造3*3的元素
open__out = cv.morphologyEx(binl,cv.MORPH_OPEN,kernel)#进行开操作
cv.imshow('binl',open__out)
#要用白色背景
cv.bitwise_not(open__out,open__out)
testImage = Image.fromarray(open__out)
text = tess.image_to_string(testImage)
print("识别结果:%s"%text)
if __name__ == "__main__":
filepath = "C:\\pictures\\others\\1-26.jpg"
#filepath = "C:\\pictures\\1-26.jpg"
img = cv.imread(filepath) # blue green red
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",img)
recognize_test()
cv.waitKey(0)
cv.destroyAllWindows()
结果:

本文详细介绍使用OpenCV和Tesseract OCR进行图像预处理和验证码识别的全过程。从高斯降噪到二值化处理,再到利用不同结构元素进行图像优化,最终实现对复杂背景下的文字识别。文中还提供了具体代码实例,帮助读者理解并实践OCR识别技术。
15万+

被折叠的 条评论
为什么被折叠?



