# worddiff-已作废 **Repository Path**: nt_qinfei/worddiff ## Basic Information - **Project Name**: worddiff-已作废 - **Description**: 两个word 文档 比较差异,输出一份word 表格报告。 这是一个特定需求。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-02 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Word文档差异比较工具 一个基于Python的Word文档差异比较工具,提供GUI、CLI和Web三种使用方式。支持比较两个Word文档的差异,并生成包含详细差异表格的新Word文档。 ## 功能特点 - 📄 支持.docx格式的Word文档比较 - 🖥️ 三种使用方式:GUI图形界面、命令行、Web界面 - 🌐 Web版本支持文件上传和在线处理 - 📊 生成包含差异表格的Word报告 - 🎨 彩色标注差异类型: - 绿色:内容相同 - 红色:删除内容 - 蓝色:新增内容 - 黄色:修改内容 - 📈 显示段落号和详细差异对比 ## 环境要求 - Python 3.6+ - Git(用于默认 docx-compare 引擎生成差异文本;未安装也可生成文本与脚本) - Windows操作系统(用于打包exe) ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 方式1:命令行版本(推荐,适用于所有平台) ```bash # 默认(docx-compare 风格):导出文本 + 生成 git 差异脚本 python word_differ_cli.py 文档1.docx 文档2.docx python word_differ_cli.py 文档1.docx 文档2.docx --diff-dir mydiff # 使用内置报告引擎(生成 Word 报告) python word_differ_cli.py 文档1.docx 文档2.docx --engine builtin -o 我的报告.docx # 可选对齐参数(影响内置引擎细粒度对比) python word_differ_cli.py 文档1.docx 文档2.docx \ --ignore-space --ignore-case --ignore-punct # 显示空白变更(空格/制表符/空段落) python word_differ_cli.py 文档1.docx 文档2.docx --engine builtin --show-whitespace -o 报告_含空白差异.docx # 启用修订标识(Track Changes)输出 python word_differ_cli.py 文档1.docx 文档2.docx --engine builtin --tracked -o 报告_修订模式.docx # 查看帮助 python word_differ_cli.py -h ``` #### CLI 用法速查 - 基本参数: - `doc1 doc2`:两个 .docx 的路径(必填)。 - `--engine {docx-compare|builtin}`:比较引擎,默认 `docx-compare`;`builtin` 生成 Word 报告。 - `-o, --output`:当 `--engine builtin` 时报告输出路径,默认 `差异报告.docx`。 - `--diff-dir`:当 `--engine docx-compare` 时输出目录,默认 `diff`。 - 可见性与样式: - `--show-whitespace`:将纯空白改动(空格/制表符/空段落)计为差异并着色显示(内置报告)。 - `--tracked`:启用 Word 修订标识(新增/删除以修订形式出现)。 - 匹配/对齐策略(影响对齐与片段产生,不改变原文): - `--ignore-space`:忽略空白差异(段内 token 对比时将空白当作相等)。 - `--ignore-case`:忽略大小写。 - `--ignore-punct`:忽略常见中英文标点(用于段落级对齐)。 提示:需要“显示空白差异”时,请勿同时加 `--ignore-space`,否则空白改动会在匹配阶段被合并,无法在报告中着色显示。 ### 方式2:GUI图形界面(仅Windows) ```bash # 运行GUI程序 python word_differ.py ``` 使用步骤: 1. 运行程序后,点击"选择文件"按钮选择第一个Word文档 2. 点击第二个"选择文件"按钮选择第二个Word文档 3. 指定输出文件路径(默认为"差异报告.docx") 4. 点击"开始比较"按钮 5. 等待处理完成,程序会提示打开生成的差异报告 ### 打包成exe(在Windows上) ```bash # 方法1: 使用提供的批处理脚本(推荐) build_exe.bat # 方法2: 手动打包 pip install pyinstaller pyinstaller --onefile --windowed --name=WordDiffer word_differ.py # 生成的exe文件在 dist 目录下 ``` ### 方式3:Web界面(跨平台) ```bash # 方法1:使用自动启动脚本(推荐) python run_web.py # 方法2:手动激活虚拟环境启动 source venv/bin/activate python web_app.py # 方法3:直接启动(需要已激活虚拟环境) python3 web_app.py ``` Web版本功能: - 🌍 浏览器访问,无需安装客户端 - 🔒 使用独立虚拟环境,不污染系统Python - 📁 拖拽上传Word文档 - ⚙️ 可配置比对选项 - 📊 实时显示处理进度 - 💾 一键下载差异报告 - 🎨 传统企业界面风格(统一主色调,禁用蓝紫色和渐变) 访问地址:http://localhost:5000 ## 生成结果说明 使用内置报告引擎(--engine builtin)时,差异报告包含: - **文档信息**:显示两个对比文档的文件名和总差异数 - **图例说明**:解释各种颜色的含义 - **差异表格**: - 段落号:原文档中的段落编号 - 状态:相同/删除/新增/修改 - 文档1内容:第一个文档的内容 - 文档2内容:第二个文档的内容 默认(docx-compare 风格)将生成: - `diff/` 目录:两个提取的文本文件(逐段落换行) - `compare.sh` 与 `compare.bat`:一键运行 `git --no-index diff` 的脚本 - 可选 `diff.txt`:直接保存的差异文本(若本机已安装 git) ## 项目结构 ``` wdiffer/ ├── word_differ_core.py # 核心功能模块(差异比较逻辑) ├── word_differ.py # GUI图形界面程序 ├── word_differ_cli.py # 命令行版本程序 ├── web_app.py # Web版本后端服务 ├── run_web.py # 虚拟环境启动器 ├── start_web.py # Web版本启动器(兼容) ├── test_web.py # Web版本测试脚本 ├── templates/ # Web版本HTML模板 │ └── index.html # 主页面 ├── uploads/ # 上传文件临时目录 ├── outputs/ # 生成报告输出目录 ├── venv/ # Python虚拟环境(独立环境) ├── requirements.txt # 依赖包列表 ├── build_exe.bat # Windows打包脚本 └── README.md # 说明文档 ``` ## 核心技术 - **python-docx**:读取和生成Word文档 - **difflib**:计算文本差异 - **tkinter**:构建GUI界面 - **Flask**:构建Web界面和API服务 ## 注意事项 - 仅支持.docx格式(不支持.doc旧格式) - 比较的是段落级别的差异 - 在WSL环境中开发,需要迁移到Windows上运行GUI界面 - 打包exe时建议使用 `--windowed` 参数隐藏控制台窗口 ## 打包建议 在Windows上打包时可使用以下命令获得更好的效果: ```bash # 添加图标和详细信息 pyinstaller --onefile --windowed --icon=icon.ico --name=WordDiffer word_differ.py # 如果需要控制台窗口(便于调试) pyinstaller --onefile --name=WordDiffer word_differ.py ``` ## 许可证 MIT License