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

低质量图片使用Pytesseract提取文本结果不符的技术求助

解决Pytesseract提取低质量图片文本的问题

低质量图片直接用Pytesseract识别容易出现误差,核心问题是缺少必要的图像预处理步骤,以及没有针对场景配置Tesseract参数。以下是优化方案:

关键优化步骤

  • 灰度化:去除色彩干扰,简化图像数据
  • 自适应二值化:针对光照不均的低质量图,自动调整阈值生成黑白对比图,突出文本
  • 降噪处理:消除图片中的细碎噪点,让文本边缘更清晰
  • 针对性配置Tesseract:限制识别字符范围、指定页面分割模式,减少识别偏差

优化后的代码

import cv2
import pytesseract

# 配置Tesseract路径
pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"

# 直接使用已裁剪的img_crop,避免二次保存损失质量
img = img_crop
# 1. 转为灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 2. 自适应二值化,生成黑白对比图
binary_img = cv2.adaptiveThreshold(
    gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2
)
# 3. 形态学降噪,去除小噪点
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
cleaned_img = cv2.morphologyEx(binary_img, cv2.MORPH_OPEN, kernel, iterations=1)
# 4. 增强对比度(可选,根据图片实际情况调整)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
enhanced_img = clahe.apply(cleaned_img)

# 配置Tesseract参数:指定引擎模式、单文本行分割、仅识别大写字母
custom_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ'
text = pytesseract.image_to_string(enhanced_img, config=custom_config)

print("识别结果:", text.strip())

参数说明

  • --oem 3:使用Tesseract默认的OCR引擎组合
  • --psm 7:假设输入是单一行文本,适配这类验证码式的图片场景
  • tessedit_char_whitelist:限定仅识别大写字母,排除其他字符干扰

内容的提问来源于stack exchange,提问作者NAM VƯƠNG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:05:27