Skip to content

zhaixccc/markitdown-enhanced

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

282 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MarkItDown 智能PDF处理增强版 - 项目说明

🎯 项目概述

本项目是基于Microsoft AutoGen团队的MarkItDown库进行的增强版本,主要添加了智能PDF图片处理功能现代化GUI界面。核心特色是通过智能检测PDF中的图片,只对包含图片的PDF调用AI分析,从而实现成本优化和处理效率的双重提升。

🚀 核心功能增强

1. 智能PDF图片处理

🔍 智能检测机制

  • 预检测算法: 使用PyMuPDF快速扫描PDF页面,检测是否包含图片
  • 尺寸过滤: 自动跳过小于50x50像素的装饰性图片
  • 成本优化: 只对包含图片的PDF调用Azure OpenAI API

🖼️ AI图片分析

  • 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%      │
└─────────────────┴──────────────┴──────────────┴──────────┘

2. 现代化GUI界面

🎨 界面设计

  • Modern UI: 使用CustomTkinter构建现代化界面
  • 响应式布局: 自适应窗口大小,支持最小化和最大化
  • 主题支持: 支持浅色和深色主题切换

📊 智能状态显示

  • 双状态栏: 主状态显示 + 详细信息显示
  • 实时反馈: 显示文件信息、处理进度、成本提示
  • 智能提示: 根据文件类型显示相应的处理策略

🔧 功能特性

  • 拖拽支持: 支持文件拖拽到界面
  • 预览功能: 快速预览转换效果(不使用AI)
  • 配置管理: 完整的Azure OpenAI配置界面
  • 结果统计: 详细的转换统计信息

🛠️ 技术实现细节

核心代码修改

1. PDF转换器增强 (_pdf_converter.py)

def _check_pdf_has_images(self, file_stream: BinaryIO) -> bool:
    """智能检测PDF是否包含图片"""
    # 使用PyMuPDF快速扫描
    # 过滤装饰性小图片
    # 早期退出优化

主要改进:

  • 添加了_check_pdf_has_images()方法进行预检测
  • 修改了convert()方法的处理逻辑
  • 集成了LLM图片描述功能

2. 依赖管理优化 (pyproject.toml)

[project.optional-dependencies]
pdf = ["pdfminer.six"]
pdf-images = ["pdfminer.six", "PyMuPDF"]  # 新增

改进内容:

  • 新增pdf-images可选依赖组
  • 支持按需安装PyMuPDF
  • 保持向后兼容性

3. GUI应用 (markitdown_gui.py)

核心特性:

  • 智能PDF处理状态显示
  • Azure OpenAI配置管理
  • 中文提示词自定义
  • 预览和转换功能分离

📱 GUI界面详细介绍

主界面布局

┌─────────────────────────────────────────────────────────┐
│ MarkItDown GUI - 文档转换工具                           │
├─────────────────────────────────────────────────────────┤
│ 📁 文件选择区域                                         │
│   [选择文件] [拖拽文件到此处]                           │
│   支持格式: PDF, DOCX, PPTX, XLSX, 图片等              │
│   💡 智能PDF处理:自动检测图片,节省成本                │
├─────────────────────────────────────────────────────────┤
│ ⚙️ 选项设置                                             │
│   ☑️ 启用插件  ☑️ 智能PDF处理                          │
├─────────────────────────────────────────────────────────┤
│ 🎛️ 操作按钮                                             │
│   [🤖 模型配置] [👁️ 预览] [🔄 转换为Markdown]          │
├─────────────────────────────────────────────────────────┤
│ 📄 输出区域                                             │
│   [转换结果显示区域]                                    │
│                                                         │
├─────────────────────────────────────────────────────────┤
│ 📊 状态栏                                               │
│   主状态: 准备就绪                                      │
│   详细信息: 等待文件选择...                             │
└─────────────────────────────────────────────────────────┘

配置界面

Azure OpenAI配置:

  • API Key输入(密码模式)
  • Endpoint地址配置
  • Deployment名称设置
  • 中文提示词自定义

智能处理选项:

  • 智能PDF处理开关
  • 插件启用选项
  • 自动保存设置

🎯 使用方法

基础使用流程

  1. 启动应用

    python markitdown_gui.py
  2. 配置Azure OpenAI(首次使用)

    • 点击"🤖 模型配置"
    • 填入您的Azure OpenAI配置信息
    • 自定义中文提示词(可选)
  3. 选择文件

    • 点击"选择文件"按钮
    • 或直接拖拽文件到界面
  4. 预览或转换

    • 预览: 快速查看转换效果(不使用AI)
    • 转换: 完整转换,包含AI图片分析
  5. 查看结果

    • 在输出区域查看Markdown结果
    • 查看详细的转换统计信息

智能PDF处理示例

场景1: 无图片PDF

