[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-xunbu--docutranslate":3,"tool-xunbu--docutranslate":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":78,"owner_email":80,"owner_twitter":78,"owner_website":81,"owner_url":82,"languages":83,"stars":100,"forks":101,"last_commit_at":102,"license":103,"difficulty_score":10,"env_os":104,"env_gpu":105,"env_ram":105,"env_deps":106,"category_tags":120,"github_topics":121,"view_count":23,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":127,"updated_at":128,"faqs":129,"releases":180},2035,"xunbu\u002Fdocutranslate","docutranslate","文档（小说、论文、字幕）翻译工具（支持 pdf\u002Fword\u002Fexcel\u002Fjson\u002Fepub\u002Fsrt...）Document (Novel, Thesis, Subtitle) Translation Tool (Supports pdf\u002Fword\u002Fexcel\u002Fjson\u002Fepub\u002Fsrt...)","DocuTranslate 是一款支持多种文档格式的本地翻译工具，可轻松翻译 PDF、Word、Excel、EPUB、字幕文件（SRT\u002FASS）和 JSON 等常见文件，无需上传至云端，保障隐私与安全。它特别解决了学术论文、小说、技术文档等复杂内容翻译时格式丢失、术语不一致、公式表格无法识别的难题，能智能保留原文排版结构，并自动构建术语表确保专业词汇统一。支持调用多种 AI 平台接口，实现高并发翻译，还提供简洁的网页界面和 REST API，方便个人或团队协作使用。其亮点在于内置 PDF 解析引擎（如 docling 和 minerU），可准确识别并翻译表格、数学公式和代码片段，同时支持通过 JSONPath 精准指定需翻译的字段。适合研究人员、译者、学生、技术写作者以及希望本地化处理多语言文档的普通用户。Windows 和 macOS 提供免安装的轻量版（小于 40MB），开箱即用，无需复杂配置。","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_3b306f789e23.png\" alt=\"Project Logo\" style=\"width: 150px\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">DocuTranslate\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fxunbu\u002Fdocutranslate?style=flat-square&logo=github&color=blue\" alt=\"GitHub stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fxunbu\u002Fdocutranslate\u002Ftotal?logo=github&style=flat-square\" alt=\"GitHub Downloads\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fdocutranslate\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdocutranslate?style=flat-square\" alt=\"PyPI version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11+-3776AB?logo=python&logoColor=white&style=flat-square\" alt=\"Python Version\">\u003C\u002Fa>\n  \u003Ca href=\".\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fxunbu\u002Fdocutranslate?style=flat-square\" alt=\"License\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"\u002FREADME_ZH.md\">\u003Cstrong>简体中文\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME.md\">\u003Cstrong>English\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME_JP.md\">\u003Cstrong>日本語\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME_VI.md\">\u003Cstrong>Tiếng Việt\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  A lightweight local file translation tool based on Large Language Models.\n\u003C\u002Fp>\n\n- ✅ **Support Multiple Formats**: Translates `pdf`, `docx`, `xlsx`, `md`, `txt`, `json`, `epub`, `srt`, `ass`, and more.\n- ✅ **Auto-Generate Glossary**: Supports automatic glossary generation to ensure term alignment.\n- ✅ **PDF Table, Formula, Code Recognition**: Leverages `docling` and `mineru` PDF parsing engines to recognize and translate tables, formulas, and code often found in academic papers.\n- ✅ **JSON Translation**: Supports specifying values to translate within JSON using paths (`jsonpath-ng` syntax).\n- ✅ **Word\u002FExcel Format Preservation**: Supports `docx` and `xlsx` files (currently does not support `doc` or `xls`) while maintaining original formatting.\n- ✅ **Multi-AI Platform Support**: Supports most AI platforms, allowing for high-performance concurrent AI translation with custom prompts.\n- ✅ **Async Support**: Designed for high-performance scenarios, providing full asynchronous support and interfaces for parallel multi-tasking.\n- ✅ **LAN & Multi-user Support**: Supports simultaneous use by multiple users within a local area network (LAN).\n- ✅ **Interactive Web Interface**: Provides an out-of-the-box Web UI and RESTful API for easy integration and usage.\n- ✅ **Compact, Portable Packages**: Windows and Mac portable packages under 40MB (versions that do not use `docling` for local PDF parsing).\n\n> When translating `pdf`, it is first converted to markdown. This will **lose** the original layout. Users with strict layout requirements should take note.\n\n> QQ Community Group: 1047781902 1081128602\n\n**UI Interface**:\n![UI Interface](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_b91d63302187.png)\n\n**Paper Translation**:\n![Paper Translation](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_fb4eb2484f39.png)\n\n**Novel Translation**:\n![Novel Translation](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_e589d0565c03.png)\n\n## Integration Packages\n\nFor users who want to get started quickly, we provide integration packages on [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases). Simply download, unzip, and enter your AI platform API-Key to start using it.\n\n- **DocuTranslate**: Standard version. Uses `minerU` (online or locally deployed) for PDF parsing. Supports local minerU API calls. (Recommended)\n- **DocuTranslate_full**: Full version. Includes the built-in `docling` local PDF parsing engine. Choose this version if you need offline PDF parsing without minerU.\n\n## Quick Start\n\n### Using pip\n\n```bash\n# Basic installation\npip install docutranslate\n\n# Install mcp extension\npip install docutranslate[mcp]\n\n# Install docling extension\npip install docutranslate[docling]\n\ndocutranslate -i\n\n#docutranslate -i --with-mcp\n```\n\n### Using uv\n\n```bash\n# Initialize environment\nuv init\n\n# Basic installation\nuv add docutranslate\n\n# Install mcp extension\nuv add docutranslate[mcp]\n\n# Install docling extension\nuv add docutranslate[docling]\n\nuv run --no-dev docutranslate -i\n\n#uv run --no-dev docutranslate -i --with-mcp\n```\n\n### Using git\n\n```bash\n# Initialize environment\ngit clone https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate.git\n\ncd docutranslate\n\nuv sync --no-dev\n# uv sync --no-dev --extra mcp\n# uv sync --no-dev --extra docling\n# uv sync --no-dev --all-extras\n\n```\n\n### Using docker\n\n```bash\ndocker run -d -p 8010:8010 xunbu\u002Fdocutranslate:latest #does not support docling\n# docker run -it -p 8010:8010 xunbu\u002Fdocutranslate:latest\n# docker run -it -p 8010:8010 xunbu\u002Fdocutranslate:v1.5.4\n```\n\n## Start Web UI and API Service\n\nFor ease of use, DocuTranslate provides a fully functional Web Interface and RESTful API.\n\n**Start the Service:**\n\n```bash\n  docutranslate -i                           (Start GUI, default local access)\n  docutranslate -i --host 0.0.0.0            (Allow access from other devices on LAN)\n  docutranslate -i -p 8081                   (Specify port number)\n  docutranslate -i --cors                    (Enable default CORS settings)\n  docutranslate -i --with-mcp                (Start GUI with MCP SSE endpoint, shared queue, shared port)\n  docutranslate --mcp                         (Start MCP server, stdio mode)\n  docutranslate --mcp --transport sse         (Start MCP server, SSE mode)\n  docutranslate --mcp --transport sse --mcp-host MCP_HOST   --mcp-port MCP_PORT  (Start MCP server, SSE mode)\n  docutranslate --mcp --transport streamable-http  (Start MCP server, Streamable HTTP mode)\n```\n\n- **Interactive Interface**: After starting the service, please visit `http:\u002F\u002F127.0.0.1:8010` (or your specified port) in your browser.\n- **API Documentation**: Full API documentation (Swagger UI) is located at `http:\u002F\u002F127.0.0.1:8010\u002Fdocs`.\n- MCP: SSE service endpoint is at `http:\u002F\u002F127.0.0.1:8010\u002Fmcp\u002Fsse` (started with --with-mcp) or `http:\u002F\u002F127.0.0.1:8000\u002Fmcp\u002Fsse` (started with --mcp)\n\n## MCP Configuration\n\nDocuTranslate can be used as an MCP (Model Context Protocol) server. For detailed documentation, see [MCP Documentation](.\u002Fdocutranslate\u002Fmcp\u002FREADME.md).\n\n### Supported Environment Variables\n\n| Environment Variable | Description | Required |\n|---------------------|-------------|----------|\n| `DOCUTRANSLATE_API_KEY` | AI platform API key | Yes |\n| `DOCUTRANSLATE_BASE_URL` | AI platform base URL | Yes |\n| `DOCUTRANSLATE_MODEL_ID` | Model ID | Yes |\n| `DOCUTRANSLATE_TO_LANG` | Target language (default: Chinese) | No |\n| `DOCUTRANSLATE_CONCURRENT` | Concurrent requests (default: 10) | No |\n| `DOCUTRANSLATE_CONVERT_ENGINE` | PDF conversion engine | No |\n| `DOCUTRANSLATE_MINERU_TOKEN` | MinerU API Token | No |\n\n### uvx Configuration (No Installation Required)\n\n```json\n{\n  \"mcpServers\": {\n    \"docutranslate\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"docutranslate[mcp]\", \"docutranslate\", \"--mcp\"],\n      \"env\": {\n        \"DOCUTRANSLATE_API_KEY\": \"sk-xxxxxx\",\n        \"DOCUTRANSLATE_BASE_URL\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n        \"DOCUTRANSLATE_MODEL_ID\": \"gpt-4o\",\n        \"DOCUTRANSLATE_TO_LANG\": \"Chinese\",\n        \"DOCUTRANSLATE_CONCURRENT\": \"10\",\n        \"DOCUTRANSLATE_CONVERT_ENGINE\": \"mineru\",\n        \"DOCUTRANSLATE_MINERU_TOKEN\": \"your-mineru-token\"\n      }\n    }\n  }\n}\n```\n\n### SSE Mode Configuration\n\nFirst start the MCP server in SSE mode:\n\n```bash\ndocutranslate --mcp --transport sse --mcp-host 127.0.0.1 --mcp-port 8000\n```\n\nThen configure the SSE endpoint in your client: `http:\u002F\u002F127.0.0.1:8000\u002Fmcp\u002Fsse`\n\n## Usage Examples\n\n### Using the Simple Client SDK (Recommended)\n\nThe easiest way to get started is using the `Client` class, which provides a simple and intuitive API for translation:\n\n```python\nfrom docutranslate.sdk import Client\n\n# Initialize the client with your AI platform settings\nclient = Client(\n    api_key=\"YOUR_OPENAI_API_KEY\",  # or any other AI platform API key\n    base_url=\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002F\",\n    model_id=\"gpt-4o\",\n    to_lang=\"Chinese\",\n    concurrent=10,  # Number of concurrent requests\n)\n\n# Example 1: Translate plain text files (no PDF parsing engine needed)\nresult = client.translate(\"path\u002Fto\u002Fyour\u002Fdocument.txt\")\nprint(f\"Translation complete! Saved to: {result.save()}\")\n\n# Example 2: Translate PDF files (requires mineru_token or local deployment)\n# Option A: Use online MinerU (token required: https:\u002F\u002Fmineru.net\u002FapiManage\u002Ftoken)\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.pdf\",\n    convert_engine=\"mineru\",\n    mineru_token=\"YOUR_MINERU_TOKEN\",  # Replace with your MinerU Token\n    formula_ocr=True,  # Enable formula recognition\n)\nresult.save(fmt=\"html\")\n\n# Option B: Use locally deployed MinerU (recommended for intranet\u002Foffline)\n# First start local MinerU service, reference: https:\u002F\u002Fgithub.com\u002Fopendatalab\u002FMinerU\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.pdf\",\n    convert_engine=\"mineru_deploy\",\n    mineru_deploy_base_url=\"http:\u002F\u002F127.0.0.1:8000\",  # Your local MinerU address\n    mineru_deploy_backend=\"hybrid-auto-engine\",  # Backend type\n)\nresult.save(fmt=\"markdown\")\n\n# Example 3: Translate Docx files (preserve formatting)\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.docx\",\n    insert_mode=\"replace\",  # replace\u002Fappend\u002Fprepend\n)\nresult.save(fmt=\"docx\")  # Save as docx format\n\n# Example 4: Export as base64 encoded string (for API transmission)\nbase64_content = result.export(fmt=\"html\")\nprint(f\"Exported content length: {len(base64_content)}\")\n\n# You can also access the underlying workflow for advanced operations\n# workflow = result.workflow\n```\n\n**Client Features:**\n- **Auto-detection**: Automatically detects file type and selects the appropriate workflow\n- **Flexible Configuration**: Override any default settings per translation call\n- **Multiple Output Options**: Save to disk or export as Base64 string\n- **Async Support**: Use `translate_async()` for concurrent translation tasks\n\n#### Client SDK Parameters\n\n| Parameter | Type | Default | Description |\n|:---|:---|:---|:---|\n| **api_key** | `str` | - | AI platform API key |\n| **base_url** | `str` | - | AI platform base URL (e.g., `https:\u002F\u002Fapi.openai.com\u002Fv1\u002F`) |\n| **model_id** | `str` | - | Model ID to use for translation |\n| **to_lang** | `str` | - | Target language (e.g., `\"Chinese\"`, `\"English\"`, `\"Japanese\"`) |\n| **concurrent** | `int` | 10 | Number of concurrent LLM requests |\n| **convert_engine** | `str` | `\"mineru\"` | PDF parsing engine: `\"mineru\"`, `\"docling\"`, `\"mineru_deploy\"` |\n| **md2docx_engine** | `str` | `\"auto\"` | Markdown to Docx engine: `\"python\"` (pure Python), `\"pandoc\"` (use Pandoc), `\"auto\"` (use Pandoc if installed, otherwise Python), `null` (do not generate docx) |\n| **mineru_deploy_base_url** | `str` | - | Local minerU API address (when `convert_engine=\"mineru_deploy\"`) |\n| **mineru_deploy_parse_method** | `str` | `\"auto\"` | Local minerU parsing method: `\"auto\"`, `\"txt\"`, `\"ocr\"` |\n| **mineru_deploy_table_enable** | `bool` | `True` | Enable table recognition for local minerU |\n| **mineru_token** | `str` | - | minerU API token (when using online minerU) |\n| **skip_translate** | `bool` | `False` | Skip translation, only parse document |\n| **output_dir** | `str` | `\".\u002Foutput\"` | Default output directory for `save()` |\n| **chunk_size** | `int` | 3000 | Text chunk size for LLM processing |\n| **temperature** | `float` | 0.3 | LLM temperature parameter |\n| **timeout** | `int` | 60 | Request timeout in seconds |\n| **retry** | `int` | 3 | Number of retry attempts on failure |\n| **provider** | `str` | `\"auto\"` | AI provider type (auto, openai, azure, etc.) |\n| **force_json** | `bool` | `False` | Force JSON output mode |\n| **rpm** | `int` | - | Requests per minute limit |\n| **tpm** | `int` | - | Tokens per minute limit |\n| **extra_body** | `str` | - | Additional request body parameters in JSON string format, will be merged into API request |\n| **thinking** | `str` | `\"auto\"` | Thinking mode: `\"auto\"`, `\"none\"`, `\"block\"` |\n| **custom_prompt** | `str` | - | Custom prompt for translation |\n| **system_proxy_enable** | `bool` | `False` | Enable system proxy |\n| **insert_mode** | `str` | `\"replace\"` | Docx\u002FXlsx\u002FTxt insertion mode: `\"replace\"`, `\"append\"`, `\"prepend\"` |\n| **separator** | `str` | `\"\\n\"` | Text separator for append\u002Fprepend modes |\n| **segment_mode** | `str` | `\"line\"` | Segmentation mode: `\"line\"`, `\"paragraph\"`, `\"none\"` |\n| **translate_regions** | `list` | - | Excel translation regions (e.g., `\"Sheet1!A1:B10\"`) |\n| **model_version** | `str` | `\"vlm\"` | MinerU model version: `\"pipeline\"`, `\"vlm\"` |\n| **formula_ocr** | `bool` | `True` | Enable formula OCR for PDF parsing |\n| **code_ocr** | `bool` | `True` | Enable code OCR for PDF parsing |\n| **mineru_deploy_backend** | `str` | `\"hybrid-auto-engine\"` | MinerU local backend: `\"pipeline\"`, `\"vlm-auto-engine\"`, `\"vlm-http-client\"`, `\"hybrid-auto-engine\"`, `\"hybrid-http-client\"` |\n| **mineru_deploy_formula_enable** | `bool` | `True` | Enable formula recognition for local MinerU |\n| **mineru_deploy_start_page_id** | `int` | 0 | Start page ID for local MinerU parsing |\n| **mineru_deploy_end_page_id** | `int` | 99999 | End page ID for local MinerU parsing |\n| **mineru_deploy_lang_list** | `list` | - | Language list for local MinerU parsing |\n| **mineru_deploy_server_url** | `str` | - | MinerU local server URL |\n| **json_paths** | `list` | - | JSONPath expressions for JSON translation (e.g., `\"$.data.*\"`) |\n| **glossary_generate_enable** | `bool` | - | Enable auto glossary generation |\n| **glossary_dict** | `dict` | - | Glossary dictionary (e.g., `{\"Jobs\": \"Steve Jobs\"}`) |\n| **glossary_agent_config** | `dict` | - | Glossary agent configuration |\n\n#### Result Methods\n\n| Method | Parameters | Description |\n|:---|:---|:---|\n| **save()** | `output_dir`, `name`, `fmt` | Save translation result to disk |\n| **export()** | `fmt` | Export as Base64 encoded string |\n| **supported_formats** | - | Get list of supported output formats |\n| **workflow** | - | Access underlying workflow object |\n\n```python\nimport asyncio\nfrom docutranslate.sdk import Client\n\nasync def translate_multiple():\n    client = Client(\n        api_key=\"YOUR_API_KEY\",\n        base_url=\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002F\",\n        model_id=\"gpt-4o\",\n        to_lang=\"Chinese\",\n    )\n\n    # Translate multiple files concurrently\n    files = [\"doc1.pdf\", \"doc2.docx\", \"notes.txt\"]\n    results = await asyncio.gather(\n        *[client.translate_async(f) for f in files]\n    )\n\n    for r in results:\n        print(f\"Saved: {r.save()}\")\n\nasyncio.run(translate_multiple())\n```\n\n### Using Workflow API (For Advanced Control)\n\nFor more control, use the Workflow API directly. Each workflow follows the same pattern:\n\n```python\n# Pattern:\n# 1. Create TranslatorConfig (LLM settings)\n# 2. Create WorkflowConfig (workflow settings)\n# 3. Create Workflow instance\n# 4. workflow.read_path(file)\n# 5. await workflow.translate_async()\n# 6. workflow.save_as_*(name=...) or export_to_*(...)\n```\n#### Available Workflows and Output Methods\n\n| Workflow | Inputs | save_as_* | export_to_* | Key Config Options |\n|:---|:---|:---|:---|:---|\n| **MarkdownBasedWorkflow** | `.pdf`, `.docx`, `.md`, `.png`, `.jpg` | `html`, `markdown`, `markdown_zip`, `docx` | `html`, `markdown`, `markdown_zip`, `docx` | `convert_engine`, `md2docx_engine`, `translator_config` |\n| **TXTWorkflow** | `.txt` | `txt`, `html` | `txt`, `html` | `translator_config` |\n| **JsonWorkflow** | `.json` | `json`, `html` | `json`, `html` | `translator_config`, `json_paths` |\n| **DocxWorkflow** | `.docx` | `docx`, `html` | `docx`, `html` | `translator_config`, `insert_mode` |\n| **XlsxWorkflow** | `.xlsx`, `.csv` | `xlsx`, `html` | `xlsx`, `html` | `translator_config`, `insert_mode` |\n| **SrtWorkflow** | `.srt` | `srt`, `html` | `srt`, `html` | `translator_config` |\n| **EpubWorkflow** | `.epub` | `epub`, `html` | `epub`, `html` | `translator_config`, `insert_mode` |\n| **HtmlWorkflow** | `.html`, `.htm` | `html` | `html` | `translator_config`, `insert_mode` |\n| **AssWorkflow** | `.ass` | `ass`, `html` | `ass`, `html` | `translator_config` |\n\n#### Key Configuration Options\n\n**Common TranslatorConfig Options:**\n\n| Option | Type | Default | Description |\n|:---|:---|:---|:---|\n| `base_url` | `str` | - | AI platform base URL |\n| `api_key` | `str` | - | AI platform API key |\n| `model_id` | `str` | - | Model ID |\n| `to_lang` | `str` | - | Target language |\n| `chunk_size` | `int` | 3000 | Text chunk size |\n| `concurrent` | `int` | 10 | Concurrent requests |\n| `temperature` | `float` | 0.3 | LLM temperature |\n| `timeout` | `int` | 60 | Request timeout (seconds) |\n| `retry` | `int` | 3 | Retry attempts |\n\n**Format-Specific Options:**\n\n| Option | Applicable Workflows | Description |\n|:---|:---|:---|\n| `insert_mode` | Docx, Xlsx, Html, Epub | `\"replace\"` (default), `\"append\"`, `\"prepend\"` |\n| `json_paths` | Json | JSONPath expressions (e.g., `[\"$.*\", \"$.name\"]`) |\n| `separator` | Docx, Xlsx, Html, Epub | Text separator for append\u002Fprepend modes |\n| `convert_engine` | MarkdownBased | `\"mineru\"` (default), `\"docling\"`, `\"mineru_deploy\"` |\n\n#### Example 1: Translate a PDF File (Using `MarkdownBasedWorkflow`)\n\nThis is the most common use case. We will use the `minerU` engine to convert the PDF to Markdown, and then translate it using an LLM. This example uses asynchronous execution.\n\n```python\nimport asyncio\nfrom docutranslate.workflow.md_based_workflow import MarkdownBasedWorkflow, MarkdownBasedWorkflowConfig\nfrom docutranslate.converter.x2md.converter_mineru import ConverterMineruConfig\nfrom docutranslate.translator.ai_translator.md_translator import MDTranslatorConfig\nfrom docutranslate.exporter.md.md2html_exporter import MD2HTMLExporterConfig\n\n\nasync def main():\n    # 1. Build Translator Configuration\n    translator_config = MDTranslatorConfig(\n        base_url=\"https:\u002F\u002Fopen.bigmodel.cn\u002Fapi\u002Fpaas\u002Fv4\",  # AI Platform Base URL\n        api_key=\"YOUR_ZHIPU_API_KEY\",  # AI Platform API Key\n        model_id=\"glm-4-air\",  # Model ID\n        to_lang=\"English\",  # Target Language\n        chunk_size=3000,  # Text chunk size\n        concurrent=10,  # Concurrency level\n        # glossary_generate_enable=True, # Enable auto-glossary generation\n        # glossary_dict={\"Jobs\":\"Steve Jobs\"}, # Pass in a glossary dictionary\n        # system_proxy_enable=True, # Enable system proxy\n    )\n\n    # 2. Build Converter Configuration (Using minerU)\n    converter_config = ConverterMineruConfig(\n        mineru_token=\"YOUR_MINERU_TOKEN\",  # Your minerU Token\n        formula_ocr=True  # Enable formula recognition\n    )\n\n    # 3. Build Main Workflow Configuration\n    workflow_config = MarkdownBasedWorkflowConfig(\n        convert_engine=\"mineru\",  # Specify parsing engine\n        converter_config=converter_config,  # Pass converter config\n        translator_config=translator_config,  # Pass translator config\n        html_exporter_config=MD2HTMLExporterConfig(cdn=True)  # HTML export config\n    )\n\n    # 4. Instantiate Workflow\n    workflow = MarkdownBasedWorkflow(config=workflow_config)\n\n    # 5. Read file and execute translation\n    print(\"Starting to read and translate file...\")\n    workflow.read_path(\"path\u002Fto\u002Fyour\u002Fdocument.pdf\")\n    await workflow.translate_async()\n    # Or use synchronous method\n    # workflow.translate()\n    print(\"Translation complete!\")\n\n    # 6. Save results\n    workflow.save_as_html(name=\"translated_document.html\")\n    workflow.save_as_markdown_zip(name=\"translated_document.zip\")\n    workflow.save_as_markdown(name=\"translated_document.md\")  # Markdown with embedded images\n    print(\"Files saved to .\u002Foutput folder.\")\n\n    # Or get content strings directly\n    html_content = workflow.export_to_html()\n    html_content = workflow.export_to_markdown()\n    # print(html_content)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### Other Workflows\n\nAll workflows follow the same pattern. Import the corresponding config and workflow, then configure:\n\n```python\n# TXT: from docutranslate.workflow.txt_workflow import TXTWorkflow, TXTWorkflowConfig\n# JSON: from docutranslate.workflow.json_workflow import JsonWorkflow, JsonWorkflowConfig\n# DOCX: from docutranslate.workflow.docx_workflow import DocxWorkflow, DocxWorkflowConfig\n# XLSX: from docutranslate.workflow.xlsx_workflow import XlsxWorkflow, XlsxWorkflowConfig\n# EPUB: from docutranslate.workflow.epub_workflow import EpubWorkflow, EpubWorkflowConfig\n# HTML: from docutranslate.workflow.html_workflow import HtmlWorkflow, HtmlWorkflowConfig\n# SRT:  from docutranslate.workflow.srt_workflow import SrtWorkflow, SrtWorkflowConfig\n# ASS:   from docutranslate.workflow.ass_workflow import AssWorkflow, AssWorkflowConfig\n```\n\nKey config options:\n- **insert_mode**: `\"replace\"`, `\"append\"`, or `\"prepend\"` (for docx\u002Fxlsx\u002Fhtml\u002Fepub)\n- **json_paths**: JSONPath expressions for JSON translation (e.g., `[\"$.*\", \"$.name\"]`)\n- **separator**: Text separator for `\"append\"` \u002F `\"prepend\"` modes\n\n## Prerequisites and Detailed Configuration\n\n### 1. Get Large Model API Key\n\nTranslation functionality relies on Large Language Models. You need to obtain a `base_url`, `api_key`, and `model_id` from the corresponding AI platform.\n\n> Recommended Models: Volcengine's `doubao-seed-1-6-flash`, `doubao-seed-1-6` series, Zhipu's `glm-4-flash`, Alibaba Cloud's `qwen-plus`, `qwen-flash`, Deepseek's `deepseek-chat`, etc.\n\n> [302.AI](https:\u002F\u002Fshare.302.ai\u002FBgRLAe) 👈 Register via this link to get $1 free credit.\n\n| Platform Name | Get API Key | Base URL |\n|:---|:---|:---|\n| ollama | | http:\u002F\u002F127.0.0.1:11434\u002Fv1 |\n| lm studio | | http:\u002F\u002F127.0.0.1:1234\u002Fv1 |\n| 302.AI | [Click to Get](https:\u002F\u002Fshare.302.ai\u002FBgRLAe) | https:\u002F\u002Fapi.302.ai\u002Fv1 |\n| openrouter | [Click to Get](https:\u002F\u002Fopenrouter.ai\u002Fsettings\u002Fkeys) | https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1 |\n| openai | [Click to Get](https:\u002F\u002Fplatform.openai.com\u002Fapi-keys) | https:\u002F\u002Fapi.openai.com\u002Fv1\u002F |\n| gemini | [Click to Get](https:\u002F\u002Faistudio.google.com\u002Fu\u002F0\u002Fapikey) | https:\u002F\u002Fgenerativelanguage.googleapis.com\u002Fv1beta\u002Fopenai\u002F |\n| deepseek | [Click to Get](https:\u002F\u002Fplatform.deepseek.com\u002Fapi_keys) | https:\u002F\u002Fapi.deepseek.com\u002Fv1 |\n| Zhipu AI | [Click to Get](https:\u002F\u002Fopen.bigmodel.cn\u002Fusercenter\u002Fapikeys) | https:\u002F\u002Fopen.bigmodel.cn\u002Fapi\u002Fpaas\u002Fv4 |\n| Tencent Hunyuan | [Click to Get](https:\u002F\u002Fconsole.cloud.tencent.com\u002Fhunyuan\u002Fapi-key) | https:\u002F\u002Fapi.hunyuan.cloud.tencent.com\u002Fv1 |\n| Alibaba Bailian | [Click to Get](https:\u002F\u002Fbailian.console.aliyun.com\u002F?tab=model#\u002Fapi-key) | https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1 |\n| Volcengine | [Click to Get](https:\u002F\u002Fconsole.volcengine.com\u002Fark\u002Fregion:ark+cn-beijing\u002FapiKey?apikey=%7B%7D) | https:\u002F\u002Fark.cn-beijing.volces.com\u002Fapi\u002Fv3 |\n| SiliconFlow | [Click to Get](https:\u002F\u002Fcloud.siliconflow.cn\u002Faccount\u002Fak) | https:\u002F\u002Fapi.siliconflow.cn\u002Fv1 |\n| DMXAPI | [Click to Get](https:\u002F\u002Fwww.dmxapi.cn\u002Ftoken) | https:\u002F\u002Fwww.dmxapi.cn\u002Fv1 |\n| Juguang AI | [Click to Get](https:\u002F\u002Fai.juguang.chat\u002Fconsole\u002Ftoken) | https:\u002F\u002Fai.juguang.chat\u002Fv1 |\n\n### 2. PDF Parsing Engine (Skip if you don't need to translate PDFs)\n\n### 2.1 Get minerU Token (Online PDF Parsing, Free, Recommended)\n\nIf you choose `mineru` as the document parsing engine (`convert_engine=\"mineru\"`), you need to apply for a free Token.\n\n1. Visit [minerU Website](https:\u002F\u002Fmineru.net\u002FapiManage\u002Fdocs) to register and apply for the API.\n2. Create a new API Token in the [API Token Management Interface](https:\u002F\u002Fmineru.net\u002FapiManage\u002Ftoken).\n\n> **Note**: The minerU Token is valid for 14 days. Please recreate it after expiration.\n\n### 2.2. docling Engine Configuration (Local PDF Parsing)\n\nIf you choose `docling` as the document parsing engine (`convert_engine=\"docling\"`), it will download the required models from Hugging Face upon first use.\n\n> A better option is to download `docling_artifact.zip` from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases) and unzip it into your working directory.\n\n**Solutions for `docling` Model Download Network Issues:**\n\n1.  **Set Hugging Face Mirror (Recommended)**:\n\n*   **Method A (Environment Variable)**: Set the system environment variable `HF_ENDPOINT` and restart your IDE or terminal.\n    ```\n    HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n    ```\n*   **Method B (In Code)**: Add the following code at the beginning of your Python script.\n\n```python\nimport os\n\nos.environ['HF_ENDPOINT'] = 'https:\u002F\u002Fhf-mirror.com'\n```\n\n2.  **Offline Use (Pre-download Model Package)**:\n\n*   Download `docling_artifact.zip` from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases).\n*   Unzip it into your project directory.\n*   Specify the model path in the configuration (if the model is not in the same directory as the script):\n\n```python\nfrom docutranslate.converter.x2md.converter_docling import ConverterDoclingConfig\n\nconverter_config = ConverterDoclingConfig(\n    artifact=\".\u002Fdocling_artifact\",  # Point to the unzipped folder\n    code_ocr=True,\n    formula_ocr=True\n)\n```\n\n### 2.3. Locally Deployed MinerU Service\n\nFor offline\u002Fintranet environments, deploy `minerU` locally with API enabled. Set `mineru_deploy_base_url` to your minerU API endpoint.\n\n**Client SDK:**\n```python\nfrom docutranslate.sdk import Client\n\nclient = Client(\n    api_key=\"YOUR_LLM_API_KEY\",\n    model_id=\"llama3\",\n    to_lang=\"Chinese\",\n    convert_engine=\"mineru_deploy\",\n    mineru_deploy_base_url=\"http:\u002F\u002F127.0.0.1:8000\",  # Your minerU API address\n)\nresult = client.translate(\"document.pdf\")\nresult.save(fmt=\"markdown\")\n```\n\n## FAQ\n\n**Q: Output is in original language?**\nA: Check logs for errors. Usually due to exhausted API credits or network issues.\n\n**Q: Port 8010 occupied?**\nA: Use `docutranslate -i -p 8011` or set `DOCUTRANSLATE_PORT=8011`.\n\n**Q: Scanned PDFs supported?**\nA: Yes, use `mineru` engine with OCR capabilities.\n\n**Q: First PDF translation slow?**\nA: `docling` needs to download models on first run. Use Hugging Face mirror or pre-download artifact.\n\n**Q: Use in intranet\u002Foffline?**\nA: Yes. Use local LLM (Ollama\u002FLM Studio) and local minerU or docling.\n\n**Q: PDF cache mechanism?**\nA: `MarkdownBasedWorkflow` caches parsing results in memory (last 10 parses). Configure via `DOCUTRANSLATE_CACHE_NUM`.\n\n**Q: Enable proxy?**\nA: Set `system_proxy_enable=True` in TranslatorConfig.\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#xunbu\u002Fdocutranslate&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## Donation Support\n\nWelcome to support the author. Please specify the reason for the donation in the comments!\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_d76bebf5a3f6.jpg\" alt=\"Donation Code\" style=\"width: 250px;\">\n\u003C\u002Fp>\n","\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_3b306f789e23.png\" alt=\"项目Logo\" style=\"width: 150px\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">DocuTranslate\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fxunbu\u002Fdocutranslate?style=flat-square&logo=github&color=blue\" alt=\"GitHub星标\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fxunbu\u002Fdocutranslate\u002Ftotal?logo=github&style=flat-square\" alt=\"GitHub下载量\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fdocutranslate\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdocutranslate?style=flat-square\" alt=\"PyPI版本\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11+-3776AB?logo=python&logoColor=white&style=flat-square\" alt=\"Python版本\">\u003C\u002Fa>\n  \u003Ca href=\".\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fxunbu\u002Fdocutranslate?style=flat-square\" alt=\"许可证\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"\u002FREADME_ZH.md\">\u003Cstrong>简体中文\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME.md\">\u003Cstrong>English\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME_JP.md\">\u003Cstrong>日本語\u003C\u002Fstrong>\u003C\u002Fa> \u002F \u003Ca href=\"\u002FREADME_VI.md\">\u003Cstrong>Tiếng Việt\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  一款基于大语言模型的轻量级本地文件翻译工具。\n\u003C\u002Fp>\n\n- ✅ **支持多种格式**：可翻译`pdf`、`docx`、`xlsx`、`md`、`txt`、`json`、`epub`、`srt`、`ass`等文件。\n- ✅ **自动生成术语表**：支持自动生成术语表，确保术语一致性。\n- ✅ **PDF表格、公式、代码识别**：利用`docling`和`mineru` PDF解析引擎，识别并翻译学术论文中常见的表格、公式和代码。\n- ✅ **JSON翻译**：支持通过路径（`jsonpath-ng`语法）指定要翻译的JSON值。\n- ✅ **保留Word\u002FExcel格式**：支持`docx`和`xlsx`文件（暂不支持`doc`或`xls`），同时保持原有格式。\n- ✅ **多AI平台支持**：支持大多数AI平台，可实现高性能并发AI翻译，并支持自定义提示词。\n- ✅ **异步支持**：专为高性能场景设计，提供完整的异步支持和接口，实现多任务并行处理。\n- ✅ **局域网与多用户支持**：支持局域网内多用户同时使用。\n- ✅ **交互式Web界面**：提供开箱即用的Web UI和RESTful API，方便集成与使用。\n- ✅ **小巧便携的软件包**：Windows和Mac便携版软件包小于40MB（不使用`docling`进行本地PDF解析的版本）。\n\n> 翻译`pdf`时，会先将其转换为markdown。这将**丢失**原始排版。对排版要求严格的用户请注意。\n\n> QQ社区群：1047781902 1081128602\n\n**UI界面**：\n![UI界面](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_b91d63302187.png)\n\n**论文翻译**：\n![论文翻译](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_fb4eb2484f39.png)\n\n**小说翻译**：\n![小说翻译](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_e589d0565c03.png)\n\n## 集成包\n\n对于希望快速上手的用户，我们在[GitHub发布页面](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases)提供了集成包。只需下载、解压，输入AI平台API-Key即可开始使用。\n\n- **DocuTranslate**：标准版。使用`minerU`（在线或本地部署）进行PDF解析。支持本地minerU API调用。（推荐）\n- **DocuTranslate_full**：完整版。内置`docling`本地PDF解析引擎。如果需要离线PDF解析且无需minerU，请选择此版本。\n\n## 快速开始\n\n### 使用pip\n\n```bash\n# 基本安装\npip install docutranslate\n\n# 安装mcp扩展\npip install docutranslate[mcp]\n\n# 安装docling扩展\npip install docutranslate[docling]\n\ndocutranslate -i\n\n#docutranslate -i --with-mcp\n```\n\n### 使用uv\n\n```bash\n# 初始化环境\nuv init\n\n# 基本安装\nuv add docutranslate\n\n# 安装mcp扩展\nuv add docutranslate[mcp]\n\n# 安装docling扩展\nuv add docutranslate[docling]\n\nuv run --no-dev docutranslate -i\n\n#uv run --no-dev docutranslate -i --with-mcp\n```\n\n### 使用git\n\n```bash\n# 初始化环境\ngit clone https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate.git\n\ncd docutranslate\n\nuv sync --no-dev\n# uv sync --no-dev --extra mcp\n# uv sync --no-dev --extra docling\n# uv sync --no-dev --all-extras\n\n```\n\n### 使用docker\n\n```bash\ndocker run -d -p 8010:8010 xunbu\u002Fdocutranslate:latest #不支持docling\n# docker run -it -p 8010:8010 xunbu\u002Fdocutranslate:latest\n# docker run -it -p 8010:8010 xunbu\u002Fdocutranslate:v1.5.4\n```\n\n## 启动Web UI与API服务\n\n为了便于使用，DocuTranslate提供了功能完备的Web界面和RESTful API。\n\n**启动服务：**\n\n```bash\n  docutranslate -i                           （启动GUI，默认本地访问）\n  docutranslate -i --host 0.0.0.0            （允许局域网内其他设备访问）\n  docutranslate -i -p 8081                   （指定端口号）\n  docutranslate -i --cors                    （启用默认CORS设置）\n  docutranslate -i --with-mcp                （启动GUI并附带MCP SSE端点、共享队列、共享端口）\n  docutranslate --mcp                         （启动MCP服务器，stdio模式）\n  docutranslate --mcp --transport sse         （启动MCP服务器，SSE模式）\n  docutranslate --mcp --transport sse --mcp-host MCP_HOST   --mcp-port MCP_PORT  （启动MCP服务器，SSE模式）\n  docutranslate --mcp --transport streamable-http  （启动MCP服务器，Streamable HTTP模式）\n```\n\n- **交互式界面**：服务启动后，请在浏览器中访问`http:\u002F\u002F127.0.0.1:8010`（或您指定的端口）。\n- **API文档**：完整的API文档（Swagger UI）位于`http:\u002F\u002F127.0.0.1:8010\u002Fdocs`。\n- MCP：SSE服务端点位于`http:\u002F\u002F127.0.0.1:8010\u002Fmcp\u002Fsse`（使用--with-mcp启动）或`http:\u002F\u002F127.0.0.1:8000\u002Fmcp\u002Fsse`（使用--mcp启动）\n\n## MCP配置\n\nDocuTranslate可用作MCP（模型上下文协议）服务器。详细文档请参阅[MCP文档](.\u002Fdocutranslate\u002Fmcp\u002FREADME.md)。\n\n### 支持的环境变量\n\n| 环境变量 | 描述 | 必需 |\n|---------------------|-------------|----------|\n| `DOCUTRANSLATE_API_KEY` | AI平台API密钥 | 是 |\n| `DOCUTRANSLATE_BASE_URL` | AI平台基础URL | 是 |\n| `DOCUTRANSLATE_MODEL_ID` | 模型ID | 是 |\n| `DOCUTRANSLATE_TO_LANG` | 目标语言（默认：中文） | 否 |\n| `DOCUTRANSLATE_CONCURRENT` | 并发请求数（默认：10） | 否 |\n| `DOCUTRANSLATE_CONVERT_ENGINE` | PDF转换引擎 | 否 |\n| `DOCUTRANSLATE_MINERU_TOKEN` | MinerU API Token | 否 |\n\n### uvx 配置（无需安装）\n\n```json\n{\n  \"mcpServers\": {\n    \"docutranslate\": {\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"docutranslate[mcp]\", \"docutranslate\", \"--mcp\"],\n      \"env\": {\n        \"DOCUTRANSLATE_API_KEY\": \"sk-xxxxxx\",\n        \"DOCUTRANSLATE_BASE_URL\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n        \"DOCUTRANSLATE_MODEL_ID\": \"gpt-4o\",\n        \"DOCUTRANSLATE_TO_LANG\": \"中文\",\n        \"DOCUTRANSLATE_CONCURRENT\": \"10\",\n        \"DOCUTRANSLATE_CONVERT_ENGINE\": \"mineru\",\n        \"DOCUTRANSLATE_MINERU_TOKEN\": \"your-mineru-token\"\n      }\n    }\n  }\n}\n```\n\n### SSE 模式配置\n\n首先以 SSE 模式启动 MCP 服务器：\n\n```bash\ndocutranslate --mcp --transport sse --mcp-host 127.0.0.1 --mcp-port 8000\n```\n\n然后在客户端配置 SSE 端点：`http:\u002F\u002F127.0.0.1:8000\u002Fmcp\u002Fsse`\n\n## 使用示例\n\n### 使用简单客户端 SDK（推荐）\n\n最简便的入门方式是使用 `Client` 类，它提供了简单直观的翻译 API：\n\n```python\nfrom docutranslate.sdk import Client\n\n# 使用您的 AI 平台设置初始化客户端\nclient = Client(\n    api_key=\"YOUR_OPENAI_API_KEY\",  # 或其他任何 AI 平台的 API 密钥\n    base_url=\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002F\",\n    model_id=\"gpt-4o\",\n    to_lang=\"中文\",\n    concurrent=10,  # 并发请求数量\n)\n\n# 示例 1：翻译纯文本文件（无需 PDF 解析引擎）\nresult = client.translate(\"path\u002Fto\u002Fyour\u002Fdocument.txt\")\nprint(f\"翻译完成！保存到：{result.save()}\")\n\n# 示例 2：翻译 PDF 文件（需要 mineru_token 或本地部署）\n# 选项 A：使用在线 MinerU（需 token：https:\u002F\u002Fmineru.net\u002FapiManage\u002Ftoken）\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.pdf\",\n    convert_engine=\"mineru\",\n    mineru_token=\"YOUR_MINERU_TOKEN\",  # 替换为您自己的 MinerU Token\n    formula_ocr=True,  # 开启公式识别\n)\nresult.save(fmt=\"html\")\n\n# 选项 B：使用本地部署的 MinerU（推荐用于内网或离线环境）\n# 首先启动本地 MinerU 服务，参考：https:\u002F\u002Fgithub.com\u002Fopendatalab\u002FMinerU\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.pdf\",\n    convert_engine=\"mineru_deploy\",\n    mineru_deploy_base_url=\"http:\u002F\u002F127.0.0.1:8000\",  # 您的本地 MinerU 地址\n    mineru_deploy_backend=\"hybrid-auto-engine\",  # 后端类型\n)\nresult.save(fmt=\"markdown\")\n\n# 示例 3：翻译 Docx 文件（保留格式）\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fdocument.docx\",\n    insert_mode=\"replace\",  # replace\u002Fappend\u002Fprepend\n)\nresult.save(fmt=\"docx\")  # 保存为 docx 格式\n\n# 示例 4：导出为 base64 编码字符串（用于 API 传输）\nbase64_content = result.export(fmt=\"html\")\nprint(f\"导出内容长度：{len(base64_content)}\")\n\n# 您也可以访问底层工作流进行高级操作\n\n# 工作流 = 结果.工作流\n```\n\n**客户端功能：**\n- **自动检测**：自动检测文件类型并选择合适的工作流\n- **灵活配置**：可在每次翻译调用时覆盖任何默认设置\n- **多种输出选项**：保存到磁盘或导出为Base64字符串\n- **异步支持**：使用`translate_async()`进行并发翻译任务\n\n#### 客户端SDK参数\n\n| 参数 | 类型 | 默认值 | 描述 |\n|:---|:---|:---|:---|\n| **api_key** | `str` | - | AI平台API密钥 |\n| **base_url** | `str` | - | AI平台基础URL（例如：`https:\u002F\u002Fapi.openai.com\u002Fv1\u002F`） |\n| **model_id** | `str` | - | 用于翻译的模型ID |\n| **to_lang** | `str` | - | 目标语言（例如：“中文”、“英语”、“日语”） |\n| **concurrent** | `int` | 10 | 并发LLM请求数量 |\n| **convert_engine** | `str` | `\"mineru\"` | PDF解析引擎：“mineru”、“docling”、“mineru_deploy” |\n| **md2docx_engine** | `str` | `\"auto\"` | Markdown转Docx引擎：“python”（纯Python）、“pandoc”（使用Pandoc）、“auto”（若安装Pandoc则使用Pandoc，否则使用Python）、`null`（不生成Docx） |\n| **mineru_deploy_base_url** | `str` | - | 本地minerU API地址（当`convert_engine=\"mineru_deploy\"`时） |\n| **mineru_deploy_parse_method** | `str` | `\"auto\"` | 本地minerU解析方法：“auto”、“txt”、“ocr” |\n| **mineru_deploy_table_enable** | `bool` | `True` | 启用本地minerU表格识别 |\n| **mineru_token** | `str` | - | minerU API令牌（当使用在线minerU时） |\n| **skip_translate** | `bool` | `False` | 跳过翻译，仅解析文档 |\n| **output_dir** | `str` | `\".\u002Foutput\"` | `save()`的默认输出目录 |\n| **chunk_size** | `int` | 3000 | LLM处理的文本分块大小 |\n| **temperature** | `float` | 0.3 | LLM温度参数 |\n| **timeout** | `int` | 60 | 请求超时时间，单位为秒 |\n| **retry** | `int` | 3 | 失败时重试次数 |\n| **provider** | `str` | `\"auto\"` | AI提供商类型（auto、openai、azure等） |\n| **force_json** | `bool` | `False` | 强制JSON输出模式 |\n| **rpm** | `int` | - | 每分钟请求数限制 |\n| **tpm** | `int` | - | 每分钟令牌数限制 |\n| **extra_body** | `str` | - | 额外请求体参数，以JSON字符串格式传递，将合并到API请求中 |\n| **thinking** | `str` | `\"auto\"` | 思考模式：“auto”、“none”、“block” |\n| **custom_prompt** | `str` | - | 自定义翻译提示 |\n| **system_proxy_enable** | `bool` | `False` | 启用系统代理 |\n| **insert_mode** | `str` | `\"replace\"` | Docx\u002FXlsx\u002FTxt插入模式：“replace”、“append”、“prepend” |\n| **separator** | `str` | `\"\\n\"` | append\u002Fprepend模式下的文本分隔符 |\n| **segment_mode** | `str` | `\"line\"` | 分段模式：“line”、“paragraph”、“none” |\n| **translate_regions** | `list` | - | Excel翻译区域（例如：“Sheet1!A1:B10”） |\n| **model_version** | `str` | `\"vlm\"` | MinerU模型版本：“pipeline”、“vlm” |\n| **formula_ocr** | `bool` | `True` | 启用PDF解析中的公式OCR |\n| **code_ocr** | `bool` | `True` | 启用PDF解析中的代码OCR |\n| **mineru_deploy_backend** | `str` | `\"hybrid-auto-engine\"` | MinerU本地后端：“pipeline”、“vlm-auto-engine”、“vlm-http-client”、“hybrid-auto-engine”、“hybrid-http-client” |\n| **mineru_deploy_formula_enable** | `bool` | `True` | 启用本地MinerU的公式识别 |\n| **mineru_deploy_start_page_id** | `int` | 0 | 本地MinerU解析的起始页码 |\n| **mineru_deploy_end_page_id** | `int` | 99999 | 本地MinerU解析的结束页码 |\n| **mineru_deploy_lang_list** | `list` | - | 本地MinerU解析的语言列表 |\n| **mineru_deploy_server_url** | `str` | - | MinerU本地服务器URL |\n| **json_paths** | `list` | - | JSONPath表达式，用于JSON翻译（例如：“$.data.*”） |\n| **glossary_generate_enable** | `bool` | - | 启用自动术语表生成 |\n| **glossary_dict** | `dict` | - | 术语表字典（例如：`{\"Jobs\": \"史蒂夫·乔布斯\"}`） |\n| **glossary_agent_config** | `dict` | - | 术语表代理配置 |\n\n#### 结果方法\n\n| 方法 | 参数 | 描述 |\n|:---|:---|:---|\n| **save()** | `output_dir`、`name`、`fmt` | 将翻译结果保存到磁盘 |\n| **export()** | `fmt` | 导出为Base64编码字符串 |\n| **supported_formats** | - | 获取支持的输出格式列表 |\n| **workflow** | - | 访问底层工作流对象 |\n\n```python\nimport asyncio\nfrom docutranslate.sdk import Client\n\nasync def translate_multiple():\n    client = Client(\n        api_key=\"YOUR_API_KEY\",\n        base_url=\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002F\",\n        model_id=\"gpt-4o\",\n        to_lang=\"中文\",\n    )\n\n    # 并发翻译多个文件\n    files = [\"doc1.pdf\", \"doc2.docx\", \"notes.txt\"]\n    results = await asyncio.gather(\n        *[client.translate_async(f) for f in files]\n    )\n\n    for r in results:\n        print(f\"已保存：{r.save()}\")\n\nasyncio.run(translate_multiple())\n```\n\n### 使用工作流API（用于高级控制）\n\n如需更多控制，可直接使用工作流API。每个工作流遵循相同的模式：\n\n```python\n# 模式：\n# 1. 创建TranslatorConfig（LLM设置）\n# 2. 创建WorkflowConfig（工作流设置）\n# 3. 创建工作流实例\n# 4. workflow.read_path(文件)\n# 5. await workflow.translate_async()\n\n# 6. workflow.save_as_*(name=...) 或 export_to_*(...)\n```\n#### 可用工作流与输出方法\n\n| 工作流 | 输入 | save_as_* | export_to_* | 关键配置选项 |\n|:---|:---|:---|:---|:---|\n| **MarkdownBasedWorkflow** | `.pdf`, `.docx`, `.md`, `.png`, `.jpg` | `html`, `markdown`, `markdown_zip`, `docx` | `html`, `markdown`, `markdown_zip`, `docx` | `convert_engine`, `md2docx_engine`, `translator_config` |\n| **TXTWorkflow** | `.txt` | `txt`, `html` | `txt`, `html` | `translator_config` |\n| **JsonWorkflow** | `.json` | `json`, `html` | `json`, `html` | `translator_config`, `json_paths` |\n| **DocxWorkflow** | `.docx` | `docx`, `html` | `docx`, `html` | `translator_config`, `insert_mode` |\n| **XlsxWorkflow** | `.xlsx`, `.csv` | `xlsx`, `html` | `xlsx`, `html` | `translator_config`, `insert_mode` |\n| **SrtWorkflow** | `.srt` | `srt`, `html` | `srt`, `html` | `translator_config` |\n| **EpubWorkflow** | `.epub` | `epub`, `html` | `epub`, `html` | `translator_config`, `insert_mode` |\n| **HtmlWorkflow** | `.html`, `.htm` | `html` | `html` | `translator_config`, `insert_mode` |\n| **AssWorkflow** | `.ass` | `ass`, `html` | `ass`, `html` | `translator_config` |\n\n#### 关键配置选项\n\n**通用TranslatorConfig选项：**\n\n| 选项 | 类型 | 默认值 | 描述 |\n|:---|:---|:---|:---|\n| `base_url` | `str` | - | AI平台基础URL |\n| `api_key` | `str` | - | AI平台API密钥 |\n| `model_id` | `str` | - | 模型ID |\n| `to_lang` | `str` | - | 目标语言 |\n| `chunk_size` | `int` | 3000 | 文本分块大小 |\n| `concurrent` | `int` | 10 | 并发请求数 |\n| `temperature` | `float` | 0.3 | 大语言模型温度 |\n| `timeout` | `int` | 60 | 请求超时时间（秒） |\n| `retry` | `int` | 3 | 重试次数 |\n\n**格式特定选项：**\n\n| 选项 | 适用工作流 | 描述 |\n|:---|:---|:---|\n| `insert_mode` | Docx, Xlsx, Html, Epub | `\"replace\"`（默认）、`\"append\"`、`\"prepend\"` |\n| `json_paths` | Json | JSONPath表达式（例如：`[\"$.*\", \"$.name\"]`） |\n| `separator` | Docx, Xlsx, Html, Epub | 用于append\u002Fprepend模式的文本分隔符 |\n| `convert_engine` | MarkdownBased | `\"mineru\"`（默认）、`\"docling\"`、`\"mineru_deploy\"` |\n\n#### 示例1：翻译PDF文件（使用MarkdownBasedWorkflow）\n\n这是最常见的使用场景。我们将使用`minerU`引擎将PDF转换为Markdown，然后通过大语言模型进行翻译。本示例采用异步执行。\n\n```python\nimport asyncio\nfrom docutranslate.workflow.md_based_workflow import MarkdownBasedWorkflow, MarkdownBasedWorkflowConfig\nfrom docutranslate.converter.x2md.converter_mineru import ConverterMineruConfig\nfrom docutranslate.translator.ai_translator.md_translator import MDTranslatorConfig\nfrom docutranslate.exporter.md.md2html_exporter import MD2HTMLExporterConfig\n\n\nasync def main():\n    # 1. 构建翻译器配置\n    translator_config = MDTranslatorConfig(\n        base_url=\"https:\u002F\u002Fopen.bigmodel.cn\u002Fapi\u002Fpaas\u002Fv4\",  # AI平台基础URL\n        api_key=\"YOUR_ZHIPU_API_KEY\",  # AI平台API密钥\n        model_id=\"glm-4-air\",  # 模型ID\n        to_lang=\"English\",  # 目标语言\n        chunk_size=3000,  # 文本分块大小\n        concurrent=10,  # 并发级别\n        # glossary_generate_enable=True, # 启用自动术语表生成\n        # glossary_dict={\"Jobs\":\"Steve Jobs\"}, # 传入术语表字典\n        # system_proxy_enable=True, # 启用系统代理\n    )\n\n    # 2. 构建转换器配置（使用minerU）\n    converter_config = ConverterMineruConfig(\n        mineru_token=\"YOUR_MINERU_TOKEN\",  # 您的minerU Token\n        formula_ocr=True  # 启用公式识别\n    )\n\n    # 3. 构建主工作流配置\n    workflow_config = MarkdownBasedWorkflowConfig(\n        convert_engine=\"mineru\",  # 指定解析引擎\n        converter_config=converter_config,  # 传入转换器配置\n        translator_config=translator_config,  # 传入翻译器配置\n        html_exporter_config=MD2HTMLExporterConfig(cdn=True)  # HTML导出配置\n    )\n\n    # 4. 实例化工作流\n    workflow = MarkdownBasedWorkflow(config=workflow_config)\n\n    # 5. 读取文件并执行翻译\n    print(\"开始读取并翻译文件...\")\n    workflow.read_path(\"path\u002Fto\u002Fyour\u002Fdocument.pdf\")\n    await workflow.translate_async()\n    # 或者使用同步方法\n    # workflow.translate()\n    print(\"翻译完成！\")\n\n    # 6. 保存结果\n    workflow.save_as_html(name=\"translated_document.html\")\n    workflow.save_as_markdown_zip(name=\"translated_document.zip\")\n    workflow.save_as_markdown(name=\"translated_document.md\")  # 带内嵌图片的Markdown\n    print(\"文件已保存到.\u002Foutput文件夹。\")\n\n    # 或者直接获取内容字符串\n    html_content = workflow.export_to_html()\n    html_content = workflow.export_to_markdown()\n    # print(html_content)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### 其他工作流\n\n所有工作流都遵循相同的模式。导入对应的配置和工作流，然后进行配置：\n\n```python\n# TXT：from docutranslate.workflow.txt_workflow import TXTWorkflow, TXTWorkflowConfig\n# JSON：from docutranslate.workflow.json_workflow import JsonWorkflow, JsonWorkflowConfig\n# DOCX：from docutranslate.workflow.docx_workflow import DocxWorkflow, DocxWorkflowConfig\n# XLSX：from docutranslate.workflow.xlsx_workflow import XlsxWorkflow, XlsxWorkflowConfig\n# EPUB：from docutranslate.workflow.epub_workflow import EpubWorkflow, EpubWorkflowConfig\n# HTML：from docutranslate.workflow.html_workflow import HtmlWorkflow, HtmlWorkflowConfig\n# SRT：from docutranslate.workflow.srt_workflow import SrtWorkflow, SrtWorkflowConfig\n# ASS：from docutranslate.workflow.ass_workflow import AssWorkflow, AssWorkflowConfig\n```\n\n关键配置选项：\n- **insert_mode**：`\"replace\"`、`\"append\"`或`\"prepend\"`（适用于docx\u002Fxlsx\u002Fhtml\u002Fepub）\n- **json_paths**：JSON翻译的JSONPath表达式（例如：`[\"$.*\", \"$.name\"]`）\n- **separator**：用于`\"append\"` \u002F `\"prepend\"`模式的文本分隔符\n\n## 前提条件与详细配置\n\n### 1. 获取大模型 API 密钥\n\n翻译功能依赖于大型语言模型。您需要从相应的 AI 平台获取 `base_url`、`api_key` 和 `model_id`。\n\n> 推荐模型：火山引擎的 `doubao-seed-1-6-flash`、`doubao-seed-1-6` 系列，智谱的 `glm-4-flash`，阿里云的 `qwen-plus`、`qwen-flash`，Deepseek 的 `deepseek-chat` 等。\n\n> [302.AI](https:\u002F\u002Fshare.302.ai\u002FBgRLAe) 👈 通过此链接注册即可获得 1 美元免费额度。\n\n| 平台名称 | 获取 API 密钥 | Base URL |\n|:---|:---|:---|\n| ollama | | http:\u002F\u002F127.0.0.1:11434\u002Fv1 |\n| lm studio | | http:\u002F\u002F127.0.0.1:1234\u002Fv1 |\n| 302.AI | [点击获取](https:\u002F\u002Fshare.302.ai\u002FBgRLAe) | https:\u002F\u002Fapi.302.ai\u002Fv1 |\n| openrouter | [点击获取](https:\u002F\u002Fopenrouter.ai\u002Fsettings\u002Fkeys) | https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1 |\n| openai | [点击获取](https:\u002F\u002Fplatform.openai.com\u002Fapi-keys) | https:\u002F\u002Fapi.openai.com\u002Fv1\u002F |\n| gemini | [点击获取](https:\u002F\u002Faistudio.google.com\u002Fu\u002F0\u002Fapikey) | https:\u002F\u002Fgenerativelanguage.googleapis.com\u002Fv1beta\u002Fopenai\u002F |\n| deepseek | [点击获取](https:\u002F\u002Fplatform.deepseek.com\u002Fapi_keys) | https:\u002F\u002Fapi.deepseek.com\u002Fv1 |\n| 智谱 AI | [点击获取](https:\u002F\u002Fopen.bigmodel.cn\u002Fusercenter\u002Fapikeys) | https:\u002F\u002Fopen.bigmodel.cn\u002Fapi\u002Fpaas\u002Fv4 |\n| 腾讯混元 | [点击获取](https:\u002F\u002Fconsole.cloud.tencent.com\u002Fhunyuan\u002Fapi-key) | https:\u002F\u002Fapi.hunyuan.cloud.tencent.com\u002Fv1 |\n| 阿里百炼 | [点击获取](https:\u002F\u002Fbailian.console.aliyun.com\u002F?tab=model#\u002Fapi-key) | https:\u002F\u002Fdashscope.aliyuncs.com\u002Fcompatible-mode\u002Fv1 |\n| 火山引擎 | [点击获取](https:\u002F\u002Fconsole.volcengine.com\u002Fark\u002Fregion:ark+cn-beijing\u002FapiKey?apikey=%7B%7D) | https:\u002F\u002Fark.cn-beijing.volces.com\u002Fapi\u002Fv3 |\n| SiliconFlow | [点击获取](https:\u002F\u002Fcloud.siliconflow.cn\u002Faccount\u002Fak) | https:\u002F\u002Fapi.siliconflow.cn\u002Fv1 |\n| DMXAPI | [点击获取](https:\u002F\u002Fwww.dmxapi.cn\u002Ftoken) | https:\u002F\u002Fwww.dmxapi.cn\u002Fv1 |\n| 居光 AI | [点击获取](https:\u002F\u002Fai.juguang.chat\u002Fconsole\u002Ftoken) | https:\u002F\u002Fai.juguang.chat\u002Fv1 |\n\n### 2. PDF 解析引擎（如无需翻译 PDF，请跳过）\n\n### 2.1 获取 minerU Token（在线 PDF 解析，免费，推荐）\n\n如果您选择 `mineru` 作为文档解析引擎（`convert_engine=\"mineru\"`），则需要申请一个免费的 Token。\n\n1. 访问 [minerU 官网](https:\u002F\u002Fmineru.net\u002FapiManage\u002Fdocs) 注册并申请 API。\n2. 在 [API Token 管理界面](https:\u002F\u002Fmineru.net\u002FapiManage\u002Ftoken) 创建一个新的 API Token。\n\n> **注意**：minerU Token 有效期为 14 天，到期后请重新生成。\n\n### 2.2 docling 引擎配置（本地 PDF 解析）\n\n如果您选择 `docling` 作为文档解析引擎（`convert_engine=\"docling\"`），它会在首次使用时从 Hugging Face 下载所需的模型。\n\n> 更好的选择是从 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases) 下载 `docling_artifact.zip`，并解压到您的工作目录中。\n\n**解决 `docling` 模型下载网络问题的方案：**\n\n1. **设置 Hugging Face 镜像（推荐）**：\n\n*   **方法 A（环境变量）**：设置系统环境变量 `HF_ENDPOINT`，并重启您的 IDE 或终端。\n    ```\n    HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n    ```\n*   **方法 B（代码中）**：在 Python 脚本开头添加以下代码。\n\n```python\nimport os\n\nos.environ['HF_ENDPOINT'] = 'https:\u002F\u002Fhf-mirror.com'\n```\n\n2. **离线使用（提前下载模型包）**：\n\n*   从 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Freleases) 下载 `docling_artifact.zip`。\n*   解压到您的项目目录。\n*   在配置中指定模型路径（如果模型与脚本不在同一目录）：\n\n```python\nfrom docutranslate.converter.x2md.converter_docling import ConverterDoclingConfig\n\nconverter_config = ConverterDoclingConfig(\n    artifact=\".\u002Fdocling_artifact\",  # 指向解压后的文件夹\n    code_ocr=True,\n    formula_ocr=True\n)\n```\n\n### 2.3 本地部署 minerU 服务\n\n对于离线\u002F内网环境，可本地部署启用 API 的 `minerU`。将 `mineru_deploy_base_url` 设置为您 minerU 的 API 地址。\n\n**客户端 SDK：**\n```python\nfrom docutranslate.sdk import Client\n\nclient = Client(\n    api_key=\"YOUR_LLM_API_KEY\",\n    model_id=\"llama3\",\n    to_lang=\"中文\",\n    convert_engine=\"mineru_deploy\",\n    mineru_deploy_base_url=\"http:\u002F\u002F127.0.0.1:8000\",  # 您的 minerU API 地址\n)\nresult = client.translate(\"document.pdf\")\nresult.save(fmt=\"markdown\")\n```\n\n## 常见问题\n\n**问：输出是原文语言？**\n答：检查日志是否有错误。通常是由于 API 积分耗尽或网络问题。\n\n**问：端口 8010 被占用？**\n答：使用 `docutranslate -i -p 8011` 或设置 `DOCUTRANSLATE_PORT=8011`。\n\n**问：支持扫描的 PDF？**\n答：是的，使用具备 OCR 功能的 `mineru` 引擎。\n\n**问：第一次翻译 PDF 较慢？**\n答：`docling` 首次运行时需要下载模型。可使用 Hugging Face 镜像或提前下载 artifact。\n\n**问：用于内网\u002F离线环境？**\n答：可以。使用本地 LLM（Ollama\u002FLM Studio）和本地 minerU 或 docling。\n\n**问：PDF 缓存机制？**\n答：`MarkdownBasedWorkflow` 会将解析结果缓存在内存中（最近 10 次解析）。可通过 `DOCUTRANSLATE_CACHE_NUM` 进行配置。\n\n**问：启用代理？**\n答：在 TranslatorConfig 中设置 `system_proxy_enable=True`。\n\n## 星数历史\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#xunbu\u002Fdocutranslate&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png\" \u002F>\n   \u003Cimg alt=\"星数历史图\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_4d46b3220525.png\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## 捐赠支持\n\n欢迎支持作者。请在评论中注明捐赠用途！\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_readme_d76bebf5a3f6.jpg\" alt=\"捐赠码\" style=\"width: 250px;\">\n\u003C\u002Fp>","# DocuTranslate 快速上手指南\n\n## 环境准备\n\n- **系统要求**：Windows \u002F macOS \u002F Linux，推荐 Python 3.11+\n- **前置依赖**：\n  - Python 3.11+（推荐使用 `uv` 或 `pyenv` 管理）\n  - 网络访问权限（用于调用 AI API）\n  - 如需翻译 PDF，建议准备 MinerU 或 docling 引擎（见安装步骤）\n\n> 国内用户推荐使用清华镜像加速 pip 安装：  \n> `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple docutranslate`\n\n## 安装步骤\n\n### 方法一：使用 pip（推荐）\n\n```bash\n# 基础安装\npip install docutranslate\n\n# 安装 MinerU 扩展（推荐用于 PDF 翻译）\npip install docutranslate[mcp]\n\n# 安装 Docling 扩展（离线 PDF 解析）\npip install docutranslate[docling]\n```\n\n### 方法二：使用 uv（更快更轻量）\n\n```bash\n# 初始化环境\nuv init\n\n# 安装基础版本\nuv add docutranslate\n\n# 安装 MCP 扩展\nuv add docutranslate[mcp]\n\n# 启动 Web 界面\nuv run --no-dev docutranslate -i\n```\n\n### 方法三：使用 Docker（一键部署）\n\n```bash\n# 启动 Web 服务（默认端口 8010，不包含 docling）\ndocker run -d -p 8010:8010 xunbu\u002Fdocutranslate:latest\n```\n\n## 基本使用\n\n### 最简示例：翻译文本文件\n\n```python\nfrom docutranslate.sdk import Client\n\nclient = Client(\n    api_key=\"YOUR_API_KEY\",           # 替换为你的 OpenAI \u002F 通义 \u002F 月之暗面等 API Key\n    base_url=\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002F\",  # 替换为对应平台地址\n    model_id=\"gpt-4o\",\n    to_lang=\"Chinese\",\n    concurrent=10\n)\n\n# 翻译 txt 文件\nresult = client.translate(\"path\u002Fto\u002Fyour\u002Fdocument.txt\")\nprint(f\"翻译完成，保存路径：{result.save()}\")\n```\n\n### 翻译 PDF（使用 MinerU 在线服务）\n\n```python\nresult = client.translate(\n    \"path\u002Fto\u002Fyour\u002Fpaper.pdf\",\n    convert_engine=\"mineru\",\n    mineru_token=\"YOUR_MINERU_TOKEN\",  # 从 https:\u002F\u002Fmineru.net 获取\n    formula_ocr=True\n)\nresult.save(fmt=\"html\")  # 保存为 HTML 格式\n```\n\n### 翻译 Word 文档（保留格式）\n\n```python\nresult = client.translate(\"path\u002Fto\u002Fyour\u002Fdocument.docx\", insert_mode=\"replace\")\nresult.save(fmt=\"docx\")  # 输出为原格式 .docx\n```\n\n启动 Web 界面后，访问 `http:\u002F\u002F127.0.0.1:8010` 可通过图形界面拖拽文件翻译，支持多用户局域网共享。","一位中国高校研究者正在撰写一篇英文论文，准备投稿至国际期刊，但需要将中文初稿中的图表说明、参考文献和公式注释完整翻译为专业英文，同时保留原有 Word 格式与排版结构。\n\n### 没有 docutranslate 时\n- 手动复制粘贴内容到翻译软件，极易遗漏公式、表格中的文字，导致论文关键信息丢失。\n- 每次翻译后需重新调整 Word 格式，耗费数小时，还常出现字体错乱、段落错位。\n- 专业术语如“卷积神经网络”“反向传播”缺乏统一译法，不同段落翻译不一致，被审稿人质疑专业性。\n- 多次使用在线翻译平台存在数据泄露风险，敏感研究数据可能被第三方截取。\n- 翻译过程中无法批量处理附录中的 JSON 配置文件和参考文献的 BibTeX 条目，必须单独处理，效率极低。\n\n### 使用 docutranslate 后\n- 直接上传 Word 文档，自动识别并翻译表格、公式标注和代码片段，保留原始排版，无需手动重制。\n- 自动构建术语表，首次翻译“Transformer架构”后，全文其余出现均统一译为“Transformer architecture”，确保术语一致性。\n- 支持本地部署，所有翻译在内网完成，研究数据零外传，符合学术机构数据安全规范。\n- 一键翻译附录中的 JSON 文件，通过 jsonpath-ng 指定仅翻译 `\"description\"` 字段，其余结构完全保留。\n- Web 界面支持多人协作，合作者可同时查看翻译进度，实时同步术语库，团队协作效率提升 70%。\n\ndocutranslate 让学术文档翻译从繁琐的手工劳动，变成安全、精准、高效的自动化流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fxunbu_docutranslate_b91d6330.png","xunbu","QinHan","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fxunbu_211d06aa.jpg",null,"西南交通大学","xunbu3@qq.com","xunbu.cc","https:\u002F\u002Fgithub.com\u002Fxunbu",[84,88,92,96],{"name":85,"color":86,"percentage":87},"Python","#3572A5",69.2,{"name":89,"color":90,"percentage":91},"HTML","#e34c26",17.8,{"name":93,"color":94,"percentage":95},"CSS","#663399",12.8,{"name":97,"color":98,"percentage":99},"Dockerfile","#384d54",0.2,928,139,"2026-04-04T10:35:12","MPL-2.0","Linux, macOS, Windows","未说明",{"notes":107,"python":108,"dependencies":109},"PDF翻译需依赖minerU或docling引擎，离线使用需部署minerU服务；推荐使用集成包（\u003C40MB）避免复杂依赖；首次运行可能自动下载模型或解析引擎，需网络连接；支持多用户局域网并发使用，需配置API密钥和模型地址。","3.11+",[110,111,112,113,114,115,116,117,118,119],"docling","mineru","jsonpath-ng","fastapi","uvicorn","pydantic","python-docx","openpyxl","pypdf","epublib",[26,13],[122,123,124,125,126],"llm","pdf-converter","pdf-translator","translate","file-transla","2026-03-27T02:49:30.150509","2026-04-06T08:41:34.931988",[130,135,140,145,150,155,160,165,170,175],{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},9261,"为什么通过 API 调用翻译 Markdown 文件时，部分文本未被识别，而 UI 界面正常？","该问题在 1.4.0 版本中已修复，新版完善了异常处理机制，减少了漏翻情况。此外，若设置了 custom_prompt=\"\"，会触发 AI 将原文误认为背景提示词，应将 custom_prompt 设为 None，下个版本将修复此问题。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F5",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},9262,"翻译 XLSX 文件时未填写翻译区域为何报 422 错误？","1.5.3 版本已修复该问题，翻译区域功能恢复正常。若使用 1.5.2.post1，可临时降级至 1.5.1 版本（但大文件处理有缺陷），或直接填写任意内容作为翻译区域，系统会自动翻译全文并提示警告。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F13",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},9263,"如何在离线环境下运行 DocuTranslate 避免连接 openaipublic.blob.core.windows.net 的错误？","1.5.6 及以上版本使用了 tiktoken 库进行 token 估算，导致离线时无法访问远程资源。解决方案：使用 1.5.4 或更早版本，或按 tiktoken 官方文档离线下载 cl100k_base.tiktoken 文件并放置到本地缓存目录。v1.6.2 已彻底修复该问题。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F20",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},9264,"使用 Ollama 时出现 404 或 400 错误，如何解决？","1.6.0 版本已修复 Ollama 404 和 400 错误。400 错误是因思考模式设置为 'minimal'，应改为默认值（如 'high'、'medium'、'low' 或 'none'）。下个版本将增加对 Ollama 思考模式的完整支持。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F18",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},9265,"如何通过 Docker 部署 DocuTranslate？","可以直接使用官方镜像部署：运行命令 `docker run -it -p 8010:8010 xunbu\u002Fdocutranslate:v1.5.1`。仓库中也提供 Dockerfile，用户可自行构建镜像。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F12",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},9266,"如何更改翻译的目标语言？","在 Web 界面中，进入‘翻译配置 > 目标语言’，可选择中文、英文、西班牙文、法语、德语、日语、韩语、俄语、葡萄牙语、阿拉伯语。若使用 Python API，可在 translator_config 中设置 to_lang 字段，例如 to_lang=\"中文\" 或 to_lang=\"English\"。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F3",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},9267,"为什么翻译 SRT 字幕后行数比原文少？","漏掉的字幕行通常因时间戳格式错误导致系统自动跳过，不影响正常播放。建议检查原始 SRT 文件中是否存在时间戳异常（如缺失或格式错误）的字幕行，系统会忽略这些无效行以保证翻译稳定性。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F6",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},9268,"为什么 XLSX 文件中的工作表名称（Sheet Name）不被翻译？","出于安全考虑，系统默认不翻译工作表名称，因为修改表名可能导致跨表公式引用失效。未来可能增加开关选项或自动检测公式依赖，目前建议手动处理或保持原表名。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F16",{"id":171,"question_zh":172,"answer_zh":173,"source_url":174},9269,"翻译 Word 文档时报错 'Unexpected token '\u003C', ... is not valid JSON'，如何排查？","该错误通常由反向代理（如 Nginx）超时或返回 HTML 错误页面导致。请检查是否使用了代理服务器，确认其未对 API 请求返回 502\u002F504 等错误页面。可尝试直接访问服务，绕过代理测试。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F17",{"id":176,"question_zh":177,"answer_zh":178,"source_url":179},9270,"使用 MinerU 转换 PDF 时，API 调用丢失公式编号，如何解决？","1.2.0 版本已默认启用 MinerU-VLM 模型，可正确识别公式编号。请升级至 1.2.0 或更高版本，确保使用的是新版模型而非旧版 OCR 引擎。","https:\u002F\u002Fgithub.com\u002Fxunbu\u002Fdocutranslate\u002Fissues\u002F4",[181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266,271,276],{"id":182,"version":183,"summary_zh":184,"released_at":185},116344,"整合包v1.7.1","修复\r\n- 修复MCP stdio模式调用错误问题\r\n- 修复markdown表格内公式不渲染的问题（html）\r\n- 修复markdown行内公式段不渲染的问题（html）\r\n\r\n优化\r\n- 优化前端性能问题\r\n\r\nFix  \r\n- Fixed the MCP stdio mode call error  \r\n- Fixed the issue where formulas inside markdown tables were not rendering (HTML)  \r\n- Fixed the issue where inline formulas in markdown paragraphs were not rendering (HTML)  \r\n\r\nOptimization  \r\n- Optimized front-end performance","2026-03-07T04:16:34",{"id":187,"version":188,"summary_zh":189,"released_at":190},116345,"整合包v1.7.0","特性\r\n- 支持MCP(alpha)\r\n- 增加进度系统，前端显示进度条\r\n- 允许传入extra_body\r\n- 新的ai提示词\r\n- markdown工作流允许导出docx格式\r\n\r\n修复\r\n- 修复阿里云\u002Fgemini的思考模式控制与token计数错误的问题\r\n- 修复使用插入模式时docx自动序号错误的问题\r\n\r\n优化\r\n- 提高大文件上传速度\r\n- 过滤AI回复里\u003Cthink>标签中的内容\r\n- xlsx工作流支持翻译文本框中文字\r\n\r\nFeatures\r\n- Support for MCP (alpha)\r\n- Added progress system, frontend displays progress bar\r\n- Allows passing extra_body\r\n- New AI prompt words\r\n- Markdown workflow allows exporting to docx format\r\n\r\nFixes\r\n- Fixed issues with Alibaba Cloud\u002FGemini's reasoning mode control and token counting errors  \r\n- Fixed incorrect automatic numbering in docx when using insert mode\r\n\r\nOptimizations\r\n- Improved upload speed for large files\r\n- Filter out content inside \u003Cthink> tags in AI responses\r\n- xlsx workflow supports translating text within text boxes","2026-03-02T13:02:32",{"id":192,"version":193,"summary_zh":194,"released_at":195},116346,"整合包v1.6.3","特性\r\n- UI\u002FREADME增加越南语\r\n\r\n修复\r\n- 修复前端界面gemini平台不可用的问题\r\n\r\n优化\r\n- 优化pptx的翻译效果\r\n- 使用charset_normalizer替代chardet\r\n\r\nFeatures\r\n-  Added Vietnamese to UI\u002FREADME\r\n\r\nFixes\r\n- Fixed the issue where the Gemini platform was unavailable on the frontend interface\r\n\r\nOptimizations\r\n-  Improved translation results for PPTX files\r\n- Replaced chardet with charset_normalizer\r\n","2026-01-19T02:10:14",{"id":197,"version":198,"summary_zh":199,"released_at":200},116347,"整合包v1.6.2","特性\r\n- 支持mineruv2.7.1版本\r\n- 生成的html带有目录(markdown workflow)\r\n- 自动生成术语表不覆盖用户术语表，最终下载的是合并术语表\r\n\r\n优化\r\n- 移除tiktoken依赖\r\n- 优化html目录生成效率\r\n- 其它优化\r\n\r\nFeatures  \r\n- Supports mineruv2.7.1 version  \r\n- Generated HTML with table of contents (Markdown workflow)\r\n- Automatically generated glossary does not overwrite the user glossary; the final download is a merged glossary  \r\n\r\nOptimizations  \r\n- Removed tiktoken dependency  \r\n- Improved efficiency of HTML table of contents generation  \r\n- Other optimizations","2026-01-11T11:36:58",{"id":202,"version":203,"summary_zh":204,"released_at":205},116348,"整合包v1.6.0","特性\r\n- 新的client调用方式\r\n- 自定义接口可以传入provider参数\r\n- api接口支持\"auto\"选项，根据文件后缀自动选择工作流\r\n\r\n优化\r\n- ollama支持使用思考模式调节\r\n\r\n修复\r\n- 修复术语表大小写敏感的问题\r\n- 修复一些类型提示错误","2025-12-31T20:50:38",{"id":207,"version":208,"summary_zh":209,"released_at":210},116349,"整合包v1.5.6","特性\r\n- 允许设置RPM与TPM\r\n\r\n优化\r\n- mineru单文件可以超过600页\r\n- apikey可以为空(v1.5.5)\r\n\r\n修复\r\n- 修复markdown有长代码块时翻译失败的问题\r\n- 修复epub排版问题\r\n- 修复markdown图片后不换行的问题(v1.5.5)","2025-12-17T15:12:00",{"id":212,"version":213,"summary_zh":214,"released_at":215},116350,"整合包v1.5.4","特性\r\n- 适配最新的mineru-api(v2.6.6)\r\n- mineru可以设置置lang_list\r\n\r\n优化\r\n- doc\u002Fxls\u002Fppt将自动跳转到对应工作流并提示修改格式\r\n\r\n修复\r\n- 修复xlsx工作流翻译区域失效的问题\r\n- 修复不翻译csv的问题\r\n- 修复交互式界面不能翻译超长文件名文件的问题","2025-12-12T13:40:01",{"id":217,"version":218,"summary_zh":219,"released_at":220},116351,"整合包v1.5.3","特性\r\n- 新增PPTX翻译\r\n- 新的\u002Fservice\u002Ftranslate\u002Ffile接口可以直接上传表单文件\r\n- `docutranslate -i -cors`开启跨域\r\n\r\n优化\r\n- pdf可复制公式\r\n- 使用vue重构前端代码\r\n- 优化xlsx翻译效果\r\n- 优化epub的性能开销\r\n- 分块默认大小调整到4000字节\r\n\r\n修复\r\n- 修复markdown图片消失\u002F不正确显示的问题","2025-12-04T12:32:16",{"id":222,"version":223,"summary_zh":224,"released_at":225},116352,"整合包v1.5.1","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n特性\r\n- 支持使用mineru部署服务\r\n- txt翻译支持不分段、按连续行分段\r\n- 提供强制json输出的选项\r\n\r\n优化\r\n- 优化重试机制\r\n- 提高分块大小上限\r\n- 优化思考模式控制\r\n- 优化提示词","2025-11-10T12:23:57",{"id":227,"version":228,"summary_zh":229,"released_at":230},116353,"整合包v1.4.18","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n优化\r\n- 优化对文件名过长文件的处理\r\n- 提高术语表的稳定性\r\n\r\n修复\r\n- 修复docx的译文附加模式时段落译文位置不正确的问题\r\n- 修复docx翻译时图片重复的问题\r\n- 修复xlsx工作流不能保留图片的问题","2025-11-03T08:48:35",{"id":232,"version":233,"summary_zh":234,"released_at":235},116354,"整合包v1.4.17","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n特性\r\n- 双语预览时增加联动滑动的按钮（主要针对txt\\srt\\json工作流）\r\n\r\n优化\r\n- 优化epub翻译效果\r\n- 优化epub、docx、html的译文附加模式的效果","2025-10-26T10:49:16",{"id":237,"version":238,"summary_zh":239,"released_at":240},116355,"整合包v1.4.16","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n优化\r\n- epub按段落翻译","2025-10-20T07:44:42",{"id":242,"version":243,"summary_zh":244,"released_at":245},116356,"整合包v1.4.15","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n优化\r\n- 优化docx翻译效果","2025-10-19T07:22:18",{"id":247,"version":248,"summary_zh":249,"released_at":250},116357,"整合包v1.4.14","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n特性\r\n- 将大部分ai系统提示词转为用户提示词（本次改动较大）\r\n\r\n修复\r\n- 修复epub分隔符不能换行的问题\r\n- 修复html分隔符不能换行的问题\r\n- 修复pdf解析缓存被意外修改的问题\r\n- 修复markdown翻译失败时显示意外字符的问题\r\n\r\n优化\r\n- 优化前端文本\r\n- 修正过时的pydantic语法\r\n- 优化docx翻译效果","2025-10-19T00:43:13",{"id":252,"version":253,"summary_zh":254,"released_at":255},116358,"整合包v1.4.12","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下\r\n\r\n优化\r\n- 优化docx翻译效果（接近最好的效果了）","2025-10-15T07:13:55",{"id":257,"version":258,"summary_zh":259,"released_at":260},116359,"整合包v1.4.11","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下。\r\n\r\n优化\r\n- 优化docx翻译效果\r\n- 优化提示词","2025-10-14T14:43:28",{"id":262,"version":263,"summary_zh":264,"released_at":265},116360,"整合包v1.4.10","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下。\r\n\r\n特性\r\n- 增加导入导出配置功能\r\n- 翻译markdown可以传入包含图片的zip压缩包\r\n\r\n优化\r\n- 优化docx翻译效果与稳定性\r\n- 优化提示词","2025-10-13T12:54:45",{"id":267,"version":268,"summary_zh":269,"released_at":270},116361,"整合包v1.4.9","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下。\r\n\r\n特性\r\n- docx翻译增加页眉页脚支持\r\n- 增加打开docx文档时提示更新域的功能\r\n\r\n优化\r\n- 优化epub翻译效果\r\n- 优化txt译文显示效果\r\n- 提升json翻译工作流对json格式容错率","2025-10-10T08:18:52",{"id":272,"version":273,"summary_zh":274,"released_at":275},116362,"整合包v1.4.8","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下。\r\n\r\n特性\r\n- 生成术语表支持自定义提示词\r\n\r\n优化\r\n- 思考模式默认为禁用\r\n- 优化前端文本","2025-10-04T13:06:31",{"id":277,"version":278,"summary_zh":279,"released_at":280},116363,"整合包v1.4.7","DocuTranslate.exe 支持minerU（在线）解析pdf文档（不需要本地解析pdf文档的下载这个就行）\r\n需要使用docling本地解析pdf的下载DocuTranslate_full.exe 并解压docling_artifact.zip到DocuTranslate_full.exe同目录下。\r\n\r\n\r\n特性\r\n\r\n- 302.AI平台支持\r\n- 推理模式控制支持更多平台","2025-09-29T07:31:06"]