You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:43:08