name: pdf_to_markdown
description: Use when user requests to convert PDF files to Markdown format. Triggers include: any mention of "PDF to markdown", "convert pdf", "extract text from pdf", "pdf conversion", or requests to transform PDF documents into structured markdown with preserved formatting. Also use when processing PDF reports, articles, or documents for markdown-based workflows.
PDF转Markdown技能
概述
本技能提供将PDF文档转换为结构化Markdown格式的功能,支持文本提取、格式保留和内容重组。
触发条件
当用户需要处理以下PDF转换任务时使用:
- 将PDF文档转换为Markdown格式
- 从PDF中提取文本内容
- 处理PDF报告、论文、文章
- 为内容分析或重新格式化准备PDF内容
- 将PDF集成到Markdown工作流中
触发关键词:pdf转markdown、转换pdf、提取pdf文本、pdf转换、pdf处理、pdf文档转换
执行步骤
第1步:确认PDF文件
-
询问用户PDF文件的位置或提供方式:
-
确认PDF文件的基本信息:
- 文件大小(避免处理过大的文件)
- 页面数量
- 内容类型(纯文本、扫描件、表格等)
第2步:选择转换模式
-
根据PDF内容类型选择适当的转换策略:
- 文本型PDF:直接提取文本,保留格式
- 扫描型PDF:需要OCR识别(如果支持)
- 表格型PDF:特殊处理表格结构
- 混合型PDF:综合处理策略
-
询问用户转换偏好:
- 是否保留原始格式(标题、列表、粗体等)
- 是否提取图片和图表
- 是否生成目录结构
- 输出详细程度
第3步:执行转换
-
使用适当的工具处理PDF:
- 对于文本型PDF,使用pdfminer或PyPDF2
- 对于需要OCR的PDF,使用pytesseract(如果可用)
- 对于表格,使用tabula-py或camelot
-
转换过程:
- 逐页提取内容
- 识别文档结构(标题、段落、列表)
- 转换格式标记(粗体、斜体、链接)
- 处理特殊元素(表格、代码块)
第4步:格式化和清理
-
清理转换后的Markdown:
- 修复换行和空格问题
- 确保标题层次正确
- 标准化列表格式
- 处理特殊字符
-
增强可读性:
- 添加适当的空白行
- 确保代码块正确标记
- 处理长行断行
第5步:输出和验证
-
生成最终Markdown文件:
- 包含元信息(源文件、转换日期)
- 提供转换摘要
- 标记可能的转换问题
-
验证转换质量:
输出格式
转换结果应以清晰的Markdown格式输出,包含:
- 元信息:源PDF信息、转换时间、页面数
- 内容结构:保留原始文档的层次结构
- 格式标记:适当的Markdown格式(标题、列表、代码块等)
- 转换摘要:处理统计和注意事项
示例对话
示例1:简单PDF转换
用户:帮我把这个PDF文件转换成Markdown格式
Agent:我将使用PDF转Markdown技能为您处理。首先,请提供PDF文件:
- 文件路径是什么?
- 这是一个什么类型的PDF?(如:报告、文章、手册)
- 您希望保留哪些格式?(标题、列表、表格等)
用户:文件在documents/report.pdf,是一份技术报告,希望保留标题和列表格式
Agent:收到。我将处理documents/report.pdf,提取文本内容并转换为Markdown格式,保留标题结构和列表格式。开始转换...
(执行转换过程)
Agent:转换完成!共处理15页,提取了所有文本内容。生成的Markdown保留了:
- 3级标题结构
- 所有项目列表和编号列表
- 粗体和斜体格式
- 代码块标记
这是转换后的Markdown内容...
示例2:带表格的PDF转换
用户:我有一个包含数据表格的PDF,需要转换成Markdown
Agent:对于包含表格的PDF,我需要特殊处理。请确认:
- 表格是简单的文本表格还是复杂格式?
- 是否需要保留表格结构?
- 表格数量有多少?
用户:有3个简单的数据表格,需要保留表格结构
Agent:我将使用表格提取工具处理这些表格。开始转换...
常见错误处理
- 加密PDF:提示用户提供解密密码或使用未加密版本
- 扫描PDF:建议使用OCR工具或提供文本版本
- 损坏PDF:尝试修复或建议重新获取文件
- 超大文件:建议分页处理或优化内存使用
- 复杂格式:标记无法完全转换的部分
最佳实践
- 预处理检查:先检查PDF属性,选择合适的工具
- 渐进式转换:先转换少量页面验证效果
- 保留原始结构:尽量保持文档的原始组织
- 清晰标记问题:明确标注转换中遇到的问题
- 提供转换摘要:让用户了解转换质量和限制
注意事项
- 转换质量取决于PDF的原始质量
- 扫描件需要OCR支持,准确率可能有限
- 复杂布局(如多栏、图文混排)可能无法完美转换
- 建议先转换小样本验证效果
- 对于重要文档,建议人工校对转换结果
技术依赖
本技能可能需要以下Python库:
- PyPDF2 / pdfminer.six:文本提取
- pytesseract:OCR功能(可选)
- tabula-py / camelot:表格提取
- markdown:格式处理
请确保这些库已安装或提供替代方案。