Skip to main content

Agent-facing document converter CLI for Office/PDF/Markdown workflows

Project description

Bruce Doc Converter

为 Claude Code / OpenClaw 添加双向文档转换能力

Agent Skill Python License

Bruce Doc Converter 是一个面向 Agent 的文档转换 CLI,为 Claude Code / OpenClaw 添加双向文档转换能力:

  • Office/PDF → Markdown:将 Word、Excel、PowerPoint、PDF 转换为 AI 友好的 Markdown 格式
  • Markdown → Word:将 Markdown 导出为排版精美的 Word 文档,自动渲染 Mermaid 图表

安装

首先检查 bdc 是否已安装:

command -v bdc        # macOS / Linux
where bdc             # Windows

若未安装,依次尝试以下方式(成功即止):

# 1. pipx(首选,独立环境,bdc 直接可用)
pipx install bruce-doc-converter

# 2. uv(快速、独立,bdc 直接可用)
uv tool install bruce-doc-converter

# 3. pip --user(最通用,bdc 直接可用)
pip3 install --user bruce-doc-converter   # macOS/Linux
pip install --user bruce-doc-converter    # Windows
# 或通用写法:python3 -m pip install --user bruce-doc-converter(Windows 用 `python`)

# 4. venv 兜底(处处可用,但 bdc 不在 PATH 中)
python3 -m venv .venv
.venv/bin/pip install bruce-doc-converter
# Windows: .venv\Scripts\pip install bruce-doc-converter

venv 提示:使用 venv 方式安装后,下文所有 bdc 命令需替换为 .venv/bin/bdc(macOS/Linux)或 .venv\Scripts\bdc(Windows)。

Windows 提示:若 python3 未识别,改用 python

Agent CLI 用法

bdc convert /path/to/document.docx
bdc convert /path/to/notes.md
bdc batch /path/to/documents

CLI 默认向 stdout 输出 JSON,stderr 仅用于进度日志。

Markdown 转 Word 需要 Node.js 依赖。首次使用前请显式初始化:

bdc setup-node

默认初始化会使用 npm ci --ignore-scripts 安装锁定依赖,避免运行第三方 npm 生命周期脚本。如果你的 Mermaid 渲染环境确实需要 npm 生命周期脚本下载浏览器依赖,可改用:

bdc setup-node --allow-scripts

bdc setup-node 是幂等命令:如果共享依赖目录已经和当前发布包匹配,会直接返回成功并跳过安装。可恢复失败会在 JSON 中提供 retryablenext_command 字段,智能体应优先使用这些机器字段决定下一步。

查看帮助:

bdc --help-json

输出示例(单文件成功)

{
  "schema_version": "1.0",
  "success": true,
  "input_path": "/absolute/input.docx",
  "input_format": "docx",
  "output_format": "markdown",
  "output_path": "/absolute/Markdown/input.md",
  "markdown_content": "# 内容...",
  "extracted_images": [],
  "warnings": []
}

输出示例(失败)

{
  "schema_version": "1.0",
  "success": false,
  "input_path": "/absolute/input.doc",
  "input_format": "doc",
  "error_code": "UNSUPPORTED_FORMAT",
  "error": "不支持的文件格式: .doc。支持的格式: .docx, .xlsx, .pptx, .pdf, .md",
  "suggestion": "请先转换为 .docx/.xlsx/.pptx 后再重试。"
}

输出示例(批量转换)

批量转换的 success 表示是否所有文件都转换成功;部分失败时 successfalse,但 succeededfailedresults 会保留每个文件的明细。

{
  "schema_version": "1.0",
  "success": true,
  "total": 1,
  "succeeded": 1,
  "failed": 0,
  "results": [
    {
      "input_path": "/absolute/input.docx",
      "result": {
        "schema_version": "1.0",
        "success": true,
        "input_path": "/absolute/input.docx",
        "input_format": "docx",
        "output_format": "markdown",
        "output_path": "/absolute/Markdown/input.md",
        "markdown_content": "# 内容...",
        "extracted_images": [],
        "warnings": []
      }
    }
  ]
}

