当前位置: 首页 > news >正文

ai之paddleOCR 识别PDF python312和paddle版本冲突 GLIBCXX_3.4.30

这里写自定义目录标题

  • 问题一
      • **解决方案**
        • **方法 1:使用符号链接将系统库链接到 Conda 环境**
      • **补充说明**
      • **验证修复结果**
  • 问题二:
      • **问题根源**
      • **解决方案**
        • **1. 确认 TensorRT 安装状态**
        • **2. 安装 TensorRT 并配置环境变量**
        • **3. 验证 TensorRT 与 PaddlePaddle 版本兼容性**
        • **4. 检查 PaddlePaddle 编译选项**
    • 注意:
      • **总结**

问题一

根据你的报错信息,libstdc++.so.6: version 'GLIBCXX_3.4.30' not found 表示 当前 Conda 环境中的 libstdc++.so.6 版本过低,无法满足 PaddlePaddle 的依赖需求。以下是完整的解决方法:


解决方案

方法 1:使用符号链接将系统库链接到 Conda 环境
  1. 查找系统中已有的 libstdc++.so.6 文件

    sudo find / -name libstdc++.so.6
    

    通常路径为:

    /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    
  2. 检查系统库是否包含所需版本

    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
    

    如果输出中包含 GLIBCXX_3.4.30,则说明系统库已满足需求。

  3. 删除 Conda 环境中的旧库文件

    rm /usr/local/miniconda/envs/ai_pyenv_3.12/lib/libstdc++.so.6
    rm /usr/local/miniconda/envs/ai_pyenv_3.12/lib/libstdc++.so
    
  4. 创建符号链接到系统库

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/miniconda/envs/ai_pyenv_3.12/lib/libstdc++.so.6
    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/miniconda/envs/ai_pyenv_3.12/lib/libstdc++.so
    
  5. 验证修复

    strings /usr/local/miniconda/envs/ai_pyenv_3.12/lib/libstdc++.so.6 | grep GLIBCXX
    

    确保输出中包含 GLIBCXX_3.4.30


在这里插入图片描述


补充说明

  • 为什么会出现这个问题?
    Conda 环境默认使用的 libstdc++.so.6 是 Conda 自带的版本,可能与系统版本不一致。当 PaddlePaddle 需要更高版本的 C++ 标准库时,会报错。

  • 如何避免类似问题?

    • 使用 Conda 安装 PaddlePaddle 时,确保环境中的 libstdcxx-nggcc 版本与官方要求一致。
    • 或者直接使用系统 Python 环境,避免 Conda 的隔离问题。

验证修复结果

运行以下命令检查是否修复成功:

python -c "import paddle; print(paddle.__version__)"

如果不再报错,说明修复成功。

问题二:

