运行PaddleOCR代码时提示result未定义,请求协助排查
问题排查:PaddleOCR代码中'result未定义'异常
你的问题出在%timeit魔法命令的作用域特性上:
%timeit会将其后面的代码块放在局部作用域中执行,即便是赋值语句result = ocr.ocr(...),也只会在这个局部作用域内创建变量,外部的for循环无法访问到它。
解决方案
方案1:拆分计时与结果获取
先执行OCR获取结果,再单独对OCR调用计时,这样既保留计时功能,又能正常使用result:
# 先获取结果,供后续循环使用 result = ocr.ocr(img_path, cls=True) # 单独对OCR调用计时,不影响变量作用域 %timeit ocr.ocr(img_path, cls=True) # 正常遍历结果 for line in result: print(line)
方案2:通过可变对象突破作用域(如果需要在计时同时保留结果)
利用列表这类可变对象的特性,让%timeit内的赋值能被外部访问:
result_list = [] # 多次执行时会把结果追加到列表,最后取其中一个即可 %timeit result_list.append(ocr.ocr(img_path, cls=True)) # 取最后一次执行的结果 result = result_list[-1] for line in result: print(line)
内容的提问来源于stack exchange,提问作者Vuyani Nkosi
相关产品推荐
相关产品推荐

