Skip to content

paddleocr的log设置会影响到调用模块的log级别设置 #14955

Description

@jieliu2000

🔎 Search before asking

  • I have searched the PaddleOCR Docs and found no similar bug report.
  • I have searched the PaddleOCR Issues and found no similar bug report.
  • I have searched the PaddleOCR Discussions and found no similar bug report.

🐛 Bug (问题描述)

如标题所示,只要调用了paddleocr,所有代码的logging level都会被修改掉,这是不对的,paddleocr应该只修改自己的log级别。我附上了测试代码,只要把代码中paddleocr的初始化代码删除就可以正常运行。也就是下面一段代码:

        from paddleocr import PaddleOCR
        # 初始化PaddleOCR
        paddle = PaddleOCR(use_angle_cls=True, lang='en')     

🏃‍♂️ Environment (运行环境)

OS: windows 11
Paddle OCR version: 2.10.0

🌰 Minimal Reproducible Example (最小可复现问题的Demo)

import unittest
import logging
import io
from unittest.mock import patch

class TestPaddleLogging(unittest.TestCase):
    def setUp(self):
        # 设置日志捕获
        self.log_output = io.StringIO()
        self.handler = logging.StreamHandler(self.log_output)
        self.handler.setFormatter(logging.Formatter('%(levelname)s - %(message)s'))
        logging.getLogger().addHandler(self.handler)
        logging.getLogger().setLevel(logging.INFO)

    def tearDown(self):
        # 清理日志处理器
        logging.getLogger().removeHandler(self.handler)
        self.log_output.close()

    def test_paddle_logging_behavior(self):
        logger = logging.getLogger(__name__)
        
        # 记录初始化前的日志
        pre_init_message = "这是在PaddleOCR初始化之前的日志消息"
        logger.info(pre_init_message)
        
        # 获取初始化前的日志输出
        pre_init_log = self.log_output.getvalue()
        self.assertIn(pre_init_message, pre_init_log)
        
        # 清空日志缓冲区
        self.log_output.truncate(0)
        self.log_output.seek(0)
        
        from paddleocr import PaddleOCR
        # 初始化PaddleOCR
        paddle = PaddleOCR(use_angle_cls=True, lang='en')
        
        # 记录初始化后的日志
        post_init_message = "这是在PaddleOCR初始化之后的日志消息"
        logger.info(post_init_message)
        
        # 获取初始化后的日志输出
        post_init_log = self.log_output.getvalue()
        
        # 验证初始化后的日志是否未显示
        self.assertNotEqual("", post_init_log.strip())

if __name__ == '__main__':
    unittest.main()

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions