Tesseract无法读取图像中的数字验证码

问题描述

我有这张图片: Unprocessed Image 从下面的代码,我能够将其转换为: Processed Image

图片的编号为: 8276 但我的代码将其读取为 776

如何成功使我的代码能够读取为 8276 ? 对于这个图像处理/ cv2 / pytesseract,我是一个新手,经过太多的搜索,我才知道这一点。

import cv2
import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = r'C:\Users\hamza.rana\AppData\Local\Tesseract-OCR\tesseract.exe'

image = cv2.imread('captcha.jpg')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gray = cv2.threshold(gray,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
gray = cv2.medianBlur(gray,3)
gray = cv2.adaptiveThreshold(gray,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
filename = "{}.png".format("temp")
cv2.imwrite(filename,gray)
text = pytesseract.image_to_string(Image.open('temp.png'),config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')
print(text)

解决方法

开箱即用的Tesseract培训最适合字体,并且(以我的经验)在手工印刷方面效果不佳,而在较长的手写体上却会忘记它。

在紧缩的情况下,对边框有一点帮助的是将边框扩大几个像素。但是从一个混乱的验证码开始...这可能是您需要为其训练模型的东西。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...