首页 > 解决方案 > Pytesseract OCR 未在验证码图像上返回正确结果

问题描述

我正在使用 tesseract 4.0.0-beta.1

我有以下图片

ocr 图像

我已经使用 opencv 转换了这个图像

转换后的图像

img = cv2.imread(image, cv2.IMREAD_GRAYSCALE)
img = cv2.resize(img, None, fx=5, fy=5, interpolation=cv2.INTER_LINEAR)
img = cv2.medianBlur(img, 9)
_, img = cv2.threshold(img, 185, 255, cv2.THRESH_BINARY)

我的 tesseract 表扬

tesseract image.png stdout -l eng-best --oem 1 --psm 7

得到结果:NVRG nk

但结果应该是:nvRGnk

标签: pythonopencvocrtesseractpython-tesseract

解决方案


从转换后的图像开始,只需要多一点过滤 在此处输入图像描述

nvRGnk

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('2.png',0)
image = 255 - image
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
close = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel, iterations=2)
dilate_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (2,2))
dilate = cv2.dilate(close, dilate_kernel, iterations=1)
result = 255 - dilate 

data = pytesseract.image_to_string(result, lang='eng',config='--psm 13')
print(data)

cv2.imshow('result', result)
cv2.waitKey()

推荐阅读