用途 该技能用于创建、编辑和分析 .docx 文档。资料将 .docx 描述为一个本质上包含 XML 文件和其他资源的 ZIP 归档,可读取和编辑,并针对不同任务提供了不同的工具和工作流。
主要能力
- 读取与分析内容:若只需读取文字内容,可用 pandoc 将文档转为 markdown,保留文档结构并显示修订,命令为:pandoc --track-changes=all path-to-file.docx -o output.md,其中 --track-changes 可选 accept/reject/all。
- 原始 XML 访问:针对批注、复杂格式、文档结构、嵌入媒体和元数据,需要解包文档并读取原始 XML。解包命令:python ooxml/scripts/unpack.py <office_file> <output_directory>。关键文件结构包括 word/document.xml(主文档内容)、word/comments.xml(document.xml 中引用的批注)、word/media/(嵌入图片与媒体),修订使用 <w:ins>(插入)和 <w:del>(删除)标签。
- 创建新 Word 文档:从零创建时使用 docx-js,可用 JavaScript/TypeScript 创建 Word 文档。流程要求完整阅读 docx-js.md(约 500 行),不得设置读取范围限制;使用 Document、Paragraph、TextRun 组件编写 JavaScript/TypeScript 文件;通过 Packer.toBuffer() 导出为 .docx。
- 编辑既有 Word 文档:使用 Document 库(用于 OOXML 操作的 Python 库),自动处理基础设施搭建并提供文档操作方法;复杂场景可直接访问底层 DOM。流程要求完整阅读 ooxml.md(约 600 行),不得设置读取范围限制;执行解包命令;编写并运行使用 Document 库的 Python 脚本;最后执行打包命令:python ooxml/scripts/pack.py <input_directory> <office_file>。
- 文档审校的红线(Redlining)工作流:先用 markdown 规划完整的修订,再在 OOXML 中实现。要点包括:批量策略将相关改动分为 3-10 个一组,便于调试并保持效率,每组测试后再继续;遵循最小、精确编辑原则,仅标记实际变化的文本,将替换拆分为[未变文本]+[删除]+[插入]+[未变文本],并通过提取原始 <w:r> 元素复用未变文本的 RSID。资料给出了将“30 days”改为“60 days”的正确与错误示例。 文本修订的操作流程:
- 获取 markdown 表示:pandoc --track-changes=all path-to-file.docx -o current.md
- 识别并分组改动,并给出定位方法:章节/标题编号(如“Section 3.2”“Article IV”)、编号段落标识符、带唯一上下文文本的 grep 模式、文档结构(如“first paragraph”“signature block”);不得使用 markdown 行号,因为它们不映射到 XML 结构。
- 批量组织方式:按章节、按类型、按复杂度(先简单文本替换再复杂结构改动)、按顺序(如 Pages 1-3、Pages 4-6),每组 3-10 个相关改动。
- 阅读文档并解包:完整阅读 ooxml.md(约 600 行),重点关注“Document Library”和“Tracked Change Patterns”部分;解包命令:python ooxml/scripts/unpack.py <file.docx> <dir>;注意解包脚本会建议用于修订的 RSID,需复制该 RSID 用于实现。
- 分批量实现改动:按逻辑分组并在单个脚本中一起实现;在每批相关改动中,a. 在 word/document.xml 中 grep 文本以确认文本如何拆分到 <w:r> 元素,b. 使用 get_node 查找节点、实现改动并 doc.save()。注意在写脚本前立即 grep word/document.xml 以获取当前行号并验证文本内容,因为每次脚本运行后行号会变化。
- 打包文档:python ooxml/scripts/pack.py unpacked reviewed-document.docx
- 最终验证:将文档转 markdown 后检查,如 pandoc --track-changes=all reviewed-document.docx -o verification.md;使用 grep 确认原短语不存在、替换短语存在,并检查没有引入意外改动。
- 将文档转换为图像:两步流程,先用 soffice --headless --convert-to pdf document.docx 将 DOCX 转 PDF,再用 pdftoppm -jpeg -r 150 document.pdf page 将 PDF 页转为 JPEG,生成 page-1.jpg、page-2.jpg 等。可选参数包括 -r 150 设置分辨率、-jpeg 输出格式(可用 -png)、-f N 起始页、-l N 结束页、page 输出文件前缀;示例:pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page 只转换第 2-5 页。
使用方式与代码风格 资料要求生成 DOCX 操作代码时编写简洁代码,避免冗长变量名和冗余操作,避免不必要的 print 语句。
依赖 所需依赖(如不可用则安装):pandoc:sudo apt-get install pandoc(用于文本提取);docx:npm install -g docx(用于创建新文档);LibreOffice:sudo apt-get install libreoffice(用于 PDF 转换);Poppler:sudo apt-get install poppler-utils(用于 pdftoppm 将 PDF 转图像);defusedxml:pip install defusedxml(用于安全 XML 解析)。
适用场景 资料涉及的场景包括:文档创建、编辑与分析;读取与文字提取;处理批注、复杂格式、文档结构和嵌入媒体;创建新 Word 文档;编辑既有文档;法律、学术、商业或政府文档的审校(资料指明此类文档必须使用 Redlining 工作流,他人文档推荐默认使用该工作流);将 Word 文档转为图像以进行可视化分析。
限制与暂未提供 资料未提供收费、价格、平台支持范围、性能或效果保证等信息。关于具体调用入口、授权方式、并发限制、文件大小上限、支持的具体 .docx 版本等,资料暂未提供。