| name | markitdown-converter |
| description | Convert documents (PDF, Word, Excel, PPT, images, audio) to Markdown using Microsoft MarkItDown. Full workflow: format detection, conversion, OCR, LLM image description, batch processing. Use when user mentions document conversion, PDF to markdown, Word to markdown, OCR, 文档转换, PDF转Markdown, Word转换, 文件格式转换. |
| trigger-keywords | ["markdown转换工具","文件转markdown工具","markitdown","文档转换","文件转换","PDF转markdown","Word转markdown","Excel转markdown","PPT转markdown","图片转markdown","音频转markdown","批量转换","OCR识别","文档格式转换","文件格式转换","文本提取"] |
MarkItDown转换技能
基于Microsoft MarkItDown的文档转换系统,为OpenCode提供强大的文档处理能力。
核心功能
- 多格式支持:PDF、Word (.docx)、Excel (.xlsx)、PowerPoint (.pptx)、图片、音频、HTML、文本等格式
- 高质量转换:保留文档结构、表格、列表、链接等Markdown元素
- 高级功能集成:
- OCR图像文字识别:提取图片和PDF中的文字
- Azure Document Intelligence:云端文档分析服务
- LLM图像描述:使用GPT-4o等模型描述图片内容
- 音频转录:提取音频文件中的文字
- 插件系统:支持第三方插件扩展
- 批量处理:支持文件夹批量转换和ZIP文件处理
- 配置灵活:支持命令行参数和Python API两种使用方式
技术特性
自动检测规则
当以下情况出现时自动触发文档转换:
- 文件路径检测:消息中包含
.pdf、.docx、.xlsx、.pptx、.jpg、.png等扩展名
- 转换关键词:用户明确请求文档转换、格式转换、Markdown转换
- 上下文感知:在讨论文档处理、文本提取相关内容时自动提供转换服务
使用方法
基本文件转换
import sys
sys.path.insert(0, "SKILL_DIR/scripts")
from markitdown_wrapper import convert_file
result = convert_file("document.pdf", output_path="document.md")
from markitdown_wrapper import batch_convert
batch_convert("input_folder/", "output_folder/")
命令行使用
python scripts/markitdown_wrapper.py convert document.pdf -o document.md
python scripts/markitdown_wrapper.py batch input_folder/ output_folder/
python scripts/markitdown_wrapper.py convert document.pdf --use-ocr --llm-model gpt-4o
高级功能
from markitdown_wrapper import MarkItDownWrapper
wrapper = MarkItDownWrapper(
enable_plugins=True,
use_ocr=True,
llm_model="gpt-4o",
docintel_endpoint="https://..."
)
result = wrapper.convert("document_with_images.pdf", output_path="output.md")
支持的文件格式
| 格式 | 扩展名 | 特性 |
|---|
| PDF | .pdf | 文字提取、OCR图像识别 |
| Word文档 | .docx | 保留样式、表格、列表 |
| Excel表格 | .xlsx, .xls | 表格数据转换 |
| PowerPoint | .pptx | 幻灯片内容提取 |
| 图片文件 | .jpg, .png, .gif, .bmp | OCR文字识别、LLM图像描述 |
| 音频文件 | .mp3, .wav | 语音转文字 |
| HTML网页 | .html | 网页内容提取 |
| 文本文件 | .txt, .csv, .json, .xml | 直接转换 |
| ZIP压缩包 | .zip | 批量处理内部文件 |
| YouTube视频 | URL | 字幕提取 |
配置说明
基本依赖安装
pip install 'markitdown[all]'
可选依赖(按需安装)
pip install markitdown
pip install 'markitdown[pdf]'
pip install 'markitdown[docx]'
pip install 'markitdown[pptx]'
pip install 'markitdown[xlsx]'
pip install 'markitdown[ocr]'
pip install 'markitdown[audio]'
插件安装
pip install markitdown-ocr
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=True)
示例输出
[MarkItDown转换结果] (耗时3.2秒 | 文件: document.pdf)
------------------------------------------------------------
# 示例文档标题
这是一个示例PDF文档转换为Markdown的展示。
## 第一章 介绍
MarkItDown能够很好地保留文档的结构:
1. 列表项一
2. 列表项二
3. 列表项三
### 表格示例
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 数据1 | 数据2 | 数据3 |
| 数据4 | 数据5 | 数据6 |
**重要提示**:转换结果保持了原始文档的层级结构和格式元素。
------------------------------------------------------------
高级功能详解
OCR图像文字识别
from markitdown_wrapper import convert_with_ocr
result = convert_with_ocr(
"scanned_document.pdf",
llm_client=OpenAI(),
llm_model="gpt-4o"
)
Azure Document Intelligence
result = convert_with_azure(
"document.pdf",
endpoint="https://your-endpoint.cognitiveservices.azure.com/",
api_key="your-api-key"
)
批量处理
from markitdown_wrapper import BatchProcessor
processor = BatchProcessor(
input_dir="documents/",
output_dir="markdown/",
recursive=True,
file_patterns=["*.pdf", "*.docx"]
)
processor.process()
错误处理
系统会优雅处理各种错误情况:
- 文件不存在或无法访问
- 不支持的格式
- 转换过程中断
- 依赖缺失
- API调用失败
所有错误都会提供友好的中文提示和解决方案建议。
性能优化
- 缓存系统:相同文件的转换结果可选择性缓存
- 批量处理:支持文件夹批量转换,减少重复操作
- 并发支持:批量处理时可选择并行转换
- 进度显示:显示转换进度和预估时间
集成提示
本技能设计为与OpenCode无缝集成:
- 自动检测对话中的文档转换需求
- 与现有工具和技能协同工作
- 保持OpenCode的对话风格和用户体验
- 提供有价值的文档处理能力增强
注意事项
- 文件大小:大文件转换可能需要较长时间
- OCR精度:图像文字识别精度取决于图片质量
- 格式兼容:某些复杂格式可能无法完美转换
- 依赖管理:建议使用虚拟环境管理依赖