ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

PaddleOCR 日志系统配置指南:从集中式 logger 到自定义日志输出

2026/9/12 2:26:26 拓冰建站 浏览量
PaddleOCR 日志系统配置指南:从集中式 logger 到自定义日志输出 PaddleOCR 日志系统配置指南从集中式 logger 到自定义日志输出【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCRpaddleocrPython 包内置了一套基于标准库logging的集中式日志系统通过paddleocr.logger暴露唯一入口默认仅输出ERROR及以上级别的日志。本文以 docs/version3.x/logging.en.md 为主线结合仓库源码讲解默认行为、禁用自动配置的方法以及将日志重定向到文件等自定义用法帮助你精确掌控 OCR 运行时的日志输出。集中式日志系统的设计PaddleOCR 的日志配置遵循唯一 logger的设计原则整个包共享一个名为paddleocr的 logger 实例任何模块的日志都汇入该实例。你可以在源码 paddleocr/_utils/logging.py 中看到它的定义import logging from .._env import DISABLE_AUTO_LOGGING_CONFIG LOGGER_NAME paddleocr logger logging.getLogger(LOGGER_NAME) def _set_up_logger(): if DISABLE_AUTO_LOGGING_CONFIG: return formatter logging.Formatter( [%(asctime)s] %(name)s %(levelname)s: %(message)s, datefmt%Y/%m/%d %H:%M:%S ) stream_handler logging.StreamHandler() stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) logger.setLevel(logging.ERROR) logger.propagate False _set_up_logger()该 logger 在包初始化时通过 paddleocr/init.py 的from ._utils.logging import logger导出并列入__all__因此你可以直接通过from paddleocr import logger访问它。无论是 CLI 入口 paddleocr/_cli.py、OCR 流水线 paddleocr/_pipelines/ocr.py还是 doc2md 转换等模块均统一使用这一实例。需要注意本文讨论的是通过 PyPI 安装的paddleocr包version 3.x的日志系统与训练脚本使用的日志系统相互独立二者配置方法互不影响。如果你是在做模型训练请查阅训练侧文档。默认日志行为日志级别默认设为ERROR只有级别为ERROR或更高如CRITICAL的消息才会输出INFO、DEBUG等低级别消息默认被过滤。输出目标配置了StreamHandler将日志写入标准错误流stderr。传播控制logger 的propagate属性被设为False日志不会向上传递到父 logger避免与上层应用如 Jupyter Notebook 或宿主应用的日志系统相互干扰。日志格式[%(asctime)s] %(name)s %(levelname)s: %(message)s时间格式为%Y/%m/%d %H:%M:%S例如[2026/09/11 18:27:53] paddleocr ERROR: ...。该格式与 PaddleOCR 2.x 基本兼容仅输出目标改为 stderr。关闭自动配置DISABLE_AUTO_LOGGING_CONFIG若希望完全禁用 PaddleOCR 对 logger 的自动配置不再自动添加 handler、不修改级别和 propagate可设置环境变量export DISABLE_AUTO_LOGGING_CONFIG1 python your_script.py或在使用时临时注入DISABLE_AUTO_LOGGING_CONFIG1 python your_script.py此时 paddleocr/_utils/logging.py 中的_set_up_logger()会直接返回logger 保持 Python 默认状态默认级别WARNING、无 handler、propagateTrue后续所有配置都由你自行完成。细节提示源码 paddleocr/_env.py 中实际读取的环境变量名是PADDLEOCR_DISABLE_AUTO_LOGGING_CONFIG判断逻辑为os.getenv(..., 0) 1。文档中写作DISABLE_AUTO_LOGGING_CONFIG是简化表述若要严格生效请使用带PADDLEOCR_前缀的完整变量名。自定义日志输出写入文件等场景在默认配置基础上你可以继续向logger添加 handler实现将日志同时写入文件等需求。官方文档给出的写文件示例import logging from paddleocr import logger # 将日志写入文件 paddleocr.log fh logging.FileHandler(paddleocr.log) logger.addHandler(fh)更精细的定制例如为文件 handler 单独设置格式和级别并保留控制台输出可以这样写import logging from paddleocr import logger # 文件 handlerINFO 及以上级别带完整格式 fh logging.FileHandler(paddleocr.log, encodingutf-8) fh.setLevel(logging.INFO) fmt logging.Formatter( [%(asctime)s] %(name)s %(levelname)s: %(message)s, datefmt%Y/%m/%d %H:%M:%S, ) fh.setFormatter(fmt) logger.addHandler(fh) # 临时在控制台看更详细的输出将级别降到 INFO logger.setLevel(logging.INFO)需要注意两点addHandler是追加式的默认的StreamHandler不会被移除文件 handler 是叠加在其上的。如果只想保留文件输出而不要控制台输出请先调用logger.handlers.clear()再添加自己的 handler。自定义 handler 遵循标准库logging的机制可以任意扩展为RotatingFileHandler、TimedRotatingFileHandler、logging.handlers.SysLogHandler或自定义 handler 类如需更复杂的过滤与分发可直接查阅 Pythonlogging标准库文档。对依赖库日志的影响边界需要明确一个边界以上所有配置只作用于paddleocr自身的 logger。PaddleOCR 依赖的其他库如 PaddleX见 docs/version3.x/paddleocr_and_paddlex.en.md拥有各自独立的日志系统对paddleocr.logger的配置不会影响这些库的日志输出。因此若你观察到 PaddleX 等依赖库的日志不受控应在其对应文档中寻找独立的日志配置方式而不是修改paddleocr.logger。完整示例写入文件并保留控制台将上述要点组合成一个完整示例import logging from paddleocr import logger # 1. 保留默认控制台stderr输出 # 2. 新增文件输出级别为 INFO fh logging.FileHandler(paddleocr.log, encodingutf-8) fh.setLevel(logging.INFO) fmt logging.Formatter( [%(asctime)s] %(name)s %(levelname)s: %(message)s, datefmt%Y/%m/%d %H:%M:%S, ) fh.setFormatter(fmt) logger.addHandler(fh) # 3. 若希望在控制台也能看到 INFO 级别日志 # logger.setLevel(logging.INFO)运行后paddleocr.log将按你的格式记录日志而控制台默认仍只显示ERROR及以上级别的信息。结合 paddleocr/_cli.py 中 CLI 在main()里会把 logger 级别临时提升到INFO的行为你可以通过上面的方式在 Python 脚本中自行控制详细程度两者互不冲突。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考