📄 选择文件: 纯文本文档.pdf (2.5MB)
🔍 智能检测: 未发现图片
⚡ 处理结果: 0.05秒完成,节省API成本
📊 输出统计: 5000字符,0张图片

场景2: 图文混合PDF

📄 选择文件: 技术报告.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 OpenAI配置

  1. 在Azure Portal创建OpenAI资源
  2. 部署GPT-4o模型
  3. 获取API Key和Endpoint
  4. 在GUI中配置相关信息

🎉 项目亮点

技术创新

  • 智能成本控制: 业界首创的PDF图片预检测机制
  • 多模态融合: 文本和图片内容的完美结合
  • 用户体验优化: 现代化GUI界面设计

实用价值

  • 成本节省: 最多可节省90%的API调用费用
  • 效率提升: 智能处理减少不必要的等待时间
  • 易用性: 图形界面降低使用门槛

开源贡献

  • 向后兼容: 完全兼容原版MarkItDown功能
  • 模块化设计: 可选依赖,按需安装
  • 文档完善: 详细的使用说明和配置指南

🔍 详细功能说明

GUI界面组件详解

1. 文件选择区域

  • 选择文件按钮: 打开文件选择对话框
  • 拖拽区域: 支持直接拖拽文件到界面
  • 文件信息显示: 显示文件名、大小、类型
  • 格式提示: 显示支持的文件格式列表

2. 智能处理选项

  • 智能PDF处理: 启用/禁用PDF图片检测
  • 启用插件: 支持第三方插件扩展
  • 处理策略提示: 根据文件类型显示处理建议

3. 操作按钮区

  • 模型配置: 打开Azure OpenAI配置窗口
  • 预览: 快速预览转换效果(不使用AI)
  • 转换: 完整转换,包含AI分析

4. 输出显示区

  • Markdown预览: 实时显示转换结果
  • 语法高亮: 支持Markdown语法高亮显示
  • 滚动查看: 支持大文档的滚动浏览

5. 状态信息栏

  • 主状态: 显示当前操作状态
  • 详细信息: 显示处理进度和成本信息
  • 统计数据: 显示转换结果统计

智能处理流程图

文件选择 → 类型检测 → 智能决策 → 处理执行 → 结果展示
    ↓         ↓         ↓         ↓         ↓
  PDF文件   图片检测   AI分析?   API调用   Markdown
  Word文档  格式识别   基础转换   本地处理  + 图片描述
  图片文件  内容分析   成本评估   状态更新  + 统计信息

配置文件说明

markitdown_gui_config.json

{
  "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                 // 预览模式
}

🚨 常见问题解答

Q1: 为什么选择智能PDF处理?

A: 传统方案对所有PDF都调用AI分析,即使是纯文本PDF也会产生API费用。我们的智能检测可以:

  • 节省90%的不必要API调用
  • 提高处理速度
  • 降低使用成本

Q2: 如何获取Azure OpenAI配置?

A:

  1. 访问Azure Portal创建OpenAI资源
  2. 在"Keys and Endpoint"页面获取API Key和Endpoint
  3. 在"Model deployments"页面部署GPT-4o模型
  4. 记录Deployment名称用于配置

Q3: 支持哪些文件格式?

A:

  • 文档: PDF, DOCX, PPTX, XLSX, TXT, HTML
  • 图片: JPG, PNG, GIF, BMP, TIFF
  • 音频: MP3, WAV, M4A(需要额外配置)
  • 网页: URL链接

Q4: 如何自定义图片描述?

A: 在模型配置中可以自定义提示词,例如:

  • 技术文档:专注描述架构图和流程图
  • 学术论文:重点描述数据图表和实验结果
  • 商业报告:强调关键数据和趋势分析

Q5: 处理大文件时如何优化?

A:

  • 启用智能PDF处理减少不必要的AI调用
  • 使用预览功能快速查看效果
  • 对于超大文件,建议分批处理

🔄 版本更新记录

v1.1.0 (当前版本)

  • ✅ 新增智能PDF图片检测功能
  • ✅ 添加现代化GUI界面
  • ✅ 集成Azure OpenAI支持
  • ✅ 支持中文提示词自定义
  • ✅ 添加预览功能
  • ✅ 优化成本控制机制

计划中的功能

  • 🔄 批量文件处理
  • 🔄 更多AI模型支持
  • 🔄 云端配置同步
  • 🔄 处理历史记录
  • 🔄 导出格式扩展

📞 技术支持

如有问题或建议,请通过以下方式联系:

  • GitHub Issues: 提交bug报告和功能建议
  • 项目文档: 查看详细的技术文档
  • 社区讨论: 参与开源社区交流

让文档转换更智能,让AI使用更经济! 🚀

About

MarkItDown智能PDF处理增强版 - 智能检测PDF图片并AI分析

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages