
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),僅供參考