wechat-robot-skills/skills/pdf/references/dependencies.md
2026-09-09 12:30:35 +08:00

41 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 容器依赖与能力边界
依赖由 `silk-base/Dockerfile` 预装。机器人只调用固定脚本,不能运行安装命令;需要更新依赖时由维护者重新构建和部署基础镜像。
## 复用原 PDF 工具链
| 能力 | 镜像依赖 |
| --- | --- |
| 原生文字、表格、页面和表单 | pdfplumber 0.11.9、pypdf 6.10.0、Poppler |
| 简单文本/Markdown PDF | ReportLab 4.4.9、Pillow、已安装中文与拉丁字体 |
| PDF 页及单张图片 OCR | RapidOCR 3.9.1、ONNX Runtime 1.27.0、OpenCV 4.12.0.88、OmegaConf 2.3.1 |
| Office 导出 | LibreOffice Writer/Calc/Impress 与系统字体 |
| HTML 渲染运行时 | 已有 Node.js 与系统 Chromium,`CHROME_BIN=/usr/bin/chromium` |
OCR 使用 RapidOCR 包内的检测、方向分类与识别 ONNX 模型。缺少模型就返回错误;不回退联网下载。OmegaConf 固定兼容版本,避免旧版不能处理 RapidOCR 的路径配置。
## 本次补充
| 依赖 | 用途 | 安装位置/方式 |
| --- | --- | --- |
| poppler-data | Adobe CJK 字符映射,补齐部分中文 PDF 的渲染与提取 | Debian 软件包,显式安装并检查 GB1 映射文件 |
| playwright-core 1.63.0 | 固定浏览器渲染桥接 | 全局 Node 包,复用系统 Chromium |
| Paged.js 0.4.3 | CSS 分页、命名页、页眉页脚、目录目标页码 | 全局 Node 包,本地加载 |
| KaTeX 0.18.7 | 行内/展示公式及其字体 | 全局 Node 包,本地加载 |
| Mermaid 11.17.2 | 流程、关系等示意图 | 全局 Node 包,固定 strict 模式 |
| Tectonic 0.17.0 | 用户提供的 LaTeX 源文件编译 | amd64/arm64 官方静态发行包,逐架构 SHA-256 校验 |
不需要额外引入 pikepdf、另一套 Python 浏览器、Matplotlib 或 LaTeX 完整发行版。页面/表单/元数据/图像继续复用 pypdf;数据图用静态 SVG、图片或现有 xlsx 图表。数学公式优先 KaTeX,有 LaTeX 模板时才用 Tectonic。
`poppler-data` 提供编码映射,不能用字体包替代。没有映射时即使 PDF 带有中文字体,部分文件仍可能预览缺字;遇到 `Missing language pack` 应更新镜像,不能把有缺字的预览用于 OCR 或当作空白原文。[Debian 包说明](https://packages.debian.org/trixie/poppler-data)
## 构建与离线运行
- 浏览器只从任务目录、skill 素材和固定本地包读取资源;不使用 CDN、不自动下载 Chromium。`NODE_PATH` 保留镜像的全局包目录。
- 构建时实际运行 HTML + KaTeX + Mermaid + Paged.js 自检,不能只验证包能 import。
- `TECTONIC_CACHE_DIR=/opt/tectonic-cache` 在构建时预热 ctex/Fandol、amsmath/amssymb、booktabs/longtable、graphicx、geometry、hyperref,随后验证仅缓存编译和中文文字提取。首次构建需要网络下载 TeX 资源;任务编译始终禁用 shell escape 且只读缓存包。
- 特殊模板、额外文献工具或未预热的 TeX 包可能仍不可用。维护者把真实模板所需资源加入构建预热,再部署镜像;不能在机器人任务里解除缓存限制。
- 原有宋体、黑体、仿宋、楷体、方正小标宋、微软雅黑、苹方 SC、SF Pro、Noto 等字体继续复用。渲染后仍需检查所选字体和字形,安装完成不代表所有模板无差异。
修改 Dockerfile 后必须重新构建并部署,已运行的旧容器不会自动获得新依赖。