当前位置: 首页 > article >正文

AI Agent学习日记 Day2

今天继续实现word翻译功能上次的代码翻译完后会丢失图片等元素让deepseek改了好几版代码都还是有问题我决定先搞懂根本原因再改代码。经调查Word 的文档结构通过 COM 对象模型如下Document└─ Paragraphs└─ Range├─ Runs (文本块)├─ InlineShapes (内联图片、图表等)└─ Fields (域代码如目录)其中Paragraphs段落的定义是一个段落是用户按下回车键结束的一段内容。一个Paragraph对象包含一个RangeRange覆盖该段落的所有内容包括文本、图片、表格、形状等。段落是文档流的基本块每个段落可以包含多种元素文本、内联图片、域代码等。Range范围是文档中连续的任意区域可以是一个字符、一个段落、整个文档。Range可以包含多个Paragraph和多个InlineShape内联对象并且可以通过Range.Runs访问该范围内的所有文本块Runs。通过Range可以操作文本、格式、以及插入或删除内容。Runs文本块是Range中具有相同格式的连续文本序列。Word 在内部将文本按格式变化自动分割为多个 Run。例如同一段落中字体加粗、颜色变化、或插入图片都会导致 Run 的拆分。每个 Run 是纯文本或包含内嵌对象如InlineShape、Field等。一个 Run 中如果有图片则这个 Run 的InlineShapes.Count 0且Run.Text通常为空或只包含占位符字符。图片本身不是一个 Run而是附着在某个 Run 上的对象。之前的代码中我们通过操作Range提取出Range中的所有文本然后翻译完再替换掉。这就会导致原本存在于Range中的图片等元素也被覆盖掉所以会丢失元素。deepseek给出的解决方案是逐 Run 处理不再整个替换掉Range。但是我想到既然Run会按照格式变化划分那”这是一句完整的话”这样的句子就会被划分为“这是一句”“完整”“的话”三个Run这样喂给AI翻译效果肯定不行于是我放弃了这个方案。既然这条路不通那就回过头去重新开始。实际上python有专门的库python-docx来操作word但是这个库处理不了复杂的元素如插入的图形文本框等所以我一开始才会采用win32com。在我实际的业务中word文件里面文本框等复杂元素有不少所以这个问题必须要解决。随着调查的深入我发现 Word 文档.docx实际上是一个 ZIP 压缩包包含多个 XML 文件。python-docx 库主要封装了document.xml中主流元素段落、表格、图片的操作但文本框TextBox在 XML 中属于绘图对象DrawingML结构复杂且多变官方库未提供直接 API。但是我可以通过直接解析document.xml查找w:txbxContent标签文本框内容的容器提取并修改其中的文本。root doc.part.element # 查找所有 w:txbxContent 元素忽略命名空间 txbx_contents root.xpath(.//*[local-name()txbxContent]) for txbx in txbx_contents: # 遍历文本框内的所有段落 for para_elem in txbx.xpath(.//*[local-name()p]): # 提取所有文本节点内容 original .join(para_elem.xpath(.//*[local-name()t]/text())).strip() if original and len(original) 1: translated translate_text(original, target_lang, delay, contextcontext) if translated: # 替换所有 w:t 节点的文本 for t_elem in para_elem.xpath(.//*[local-name()t]): t_elem.text translated完美解决下一步就是多线程并行翻译了Excel和PPT都有word也一定要有我的PPT是按页Excel是按sheet并行翻译但是word是流式文档不存在天然可拆分的单位即使word有页码但每一页也并不是独立的甚至一句话都能跨两页。所以只能先把要翻译的元素全部提取出来再多线程并行翻译最后单线程顺序写回。这既能大幅提升性能API 调用成为瓶颈又能避免并发修改文档导致的数据损坏。收集阶段单线程遍历文档收集所有需要翻译的文本单元段落、表格单元格内的段落、文本框内的段落。每个单元包含唯一标识如索引、原始文本、对象引用用于写回。并行翻译阶段多线程使用线程池将文本单元分配给多个线程每个线程调用translate_text进行翻译返回(单元索引, 译文)。写回阶段单线程按索引顺序将译文写回对应的文档对象。我本来想着PPT都能多线程写回去为什么word不行原因如下python-pptxPPT每个Slide对象在内部对应 XML 树的不同分支且python-pptx在加载整个文档后各个幻灯片之间的 XML 节点树是相对独立的。多线程同时修改不同幻灯片的形状shape.text ...实际上是在操作不同子树只要没有同时修改同一个对象例如同一张幻灯片通常不会引发冲突。python-pptx也没有在内部维护复杂的全局缓存如 xpath 缓存所以实践中并行是安全的。python-docxWord文档的段落、表格、文本框等元素都位于同一棵 XML 树中且python-docx内部会维护一些缓存和索引例如段落编号。多个线程同时修改不同位置的文本虽然理论上可能不会直接冲突但lxml底层在修改节点时可能会触发父节点重新序列化或缓存失效存在潜在风险。更稳妥的做法是只并行翻译不并行写回。但是我看了设计思路后觉得还有问题如果只是把所有的翻译文本直接分给多个线程翻译那么每个线程拿到的文本块都是零散的为了保证翻译效果我在把文档喂给AI翻译时是传递了上下文的所以只有上下文连贯地发给AI翻译才能取得最好的翻译效果。于是我将翻译文本全部提取出来后按线程数将翻译文本分组每一组拿到的文本都是连贯的最后再多线程分组翻译。嗯效果拔群完美下次继续实现自动写脚本的Agent吧。

