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

如何解决黑色文本图像OCR识别错误?移除干扰黑色像素方案咨询

解决Tesseract数字识别错误的方案

一、优化图像预处理

Tesseract对图像质量敏感度高,通过预处理强化文本与背景的对比度,能大幅提升识别准确率:

  • 灰度转换:将彩色图像转为灰度图,减少色彩干扰
    img = cv2.imread('download.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
  • 二值化处理:让数字文本与背景形成强烈反差,可选自适应阈值适配光照不均场景
    # 自适应高斯阈值
    thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 固定阈值(可根据图像实际亮度调整127这个值)
    # ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
    
  • 噪声清除:用形态学操作去除图像杂点
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1,1))
    cleaned = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)
    

二、调整Tesseract识别参数

  • 替换语言包:lang='lets'并非标准数字识别语言包,换成成熟的英文包lang='eng',对阿拉伯数字的识别支持更完善
  • 优化识别模式与规则:限制识别范围为数字,同时调整PSM模式适配单数字块场景
    text = pytesseract.image_to_string(cleaned, lang='eng', config='--psm 8 --oem 3 -c tessedit_char_whitelist=0123456789')
    
    参数说明:--psm 8指定识别单个词,--oem 3使用默认混合OCR引擎,tessedit_char_whitelist强制只识别数字,排除无关字符干扰。

三、排查图像本身问题

  • 校正倾斜:如果图像存在倾斜,先做角度校正
    import numpy as np
    coords = np.column_stack(np.where(cleaned > 0))
    angle = cv2.minAreaRect(coords)[-1]
    if angle < -45:
        angle = -(90 + angle)
    else:
        angle = -angle
    (h, w) = cleaned.shape[:2]
    center = (w // 2, h // 2)
    M = cv2.getRotationMatrix2D(center, angle, 1.0)
    rotated = cv2.warpAffine(cleaned, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
    
  • 检查清晰度:确认图像是否存在模糊、拉伸变形,必要时重新获取高清原图

内容的提问来源于stack exchange,提问作者pee2pee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:00:47