先把当时的情况摆出来。内网离线机器装 docling 2.5 解析 PDF 表格,import 就报 ModuleNotFoundError: No module named 'torch',pip 装 torch 又因为没外网卡住;机器是 CentOS 7 加 Python 3.10,显卡驱动 470,只有 CPU 可用。
把日志和配置对完,能解释这个现象的基本就这几处。docling 的表格识别依赖 torch 和 torchvision,基础安装不带。也可能是离线源里只有 CPU 版 wheel,torchvision 版本和它对不上。
少数情况下是Python 3.10 下的 torch 2.4 需要 glibc 2.28,系统只有 2.17。不容易想到的是,装了 GPU 版但 CUDA 12.1 和驱动 470 不匹配。
第一件事是在能联网的机器上按目标 Python 版本下载整包
pip download docling==2.5.0 torch==2.2.2+cpu torchvision==0.17.2+cpu -d wheels --python-version 310 --platform manylinux2014_x86_64
接着把 wheels 拷进内网后离线安装
pip install --no-index --find-links=wheels docling==2.5.0
然后确认 torch 能导入且是 CPU 版
python -c "import torch;print(torch.__version__, torch.cuda.is_available())"
末了用一页带表格的 PDF 做冒烟解析
docling --input sample.pdf --output out --to md
改之前先确认了最近有没有人动过配置,避免白查一遍。
怎么算真的好了,看的是同一批现象。import docling 不再报缺 torch,torch.__version__ 带 +cpu 后缀,样例 PDF 的表格被输出成独立的 markdown 表格,行列数与原文一致。
docling 把表格结构识别放在可选依赖里,离线安装要连同 torchvision 一起下;CentOS 7 的 glibc 装不了新版 torch,只能锁 2.2 之前的 CPU 版本。这类问题最好一次改到位,反复小改反而容易把原因搅混。