相关文章:

AI Agent学习日记 Day2

今天继续实现word翻译功能,上次的代码翻译完后会丢失图片等元素,让deepseek改了好几版代码都还是有问题,我决定先搞懂根本原因再改代码。经调查,Word 的文档结构(通过 COM 对象模型)如下:Docume…...

大模型面试必备:模型训练与微调 15 问全解析

导读:2026 年,大模型已从"尝鲜"走向"落地"。无论是求职面试还是项目实战,模型训练与微调都是绕不开的核心话题。本文基于面试辅导资料,结合行业最佳实践,梳理了 15 个关键知识点,助大家…...

告别手动测试:用快马AI生成telnet端口批量检测脚本,效率提升十倍

最近在运维工作中频繁遇到需要批量检测服务器telnet端口连通性的需求。手动一台台测试不仅效率低下,还容易出错。经过一番摸索,我总结出一套用Python快速实现批量检测的方案,效率比手工操作提升了十倍不止。这里分享下具体实现思路和优化经验…...

SEO_如何通过内容优化有效提升SEO效果(353 )

SEO内容优化:如何通过高质量内容提升SEO效果 在当今的互联网时代,搜索引擎优化(SEO)已经成为了每一个网站运营者必须掌握的技能。而其中,内容优化是提升SEO效果的关键。好的内容不仅能吸引更多的访问者,还…...

终极文件伪装指南:如何3分钟让任何文件“隐形“传输

终极文件伪装指南:如何3分钟让任何文件"隐形"传输 【免费下载链接】apate 简洁、快速地对文件进行格式伪装 项目地址: https://gitcode.com/gh_mirrors/apa/apate 在当今数据安全日益重要的时代,apate文件伪装工具为开发者和技术爱好者…...

网站 SEO 软件如何提高网站流量

了解网站 SEO 软件的重要性 在当今互联网时代,网站流量的重要性不言而喻。无论你经营的是一个电子商务网站,博客,还是企业官方网站,高流量意味着更多的曝光和潜在客户。如何有效地提高网站流量呢?这里,我们…...

基于python的本地选择图像接入百度云api的图像识别项目

项目灵感来源于老师布置的任务。怎么感觉老师这个题目也是ai生成的~。~ 题目:基于 AI 视觉的本地图像分析脚本 任务要求: 请使用 Python 编写一个通用的图像分析脚本,具体流程需满足以下三个步骤: * 本地选图:程序运…...

YOLOv8人脸检测架构解析:高精度实时人脸定位技术实战指南

YOLOv8人脸检测架构解析:高精度实时人脸定位技术实战指南 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face YOLOv8-face是基于YOLOv8架构优化的专业人脸检测解决方案&#xff0c…...

关于整数和浮点数在内存中的存储

了解整数和浮点数在内存中的存储可以更有助于我们深入理解知识,在解一些题时也能起到重要的作用,是我们在学C中不可或缺的重要组成部分,接下来我简要介绍一下:首先,整数就是用二进制码存储。在内存中以补码的形式进行存…...

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳 1. 语音识别新标杆 在嘈杂的会议室里,一段夹杂着咳嗽声和键盘敲击的录音正在播放。令人惊讶的是,FireRedASR Pro几乎一字不差地将这段对话转换成了文字,连专业术…...

Omni-Vision Sanctuary 大模型一键部署:Python入门级环境配置实战

Omni-Vision Sanctuary 大模型一键部署:Python入门级环境配置实战 1. 开篇:为什么选择Omni-Vision Sanctuary 如果你刚接触AI大模型,可能会被各种复杂的部署流程吓到。别担心,今天我们要聊的Omni-Vision Sanctuary是个对新手特别…...

终极指南:如何用Python SDK快速集成飞书开放平台API

终极指南:如何用Python SDK快速集成飞书开放平台API 【免费下载链接】oapi-sdk-python Larksuite development interface SDK 项目地址: https://gitcode.com/gh_mirrors/oa/oapi-sdk-python 想要在Python应用中快速集成飞书开放平台的强大功能,却…...

突破3大核心优势:Path of Building革新流放之路Build规划体验

突破3大核心优势:Path of Building革新流放之路Build规划体验 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 在《流放之路》复杂的角色构建系统中&#xff0…...

RobotStudio 仿真软件学习分享02 —— 仿真

