本项目是基于Microsoft AutoGen团队的MarkItDown库进行的增强版本,主要添加了智能PDF图片处理功能和现代化GUI界面。核心特色是通过智能检测PDF中的图片,只对包含图片的PDF调用AI分析,从而实现成本优化和处理效率的双重提升。
- 预检测算法: 使用PyMuPDF快速扫描PDF页面,检测是否包含图片
- 尺寸过滤: 自动跳过小于50x50像素的装饰性图片
- 成本优化: 只对包含图片的PDF调用Azure OpenAI API
- Azure OpenAI集成: 使用GPT-4o模型对图片进行详细描述
- 中文优化: 支持自定义中文提示词,生成准确的中文描述
- 多模态处理: 将图片描述与文本内容完美结合
处理场景对比:
┌─────────────────┬──────────────┬──────────────┬──────────┐
│ 文档类型 │ 传统方式 │ 智能方式 │ 节省效果 │
├─────────────────┼──────────────┼──────────────┼──────────┤
│ 无图片PDF(100个)│ 100次API调用 │ 0次API调用 │ 100% │
│ 有图片PDF(10个) │ 10次API调用 │ 10次API调用 │ 0% │
│ 混合场景(90+10) │ 100次API调用 │ 10次API调用 │ 90% │
└─────────────────┴──────────────┴──────────────┴──────────┘
- Modern UI: 使用CustomTkinter构建现代化界面
- 响应式布局: 自适应窗口大小,支持最小化和最大化
- 主题支持: 支持浅色和深色主题切换
- 双状态栏: 主状态显示 + 详细信息显示
- 实时反馈: 显示文件信息、处理进度、成本提示
- 智能提示: 根据文件类型显示相应的处理策略
- 拖拽支持: 支持文件拖拽到界面
- 预览功能: 快速预览转换效果(不使用AI)
- 配置管理: 完整的Azure OpenAI配置界面
- 结果统计: 详细的转换统计信息
def _check_pdf_has_images(self, file_stream: BinaryIO) -> bool:
"""智能检测PDF是否包含图片"""
# 使用PyMuPDF快速扫描
# 过滤装饰性小图片
# 早期退出优化主要改进:
- 添加了
_check_pdf_has_images()方法进行预检测 - 修改了
convert()方法的处理逻辑 - 集成了LLM图片描述功能
[project.optional-dependencies]
pdf = ["pdfminer.six"]
pdf-images = ["pdfminer.six", "PyMuPDF"] # 新增改进内容:
- 新增
pdf-images可选依赖组 - 支持按需安装PyMuPDF
- 保持向后兼容性
核心特性:
- 智能PDF处理状态显示
- Azure OpenAI配置管理
- 中文提示词自定义
- 预览和转换功能分离
┌─────────────────────────────────────────────────────────┐
│ MarkItDown GUI - 文档转换工具 │
├─────────────────────────────────────────────────────────┤
│ 📁 文件选择区域 │
│ [选择文件] [拖拽文件到此处] │
│ 支持格式: PDF, DOCX, PPTX, XLSX, 图片等 │
│ 💡 智能PDF处理:自动检测图片,节省成本 │
├─────────────────────────────────────────────────────────┤
│ ⚙️ 选项设置 │
│ ☑️ 启用插件 ☑️ 智能PDF处理 │
├─────────────────────────────────────────────────────────┤
│ 🎛️ 操作按钮 │
│ [🤖 模型配置] [👁️ 预览] [🔄 转换为Markdown] │
├─────────────────────────────────────────────────────────┤
│ 📄 输出区域 │
│ [转换结果显示区域] │
│ │
├─────────────────────────────────────────────────────────┤
│ 📊 状态栏 │
│ 主状态: 准备就绪 │
│ 详细信息: 等待文件选择... │
└─────────────────────────────────────────────────────────┘
Azure OpenAI配置:
- API Key输入(密码模式)
- Endpoint地址配置
- Deployment名称设置
- 中文提示词自定义
智能处理选项:
- 智能PDF处理开关
- 插件启用选项
- 自动保存设置
-
启动应用
python markitdown_gui.py
-
配置Azure OpenAI(首次使用)
- 点击"🤖 模型配置"
- 填入您的Azure OpenAI配置信息
- 自定义中文提示词(可选)
-
选择文件
- 点击"选择文件"按钮
- 或直接拖拽文件到界面
-
预览或转换
- 预览: 快速查看转换效果(不使用AI)
- 转换: 完整转换,包含AI图片分析
-
查看结果
- 在输出区域查看Markdown结果
- 查看详细的转换统计信息
📄 选择文件: 纯文本文档.pdf (2.5MB)
🔍 智能检测: 未发现图片
⚡ 处理结果: 0.05秒完成,节省API成本
📊 输出统计: 5000字符,0张图片
📄 选择文件: 技术报告.pdf (8.2MB)
🔍 智能检测: 发现6张图片
🤖 AI分析: 使用GPT-4o分析图片内容
📊 输出统计: 12000字符,6张图片描述
⏱️ 处理时间: 45秒(包含AI分析)
默认提示词:
"请用中文详细描述这张图片的内容。包括:
1)图片中的所有文字内容
2)图表、表格、数据信息
3)图片的整体布局和设计
4)任何重要的视觉元素"
自定义示例:
"请专注描述这张图片中的技术架构图,
包括组件名称、连接关系和数据流向。"
# 对于大量PDF文件的处理建议
files = ["doc1.pdf", "doc2.pdf", "doc3.pdf"]
for file in files:
# GUI会自动检测每个文件是否需要AI分析
# 只对包含图片的文件调用API
result = process_file(file)- Python 3.10+
- Windows/Linux/macOS
# 1. 克隆项目
git clone https://github.com/zhaixccc/markitdown-enhanced.git
cd markitdown-enhanced
# 2. 安装依赖
pip install -e packages/markitdown[all]
pip install customtkinter openai
# 3. 运行GUI
python markitdown_gui.py- 在Azure Portal创建OpenAI资源
- 部署GPT-4o模型
- 获取API Key和Endpoint
- 在GUI中配置相关信息
- 智能成本控制: 业界首创的PDF图片预检测机制
- 多模态融合: 文本和图片内容的完美结合
- 用户体验优化: 现代化GUI界面设计
- 成本节省: 最多可节省90%的API调用费用
- 效率提升: 智能处理减少不必要的等待时间
- 易用性: 图形界面降低使用门槛
- 向后兼容: 完全兼容原版MarkItDown功能
- 模块化设计: 可选依赖,按需安装
- 文档完善: 详细的使用说明和配置指南
- 选择文件按钮: 打开文件选择对话框
- 拖拽区域: 支持直接拖拽文件到界面
- 文件信息显示: 显示文件名、大小、类型
- 格式提示: 显示支持的文件格式列表
- 智能PDF处理: 启用/禁用PDF图片检测
- 启用插件: 支持第三方插件扩展
- 处理策略提示: 根据文件类型显示处理建议
- 模型配置: 打开Azure OpenAI配置窗口
- 预览: 快速预览转换效果(不使用AI)
- 转换: 完整转换,包含AI分析
- Markdown预览: 实时显示转换结果
- 语法高亮: 支持Markdown语法高亮显示
- 滚动查看: 支持大文档的滚动浏览
- 主状态: 显示当前操作状态
- 详细信息: 显示处理进度和成本信息
- 统计数据: 显示转换结果统计
文件选择 → 类型检测 → 智能决策 → 处理执行 → 结果展示
↓ ↓ ↓ ↓ ↓
PDF文件 图片检测 AI分析? API调用 Markdown
Word文档 格式识别 基础转换 本地处理 + 图片描述
图片文件 内容分析 成本评估 状态更新 + 统计信息
{
"enable_plugins": true, // 启用插件
"docintel_endpoint": "", // Document Intelligence端点
"azure_openai_endpoint": "...", // Azure OpenAI端点
"azure_openai_api_key": "...", // API密钥
"azure_openai_deployment": "...", // 部署名称
"azure_openai_api_version": "...", // API版本
"llm_model": "gpt-4o", // 模型名称
"use_chinese_prompt": true, // 使用中文提示词
"custom_prompt": "...", // 自定义提示词
"smart_pdf_processing": true, // 智能PDF处理
"auto_save_results": false, // 自动保存结果
"preview_mode": true // 预览模式
}A: 传统方案对所有PDF都调用AI分析,即使是纯文本PDF也会产生API费用。我们的智能检测可以:
- 节省90%的不必要API调用
- 提高处理速度
- 降低使用成本
A:
- 访问Azure Portal创建OpenAI资源
- 在"Keys and Endpoint"页面获取API Key和Endpoint
- 在"Model deployments"页面部署GPT-4o模型
- 记录Deployment名称用于配置
A:
- 文档: PDF, DOCX, PPTX, XLSX, TXT, HTML
- 图片: JPG, PNG, GIF, BMP, TIFF
- 音频: MP3, WAV, M4A(需要额外配置)
- 网页: URL链接
A: 在模型配置中可以自定义提示词,例如:
- 技术文档:专注描述架构图和流程图
- 学术论文:重点描述数据图表和实验结果
- 商业报告:强调关键数据和趋势分析
A:
- 启用智能PDF处理减少不必要的AI调用
- 使用预览功能快速查看效果
- 对于超大文件,建议分批处理
- ✅ 新增智能PDF图片检测功能
- ✅ 添加现代化GUI界面
- ✅ 集成Azure OpenAI支持
- ✅ 支持中文提示词自定义
- ✅ 添加预览功能
- ✅ 优化成本控制机制
- 🔄 批量文件处理
- 🔄 更多AI模型支持
- 🔄 云端配置同步
- 🔄 处理历史记录
- 🔄 导出格式扩展
如有问题或建议,请通过以下方式联系:
- GitHub Issues: 提交bug报告和功能建议
- 项目文档: 查看详细的技术文档
- 社区讨论: 参与开源社区交流
让文档转换更智能,让AI使用更经济! 🚀