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

如何在Pytesseract中实现类似OCR Engine5的邮箱点识别效果?

解决pytesseract无法识别邮箱中点的问题

针对你遇到的邮箱中点无法被pytesseract识别的问题,可以通过以下几种方式实现类似ocr.space引擎5的识别效果:

  • 启用Tesseract的LSTM引擎
    ocr.space的引擎5基于先进的LSTM(长短期记忆)模型,而pytesseract默认可能未完全启用该引擎。你可以通过--oem参数指定使用LSTM引擎:

    import cv2
    import pytesseract
    
    img = cv2.imread("images/10008.png")
    # --oem 3 表示混合使用传统引擎和LSTM引擎,优先LSTM;--oem 1 则仅使用LSTM引擎
    text = pytesseract.image_to_string(img, config='--psm 6 --oem 3')
    

    注意:需要确保你的Tesseract版本在4.0及以上,LSTM引擎是从Tesseract 4开始引入的。

  • 预处理图片优化识别条件
    复杂背景或低对比度是导致点识别失败的常见原因,你可以对图片进行预处理来提升识别率:

    import cv2
    import pytesseract
    
    img = cv2.imread("images/10008.png")
    # 转为灰度图
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 自适应二值化,处理复杂背景
    thresh_img = cv2.adaptiveThreshold(
        gray_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2
    )
    # 降噪处理
    denoised_img = cv2.medianBlur(thresh_img, 3)
    # 结合LSTM引擎识别
    text = pytesseract.image_to_string(denoised_img, config='--psm 6 --oem 3')
    
  • 识别后正则修正邮箱格式
    如果前两种方法仍有误差,可以通过正则表达式匹配邮箱格式,将识别错误的空格替换为点:

    import cv2
    import pytesseract
    import re
    
    img = cv2.imread("images/10008.png")
    text = pytesseract.image_to_string(img, config='--psm 6 --oem 3')
    # 匹配邮箱中的空格并替换为点
    corrected_text = re.sub(r'(\w+)\s+(\w+)@(\w+\.\w+)', r'\1.\2@\3', text)
    

内容的提问来源于stack exchange,提问作者αԋɱҽԃ αмєяιcαη

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:09:25