Traceback (most recent call last):File "/usr/local/soft/py/seek_backend_fast/demo/main_paddle.py", line 80, in <module>ocr_engine_paddle = PaddleOCR(^^^^^^^^^^File "/usr/local/miniconda/envs/ai_pyenv_3.12/lib/python3.12/site-packages/paddleocr/paddleocr.py", line 693, in __init__super().__init__(params)File "/usr/local/miniconda/envs/ai_pyenv_3.12/lib/python3.12/site-packages/paddleocr/tools/infer/predict_system.py", line 53, in __init__self.text_detector = predict_det.TextDetector(args)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/local/miniconda/envs/ai_pyenv_3.12/lib/python3.12/site-packages/paddleocr/tools/infer/predict_det.py", line 139, in __init__) = utility.create_predictor(args, "det", logger)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/usr/local/miniconda/envs/ai_pyenv_3.12/lib/python3.12/site-packages/paddleocr/tools/infer/utility.py", line 364, in create_predictorpredictor = inference.create_predictor(config)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: (NotFound) TensorRT is needed, but TensorRT dynamic library is not found.Suggestions:1. Check if the TensorRT is installed correctly and its version is matched with paddlepaddle you installed.2. Configure environment variables as follows:- Linux: set LD_LIBRARY_PATH by `export LD_LIBRARY_PATH=...`- Windows: set PATH by `set PATH=XXX;[Hint: dso_handle should not be null.] (at ../paddle/fluid/platform/dynload/tensorrt.cc:44)

针对您遇到的 TensorRT 动态库未找到 错误,以下是详细的解决方案:


问题根源

错误提示表明 PaddlePaddle-GPU 需要 TensorRT 加速支持,但系统未正确配置 TensorRT 库。主要原因包括:

  1. TensorRT 未安装:系统中缺少 TensorRT 运行时库
  2. 版本不匹配:安装的 TensorRT 版本与 PaddlePaddle 或 CUDA 不兼容
  3. 环境变量缺失:TensorRT 库路径未添加到 LD_LIBRARY_PATH

The third-party dynamic library (cudnn64_7.dll) that Paddle depends on is not configured correctly. (error code is 126)
Windows10下安装PaddlePaddle,进行paddle.utils.run_check()测试时报错,初以为是缺少 cudnn64_7.dll 所致,其实不然,而是 CUDA 版本、CUDNN 版本与 Paddlepaddle 版本不兼容导致,PaddlePaddle官网信息如下:

如果您的计算机没有 NVIDIA® GPU,请安装CPU 版的 PaddlePaddle
如果您的计算机有 NVIDIA® GPU,请确保满足以下条件并且安装 GPU 版 PaddlePaddle
CUDA 工具包 10.2 配合 cuDNN v7.6.5,如需使用 PaddleTensorRT 推理,需配合 TensorRT7.0.0.11
CUDA 工具包 11.2 配合 cuDNN v8.2.1,如需使用 PaddleTensorRT 推理,需配合 TensorRT8.2.4.2
CUDA 工具包 11.6 配合 cuDNN v8.4.0,如需使用 PaddleTensorRT 推理,需配合 TensorRT8.4.0.6
CUDA 工具包 11.7 配合 cuDNN v8.4.1,如需使用 PaddleTensorRT 推理,需配合 TensorRT8.4.2.4
CUDA 工具包 11.8 配合 cuDNN v8.6.0,如需使用 PaddleTensorRT 推理,需配合 TensorRT8.5.1.7
CUDA 工具包 12.0 配合 cuDNN v8.9.1, 如需使用 PaddleTensorRT 推理,需配合 TensorRT8.6.1.6
GPU 运算能力超过 3.5 的硬件设备
注:目前官方发布的 windows 安装包仅包含 CUDA 10.2/11.2/11.6/11.7/11.8/12.0,如需使用其他 cuda 版本,请通过源码自行编译。您可参考 NVIDIA 官方文档了解 CUDA、CUDNN 和 TensorRT 的安装流程和配置方法,请见CUDA,cuDNN,TensorRT

解决方案

1. 确认 TensorRT 安装状态

运行以下命令检查是否已安装 TensorRT:

dpkg -l | grep TensorRT  # Ubuntu/Debian
rpm -qa | grep TensorRT  # CentOS/RHEL

若未安装,需手动下载安装包:

# 从 NVIDIA 官网下载对应版本(示例为 CUDA 12.0 的 TensorRT 8.6.1)
wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz
tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz

2. 安装 TensorRT 并配置环境变量
# 将解压后的路径加入环境变量(假设解压到 /opt/TensorRT-8.6.1.6)
export LD_LIBRARY_PATH=/opt/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH# 永久生效(推荐)
echo 'export LD_LIBRARY_PATH=/opt/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

3. 验证 TensorRT 与 PaddlePaddle 版本兼容性
PaddlePaddle 版本TensorRT 版本CUDA 版本cuDNN 版本
2.6.0 (post120)8.6.112.0+8.9+
2.5.2 (post118)8.5.311.88.6+

若版本不匹配,需重新安装对应版本:

# 示例:为 CUDA 12.0 安装 TensorRT 8.6.1
pip install tensorrt==8.6.1 --extra-index-url https://pypi.nvidia.com

4. 检查 PaddlePaddle 编译选项

确保安装的 PaddlePaddle-GPU 包含 TensorRT 支持:

import paddle
print(paddle.inference.get_trt_compile_version())  # 应输出 TensorRT 版本号
print(paddle.inference.get_trt_runtime_version())  # 应输出运行时版本号

在这里插入图片描述

注意:

vim ~/.bashrc

# 加入以下三行,只加第一行无效
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/***/TensorRT-8.4.1.5/lib
export TENSORRT_INCLUDE_DIR=/home/***/TensorRT-8.4.1.5
export PATH=/home/***/TensorRT-8.4.1.5/bin:$PATH# 使改动生效
source ~/.bashrc

总结

通过正确安装匹配的 TensorRT 版本并配置环境变量,即可解决该错误。建议使用官方 Docker 镜像避免环境配置问题:

docker pull paddlepaddle/paddle:2.6.0-gpu-cuda12.0-cudnn8.9-trt8.6
docker run -it --gpus all -v $(pwd):/workspace paddlepaddle/paddle:2.6.0-gpu-cuda12.0-cudnn8.9-trt8.6

相关文章:

  • 提升办公效率的PDF转图片实用工具
  • 学习黑客资产威胁分析贴
  • 《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用声音合成玩音乐:MATLAB电子琴制作(超级趣味实践版)
  • NocoDB:开源的 Airtable 替代方案
  • 二叉树最近公共祖先(后序遍历,回溯算法)
  • springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。
  • 关于Python:7. Python数据库操作
  • 经典算法 求解硬币组成问题
  • 基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告
  • 软件测评如何保障质量与提升体验?从五方面详细说说
  • JSON 处理笔记
  • 接上篇,解决FramePack启动报错:“httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。“的问题
  • 在c++中,char定义的变量取地址时,为什么会输出 “烫烫烫...“?
  • 【在Spring Boot中集成Redis】
  • LeetCode - 1137.第N个泰波那契数
  • 学习黑客色即是空
  • python使用cv2在图片上标点
  • 二、shell脚本--变量与数据类型
  • c++_2011 NOIP 普及组 (1)
  • WebSocket分布式实现方案
  • 中国难以承受高关税压力?外交部:任何外部冲击都改变不了中国经济基本面
  • 央行:今日起下调再贷款利率0.25个百分点
  • 体坛联播|米兰逆转热那亚豪取3连胜,阿诺德官宣离开利物浦
  • 贵州黔西市游船倾覆事故致9人死亡1人失联
  • 光明日报头版评论:让投身西部成为青春潮流
  • 爱彼迎:一季度总收入约23亿美元,将拓展住宿以外的新领域