用途
PDF Reader 是一个用于读取 PDF 文件并抽取文本内容的技能,可将抽取结果转换为 Markdown 格式。它适用于需要读取 PDF 文档的场景,并支持处理表格和多页文档。
主要能力
- 文本提取(全页)
- 表格的 Markdown 化
- 保留页码
- 结构化输出
支持的功能标注为:
✅ 文本提取(全页) ✅ 表格的 Markdown 化 ✅ 保留页码 ✅ 结构化输出
注意:图像中的文本提取(不支持 OCR)。复杂版式会被简化。
使用方式
快速开始
基本用法(在 WSL 环境执行 Python 脚本):
wsl python3 scripts/read_pdf.py "/mnt/c/path/to/file.pdf"
保存为 Markdown 格式:
- 使用脚本抽取文本
- 使用 Write 工具保存为 .md 文件
前置条件
需要 pdfplumber 包:
wsl pip3 install pdfplumber
使用示例
示例1:读取 PDF 文件并显示内容
用户:“读取 C:\Users\keita\repos\guideline.pdf” 助手:
- 将 Windows 路径转换为 WSL 路径:/mnt/c/Users/keita/repos/guideline.pdf
- 执行 wsl python3 scripts/read_pdf.py
- 以 Markdown 格式显示抽取出的文本
示例2:将 PDF 转换为 Markdown 并保存
用户:“将 ガイドライン.pdf 转换为 Markdown 并保存” 助手:
- 使用 scripts/read_pdf.py 抽取文本
- 以 Markdown 格式结构化(按页添加标题,包含表格)
- 使用 Write 工具保存为 ガイドライン.md
- 报告保存完成
工作流
单文件读取:
- 用户指定 PDF 文件路径
- 将 Windows 路径转换为 WSL 路径格式(C:\ → /mnt/c/)
- 执行 wsl python3 scripts/read_pdf.py
- 以 Markdown 格式显示或保存抽取的文本
多文件批量处理:
- 使用 Glob 搜索 .pdf 文件
- 对每个文件执行脚本
- 汇总报告结果
输出格式
Markdown 结构示例:
# [PDF文件名]
**Total Pages:** 10
---
## Page 1
[第1页文本内容]
### Tables
**Table 1:**
| 列1 | 列2 | 列3 |
| --- | --- | --- |
| 数据1 | 数据2 | 数据3 |
---
## Page 2
[第2页文本内容]
---
脚本详情
Python 脚本位于 scripts/read_pdf.py。
主要功能:
- 逐页文本抽取
- 表格的 Markdown 化
- 多页结构化
- 错误处理
用法:
python scripts/read_pdf.py <file_path>
适用场景
- 需要读取 PDF 文档时
- 需要将 PDF 内容转换为 Markdown 以便后续处理或保存
- 需要提取 PDF 中的表格内容
- 需要处理包含多页的 PDF 文档
限制
- 无法从扫描版 PDF(仅图像)中提取文本
- 不包含 OCR 功能
- 复杂版式会被简化
- 字体信息、颜色等样式会丢失
- 嵌入对象不会被提取
故障排查
未安装 pdfplumber:
wsl pip3 install pdfplumber
无法抽取文本:
- PDF 可能是扫描图像(需要 OCR)
- PDF 可能已加密
- PDF 可能没有文本层
出现乱码:
# 确认日文支持
wsl locale
# 确认包含 UTF-8
内存不足错误:
对于较大的 PDF 文件,可考虑分页处理。
路径转换
从 Windows 路径转换到 WSL 路径:
C:\Users\... → /mnt/c/Users/...
D:\Projects\... → /mnt/d/Projects/...
将反斜杠 \ 转换为斜杠 /。
相关工具
- PyPDF2: 轻量替代库
- pdfminer.six: 需要更精细控制时使用
- Camelot: 专用于表格提取
- OCRmyPDF: 为扫描版 PDF 应用 OCR
高级用法
仅抽取指定页面:
可修改脚本,使用 pdf.pages[0:5] 这样的切片。
仅抽取表格:
仅使用脚本内的 extract_tables() 部分。
需要 OCR 时:
结合使用 pytesseract 与 pdf2image(建议作为单独技能创建)。
版本历史
v1.0.0 (2026-01-06): 初始发布
- 基本文本抽取功能
- 支持表格 Markdown 化
- 在 WSL 环境运行
- 按页结构化