一个强大的文档解析工具,支持将 PDF、Word、PowerPoint、XMind、Excel 等多种格式的文档转换为 Markdown,并使用 AI 自动分析文档中的图片内容。
- 📄 多格式支持:支持 PDF、DOCX、PPTX、XMind、XLSX、TXT 等多种文档格式
- 🖼️ 图片分析:自动提取文档中的图片,并使用 AI(通义千问 Qwen-VL)进行详细分析
- 🔄 智能转换:保持文档结构的同时,将内容转换为易于阅读和编辑的 Markdown 格式
- 🎯 精确定位:通过 XML 解析等技术,实现图片在文档中位置的精确追踪
- 🌐 双模式使用:支持命令行和 Web 界面两种使用方式
- 📊 实时进度:Web 界面支持实时查看处理进度和日志
- 🧹 自动清理:自动管理临时文件,避免磁盘空间浪费
# 项目已在此目录,可直接使用
cd /path/to/projectpip install -r requirements.txt核心依赖:
openpyxl- Excel文件处理python-docx- Word文档处理python-pptx- PowerPoint演示文稿处理pdfplumber- PDF文本提取pdf2image- PDF图片提取openai- 多模态LLM调用Pillow- 图片处理poppler-utils- PDF图片提取工具(必需)
Windows:
- 下载 Poppler for Windows
- 解压到
C:\poppler\目录 - 添加
C:\poppler\bin到PATH环境变量
个人倾向于在控制台使用命令安装
# 1. 设置允许执行脚本 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # 2. 下载并安装 Scoop irm get.scoop.sh | iex # 3. 添加扩展库 (extras bucket 包含我们要的工具) scoop bucket add extras # 4. 安装 Poppler scoop install poppler
macOS:
brew install popplerLinux:
sudo apt-get install poppler-utils方法1:环境变量(推荐)
设置环境变量 QWEN_VL:
# Windows (PowerShell)
$env:QWEN_VL = "您的通义千问API密钥"
# macOS/Linux
export QWEN_VL="您的通义千问API密钥"方法2:直接修改代码(不推荐)
在 write_file_excel.py 顶部修改:
QWEN_VL_CONFIG = {
"api_key": "您的通义千问API密钥", # ⚠️ 不推荐,建议使用环境变量
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"model": "qwen-vl-plus", # 或 qwen-vl-max
}- 启动服务器:
cd web_ui
python server.py-
在浏览器中访问:http://localhost:8000
-
上传文档文件,输入 API Key(可选)
-
等待处理完成,点击下载结果
# 解析单个文件
python file_parsing.py <文件路径> [输出目录]
# 示例
python file_parsing.py document.pdf
python file_parsing.py document.docx ./output参考安装部分的 API Key 设置, 或者在使用 Web 界面上传文件时直接输入 API Key。
| 格式 | 扩展名 | 文本提取 | 图片提取 | 图片分析 | 备注 |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | 需要 Poppler 进行图片提取 | ||
| Word | .docx | ✓ | ✓ | ✓ | 通过 XML 解析精确追踪图片位置 |
| PowerPoint | .pptx | ✓ | ✓ | ✓ | 按幻灯片逐个提取 |
| XMind | .xmind | ✓ | ✓ | ✓ | 基于节点结构提取 |
| Excel | .xlsx | ✓ | ✗ | ✗ | 以制表符分隔的格式提取 |
| 文本 | .txt | ✓ | ✗ | ✗ | UTF-8 编码 |
python file_parsing.py presentation.pdf输出:presentation.md(包含提取的图片和 AI 分析结果)
python file_parsing.py report.docx ./documents输出:./documents/report.md
- 启动:
cd web_ui && python server.py - 打开浏览器访问 http://localhost:8000
- 上传多个文件
- 查看每个文件的处理进度
- 单独下载每个结果文件
本工具的处理流程如下:
- 图片提取:从原始文档中提取所有嵌入的图片到临时目录
- 格式转换:将文档内容转换为 Markdown 格式,并在图片原位置插入占位符
- AI 分析:使用 Qwen-VL 模型对每张图片进行详细分析
- 占位符替换:将图片占位符替换为 AI 生成的图片描述
- 保存结果:输出最终的 Markdown 文件
处理后的 Markdown 文件包含:
- 原始文本内容:保持原有的结构和格式
- 图片描述:AI 生成的详细图片内容描述,格式如下:
================================
**图片描述:**
这是 AI 对图片内容的详细描述...
================================
FileParsering/
├── file_parsing.py # 主解析程序
├── web_ui/ # Web 界面
│ ├── server.py # HTTP 服务器
│ ├── index.html # 前端页面
│ ├── script.js # 前端脚本
│ ├── style.css # 样式文件
│ ├── uploads/ # 上传文件目录
│ └── outputs/ # 输出文件目录
├── CLAUDE.md # Claude 代码指导
└── README.md # 项目说明(本文件)
- 文档读取模块:不同格式的文档内容提取
- 图片提取模块:从文档中提取嵌入的图片
- 格式转换模块:转换为带占位符的 Markdown
- AI 分析模块:使用 Qwen-VL 分析图片
- 占位符替换模块:将占位符替换为描述
- 主处理逻辑:协调整个处理流程
- 文件上传:处理 multipart 文件上传
- 后台处理:在独立线程中运行解析任务
- 实时通信:提供状态查询和文件下载 API
- 任务管理:管理处理任务的状态和日志
- API Key:确保正确配置 Qwen-VL API Key,否则图片分析功能将无法使用
- 临时文件:所有提取的图片会存储在临时目录中,程序结束后会自动清理
- 大文件处理:处理大型文档(特别是 PDF)可能需要较长时间
- 编码问题:确保系统支持 UTF-8 编码,避免中文文件名或内容出现乱码
- 权限问题:确保对输出目录有写权限
原因:未安装 Poppler 或未配置 PATH 环境变量 解决:
# Windows:从 http://blog.alivate.com.au/poppler-windows/ 下载
# macOS:
brew install poppler
# Linux:
sudo apt-get install poppler-utils原因:API Key 配置错误或网络问题 解决:
- 检查 API Key 是否正确:
echo $QWEN_V - 测试网络连接:
curl -H "Authorization: Bearer YOUR_KEY" https://dashscope.aliyuncs.com/compatible-mode/v1/models
原因:系统编码不支持或文件本身编码问题 解决:确保文件使用 UTF-8 编码保存
原因:端口被占用或防火墙阻止 解决:
- 检查端口:
netstat -an | grep 8000 - 更换端口:修改
web_ui/server.py中的PORT变量
本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request!
感谢使用文件解析工具! 🎉