功能特性

  • 标题识别:自动识别 Word 标题层级(Heading 1-6)及中文标题样式
  • 格式保留:保留粗体、斜体等文本格式
  • 表格转换:智能转换表格为 Markdown 格式
  • 列表支持:有序列表、无序列表及多级嵌套
  • Mermaid 图表:支持通过 mmdc 渲染 Mermaid 代码块,嵌入 Word 为 PNG 图片
  • 图片提取:Office/PDF 转 Markdown 时可提取内嵌图片

支持的格式

格式 输入 输出 质量
Word (.docx) 优秀
Excel (.xlsx) 优秀
PowerPoint (.pptx) 良好
PDF (.pdf) 取决于类型
Markdown (.md) 优秀

注意:不支持旧版格式(.doc, .xls, .ppt),请先转换为新格式。

环境要求

  • Python 3.8+(必需)
  • Node.js 14+(可选,仅 Markdown → Word 需要)

常见问题

安装故障排查

错误 原因 解决方案
SOCKS support / 代理连接错误 all_proxyhttp_proxy 环境变量已设置 运行 unset all_proxy http_proxy https_proxy(macOS/Linux)或 set all_proxy=(Windows CMD),然后重试
command not found: pipx 未安装 pipx 改用 uv tool installpip install --user
externally-managed-environment Python 3.11+ 系统 Python 禁止全局 pip 安装 使用 pipxuv tool install 或 venv 兜底
Permission denied 无安装目录写权限 添加 --user 标志,或使用 venv 兜底
安装 venv 后 bdc: command not found venv bin 未加入 PATH 使用完整路径:.venv/bin/bdc(macOS/Linux)或 .venv\Scripts\bdc(Windows)

文件过大怎么办?

当前限制为 100MB,建议分割文件或压缩内容。

Markdown 转 Word 失败?

需要安装 Node.js,并先显式安装 Node.js 依赖:

bdc setup-node

Linux 下默认不会为 Chromium 传入 --no-sandbox。如果你理解风险且运行环境确实需要,可设置 BRUCE_DOC_CONVERTER_ALLOW_CHROMIUM_NO_SANDBOX=1 后再转换。

PDF 提取不到内容?

扫描型 PDF 需先执行 OCR,或解除 PDF 保护后重试。

最佳实践

  1. 使用新版 Office 格式(.docx, .xlsx, .pptx)
  2. PDF 优先使用文本型,扫描型建议先 OCR
  3. 文件大小建议 < 50MB

项目结构

bruce-doc-converter/
├── bruce-doc-converter-skill/
│   └── SKILL.md                  # Agent Skill 定义
├── pyproject.toml                # Python 包元数据
├── requirements.txt              # 本地开发依赖
├── bruce_doc_converter/
│   ├── __init__.py
│   ├── cli.py                    # bdc CLI 入口
│   ├── converter.py              # 转换核心逻辑
│   └── md_to_docx/              # Markdown → Word 的 Node.js 模块
└── tests/
    ├── test_cli.py
    ├── test_convert_document.py
    └── md_to_docx.test.js

许可证

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bruce_doc_converter-0.1.2.tar.gz (114.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bruce_doc_converter-0.1.2-py3-none-any.whl (106.7 kB view details)

Uploaded Python 3

File details

Details for the file bruce_doc_converter-0.1.2.tar.gz.

File metadata

  • Download URL: bruce_doc_converter-0.1.2.tar.gz
  • Upload date:
  • Size: 114.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for bruce_doc_converter-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2ba218c39404fb76b25299b1f9b0e292307e8a7d22d020206abed07c25542f7d
MD5 b39c8c6e789532abff38bc7fc796e152
BLAKE2b-256 5e23a9af20b86ba12ed70b80a9a61c7222db0833584ebd1e2c0dbb4febd411d2

See more details on using hashes here.

File details

Details for the file bruce_doc_converter-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for bruce_doc_converter-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cae8d4eaf89cd02d9a38c2313d9414e06a6e8eaafc829002d0b45ae3ce4737d0
MD5 53b22fffae6faa08fa94d1545498d6fc
BLAKE2b-256 31e63c4b06fe28bfa8dedd26793c1a4f2cd1d9784f3cd5ab199ccdd601153006

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page