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

PyTesseract运行教程代码正常但自定义相似代码OCR识别出错求助

故障原因排查

  • PSM分页模式配置错误
    你自行添加了config='--psm 7'参数,该参数会强制Tesseract将整张图像识别为单一整行文本,完全不适合桌面截图这种存在多分散文本区域的场景。教程代码使用默认的自动页面分割模式,这是识别结果差异的最核心原因。建议移除该参数,或替换为--psm 11(稀疏文本检索模式)适配全局找词的需求。
  • 遍历逻辑错误
    你在循环第一次迭代时就判断"Description" not in results["text"],没匹配到就直接退出程序。但results["text"]是所有识别块的文本列表,应该遍历完全部结果再判断是否存在匹配项,单次遍历就终止的逻辑完全不符合需求。
  • 置信度判断逻辑错误
    Tesseract返回的conf置信度是0-100范围的整数,不是0-1的小数。你写的conf < 0.2相当于几乎没有过滤效果,且注释写的“小于0.7就跳过”和代码逻辑完全不符,建议调整为conf < 70这类符合数值范围的判断条件。
  • 变量引用错误
    最后打印坐标时用的x、y、width、height没有定义,你之前定义的对应变量是Desc_x、Desc_y、Desc_w、Desc_h,运行到此处会直接抛出变量未定义报错。
  • 可选优化:高分辨率桌面截图可提前做灰度化、二值化、对比度增强处理,能进一步提升识别准确率。如果识别内容包含中文,需要添加lang='chi_sim'参数并确保安装了对应语言包。

修复后参考代码

import pyautogui
import cv2
import pytesseract
from pytesseract import Output

# 截图并读取
pyautogui.screenshot('screenshotOfDesktop.png')
readDesktop_SAP = cv2.imread('screenshotOfDesktop.png')
rgb = cv2.cvtColor(readDesktop_SAP, cv2.COLOR_BGR2RGB)

# 移除错误的psm 7配置,使用默认分页模式
results = pytesseract.image_to_data(rgb, output_type=Output.DICT)

found_desc = False
# 遍历所有识别结果
for i in range(len(results["text"])):
    text = results["text"][i].strip()
    conf = int(results["conf"][i])
    # 匹配关键词+置信度过滤
    if "Description" in text and conf >= 70:
        found_desc = True
        Desc_x = results["left"][i]
        Desc_y = results["top"][i]
        Desc_w = results["width"][i]
        Desc_h = results["height"][i]
        print("Found 'Description' on screen! ")
        print("The coordinates are: ")
        print(Desc_x, Desc_y, Desc_w, Desc_h)
        print(f"Confidence = {conf}") 

if not found_desc:
    print("Didn't find description on screen. Please check that the SAP 'find document' page is open on the screen. ")
    input('Press ENTER to exit now. ')
    exit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 22:06:02