PaddleOCR删除部分log的打印

2024-08-27 17:18

本文主要是介绍PaddleOCR删除部分log的打印,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Question

一段非常简单的调用代码,如图。

from paddleocr import PaddleOCR
import cv2ocr = PaddleOCR(use_angle_cls=False, use_gpu=False)
img = cv2.imread('test.jpg')
result = ocr.ocr('test.jpg', cls=False)

但是控制台里面却是打印了一堆log和warning,就离谱,使用体验非常拉跨。 
关键字包括:

Running analysis
Running IR pass
Fused 0 subgraphs into layer_norm op.
memory_optimize_pass.cc:199
analysis_predictor.cc:636 ======= optimize end =======
skip [feed], feed -> x
skip [save_infer_model/scale_0.tmp_1], fetch -> fetch

Answer

第一步

找到路径...\Anaconda3\envs\jbpp\Lib\site-packages\paddleocr\tools\infer\utility.py这个文件,在第239行找到如下代码块,

        step i. 打开config.disable_glog_info()

        step ii. 把config.switch_ir_optim(True) 改为 False

    # enable memory optimconfig.enable_memory_optim()# config.disable_glog_info() ----> 把这行注释关掉,禁止打印logconfig.delete_pass("conv_transpose_eltwiseadd_bn_fuse_pass")if mode == 'table':config.delete_pass("fc_fuse_pass")  # not supported for tableconfig.switch_use_feed_fetch_ops(False)config.switch_ir_optim(True) ----> 改为False

step i 使程序不再打印log到控制台 [参考];step ii 关闭了IR优化,经过测试,准确率没有变,所以我关了,不然会有 “Fused 0 subgraphs into layer_norm op.” 的日志输出。

第二步

调用 PaddleOCR() 时,这个函数内部竟然写了一个print。。会打印出所有参数,我也是麻了。

        option i: 进去直接注释掉

        option ii: 构造一个新函数,把print屏蔽,调用完再打开,如图

class HiddenPrints:def __init__(self, activated=True):# activated参数表示当前修饰类是否被**self.activated = activatedself.original_stdout = Nonedef open(self):sys.stdout.close()sys.stdout = self.original_stdoutdef close(self):self.original_stdout = sys.stdoutsys.stdout = open(os.devnull, 'w')def __enter__(self):if self.activated:self.close()def __exit__(self, exc_type, exc_val, exc_tb):if self.activated:self.open()

先构造一个HiddenPrints类,再调用,如图

Myprint= HiddenPrints()Myprint.close()
# 此处函数不会print
ocr = PaddleOCR(use_angle_cls=False, use_gpu=False)
img = cv2.imread('test.jpg')
result = ocr.ocr(img, cls=False)
Myprint.open()
#此处函数可以print

Appendix

1. 屏蔽warning

import warnings
warnings.filterwarnings("ignore")


2. 使用windows powershell在当前文件及其子文件中查找string [参考1][参考2]

get-childitem *.* -Recurse | sls -Pattern "你要搜索的str"
*.* 是文件名的正则表达式,sls是select-string的简写

这篇关于PaddleOCR删除部分log的打印的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1112281

相关文章

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序