Pytesseract放大30倍仍无法识别文本,求解决方案
PyTesseract文本识别无输出问题解决
问题描述
使用PyTesseract识别图片文本时,即使将图片放大30倍,输出仍为空。使用的代码如下:
import cv2 import pytesseract as py def img_to_str(loc : str): img = cv2.imread(loc) img = cv2.resize(img, None, fx=30, fy=30) py.pytesseract.tesseract_cmd = r"C:/Program Files/Tesseract-OCR/tesseract.exe" data = py.image_to_string(img) print(data) img_to_str(r"C:\Users\user1\Documents\second.jpg")
待识别图片:
解决办法
直接放大30倍会导致图片像素过度拉伸模糊,反而降低识别率,需要通过预处理优化图片质量+调整识别参数来解决:
1. 优化图片预处理流程
Tesseract对高对比度的黑白文本识别效果最佳,添加灰度化、二值化、降噪等步骤:
import cv2 import pytesseract as py def img_to_str(loc : str): img = cv2.imread(loc) # 转灰度图,减少色彩干扰 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 自适应二值化,处理光照不均问题,突出文本 thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2) # 适度缩放(用高质量插值,2-5倍足够,避免过度模糊) scaled = cv2.resize(thresh, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) # 中值降噪,消除细碎噪点 denoised = cv2.medianBlur(scaled, 3) py.pytesseract.tesseract_cmd = r"C:/Program Files/Tesseract-OCR/tesseract.exe" # 添加识别参数,提升准确率 custom_config = r'--oem 3 --psm 6' data = py.image_to_string(denoised, config=custom_config) print(data) img_to_str(r"C:\Users\user1\Documents\second.jpg")
2. 调整Tesseract识别参数
--oem 3:使用默认混合OCR引擎(结合LSTM和传统识别逻辑)--psm 6:假设图片为单一均匀文本块,适合大多数场景;若文本零散,可尝试--psm 3(自动分割文本区域)或--psm 8(识别单个词汇)- 若识别中文,需添加
lang='chi_sim'参数,并确保已安装Tesseract中文语言包
3. 检查Tesseract环境
- 确认Tesseract安装路径正确,且已安装对应语言的训练数据(英文默认自带,中文需额外下载安装)
- 更新Tesseract到最新版本,避免旧版本的兼容性问题
内容的提问来源于stack exchange,提问作者Summer Project
相关产品推荐
相关产品推荐

