先看现象。camelot-py 0.11 用 flavor=lattice 抽年报表格,运行报 OSError: Ghostscript is not installed,服务器是 Ubuntu 22.04 的最小镜像,Python 依赖都装齐了。

把日志和配置对完,能解释这个现象的基本就这几处。系统里没有 ghostscript 二进制。还有一种是binary 不在 PATH 里,camelot 找不到。

不容易想到的是,已安装的 gs 版本过旧。

还有一种情况,lattice 模式本身依赖 gs 渲染页面。

装 ghostscript 并确认版本

apt-get install -y ghostscript

再往下检查 gs 是否在 PATH 中

which gs && gs --version

然后重跑同一份 PDF 看是否能抽表

python extract_table.py --pdf annual.pdf --flavor lattice

剩下的就是换 stream 模式对照,确认不是版面问题

python extract_table.py --pdf annual.pdf --flavor stream

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

这次没动代码,只在配置和运行环境上找原因。

恢复的判定其实很直接。表格能正常导出为 CSV,行数与 PDF 中一致,日志里不再出现 Ghostscript is not installed。

camelot 的两个模式对系统依赖不同,lattice 依赖 gs 做图像处理,容器镜像里要显式装二进制,只装 pip 包不够。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189