目录一、本次学习内容总结二、学习经历(实操操作过程)2.1 机器人模型导入2.2 机器人工具加载与周边设备导入2.3 创建机器人控制系统2.4 创建工件坐标系(Workobject_1)2.5 创建并仿真机器人运动轨迹2.6 仿真视频录制三、补充关键注…...

Visual C++运行库全解析:从问题诊断到高效部署的完整指南

Visual C运行库全解析:从问题诊断到高效部署的完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 问题诊断:运行库故障的典型表现与…...

PyCINRAD:解锁中国新一代气象雷达数据的Python利器

PyCINRAD:解锁中国新一代气象雷达数据的Python利器 【免费下载链接】PyCINRAD Decode CINRAD (China New Generation Weather Radar) data and visualize. 项目地址: https://gitcode.com/gh_mirrors/py/PyCINRAD 还在为处理复杂的CINRAD雷达数据格式而烦恼吗…...

Thorium浏览器:重新定义现代网页浏览体验的高性能解决方案

Thorium浏览器:重新定义现代网页浏览体验的高性能解决方案 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of…...

代码随想录算法训练营第二天 | Leetcode 209.长度最小的子数组 | Leetcode 59.螺旋矩阵 II | 区间和 | 开发商购买土地

209.长度最小的子数组 力扣题目链接:209. 长度最小的子数组 - 力扣(LeetCode)文档讲解:209.长度最小的子数组 | 滑动窗口 | 连续子数组 | 代码随想录视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数…...

MiniCPM-o-4.5-nvidia-FlagOS插件开发指南:为谷歌浏览器打造智能阅读与摘要助手

MiniCPM-o-4.5-nvidia-FlagOS插件开发指南:为谷歌浏览器打造智能阅读与摘要助手 你是不是经常在网上冲浪时,面对一篇长文感到头疼,只想快速抓住核心要点?或者遇到一篇外文资料,需要逐句翻译才能理解?又或者…...

C++27协程标准化十大争议点终稿确认(含P2389R5/P2713R2/P2877R2等7项关键paper表决结果与工业界影响评估)

第一章:C27协程标准化演进全景与终稿里程碑意义C27协程标准的正式确立标志着C异步编程范式完成从实验性特性到语言级原语的根本性跃迁。自C20引入co_await、co_yield和co_return三大协程关键字以来,委员会持续通过P2526R4(无栈协程语义精化&a…...

公司 SEO 网站优化服务如何应对搜索引擎算法更新_公司 SEO 网站优化服务如何提高网站的曝光度

公司 SEO 网站优化服务如何应对搜索引擎算法更新 在数字化时代,搜索引擎算法的更新频繁,给公司的SEO网站优化服务带来了不小的挑战。搜索引擎不断优化其算法,以提升用户体验和搜索结果的相关性。这种变化往往会对网站的排名和曝光度产生直接…...

MindSpore 环境配置完全指南

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

突破音频格式壁垒:QMCDecoder开源工具实现无损音频自由转换

突破音频格式壁垒:QMCDecoder开源工具实现无损音频自由转换 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 问题:当音乐被数字锁链束缚——QMC格式的…...

鸣潮终极自动化解决方案:智能图像识别实现高效游戏体验

鸣潮终极自动化解决方案:智能图像识别实现高效游戏体验 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves ok-ww是一款基于…...

新手友好:无需配置环境,在快马平台编写第一行open claw控制代码

今天想和大家分享一个特别适合新手入门的Open Claw控制小项目。作为一个刚接触机器人控制的小白,我发现在InsCode(快马)平台上可以轻松实现机械爪的基础控制,完全不需要配置复杂的环境,特别适合零基础学习。 Open Claw是什么? Ope…...

5MB轻量级中文字体:WenQuanYi Micro Hei完全指南

5MB轻量级中文字体:WenQuanYi Micro Hei完全指南 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors/fo/fon…...

实战利器:基于快马平台为你的车辆检测项目定制专属labelimg标注工具

在AI项目开发中,数据标注往往是决定模型效果的关键环节。最近我在做一个车辆检测项目时,发现通用的标注工具无法满足特定需求,于是尝试用InsCode(快马)平台快速定制了一个专属的labelimg工具。整个过程比想象中顺利,分享几个实战要…...

ComfyUI插件管理工具:构建稳定高效的AI创作环境

ComfyUI插件管理工具:构建稳定高效的AI创作环境 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom node…...

Windows硬件指纹修改指南:EASY-HWID-SPOOFER的实用解析

Windows硬件指纹修改指南:EASY-HWID-SPOOFER的实用解析 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 你是否曾因软件试用期结束而烦恼?是否担心网站通过硬…...

显卡显存稳定性终极检测指南:memtest_vulkan免费工具快速诊断GPU问题

显卡显存稳定性终极检测指南:memtest_vulkan免费工具快速诊断GPU问题 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 核心关键词:显卡显…...