PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
1.简介
PDFMathTranslate 是一个用于科学 PDF 文档翻译及双语对照的工具,是一个功能强大且灵活的科学文档翻译工具,适合科研人员、学生和专业人士使用,能够有效提高文档翻译的效率和质量。其具有以下特点和功能:
核心功能
-
保留格式:在翻译过程中,能够保留原文档中的公式、图表、目录和注释,确保翻译后的文档与原文在结构和内容上保持一致。
-
多语言支持:支持多种语言的翻译,满足不同用户的需求。
-
多种部署方式:提供命令行工具、图形交互界面以及容器化部署等多种使用方式,方便用户根据自身需求选择。
github地址:https://github.com/Byaidu/PDFMathTranslate/tree/main
-
案例
以下案例使用免费方法,如果追求更高质量,可以使用付费API:
可以看到,这一框架在翻译文献时,只会对文档的正文部分进行提取并翻译,会自动保留算法、公式、注解、表格部分。文档会自动保存双语对照版和单语版,供用户选择。
以下案例使用DeepSeek API翻译
-
翻译效果对比
从左到右分别是:原文、谷歌翻译、Deepseek v3翻译,qwen-turbo翻译
从左到右分别是:原文、谷歌翻译、Deepseek v3翻译,qwen-turbo翻译
-
-
2.使用教程
下载源码:https://github.com/Byaidu/PDFMathTranslate/tree/main
-
安装
使用pip或conda安装
确保Python (3.10 <= 版本 <= 3.12),然后安装uv,然后使用uv安装pdf2zh
pip install uv
uv tool install --python 3.12 pdf2zh
Windows exe
下载 pdf2zh-version-win64.zip
解压缩并双击 pdf2zh.exe
运行
dockers
拉取并运行:
docker pull byaidu/pdf2zh
docker run -d -p 7860:7860 byaidu/pdf2zh
在浏览器中打开:
http://localhost:7860/
-
报错解决
warning: `/home/good/.local/bin` is not on your PATH. To use installed tools, run `export PATH="/home/good/.local/bin:$PATH"` or `uv tool update-shell`.
export PATH="/home/good/.local/bin:$PATH"
当前程序在工作前需要一个 AI 模型 (wybxc/DocLayout-YOLO-DocStructBench-onnx
),一些用户由于网络问题无法下载。如果你在下载此模型时遇到问题,可以改变以下环境变量的解决方法:
set HF_ENDPOINT=https://hf-mirror.com
对于 PowerShell 用户:
$env:HF_ENDPOINT = https://hf-mirror.com
如果此解决方案对您无效或您遇到其他问题,请参阅 常见问题解答。
-
使用方法
在线页面
huggingface:https://huggingface.co/spaces/reycn/PDFMathTranslate-Docker
登录作者在huggingface托管的项目,可直接使用,无需安装和下载。
-
命令行
使用如下命令,执行翻译,文件生成在当前工作目录:
pdf2zh document.pdf
执行翻译命令后在当前工作目录下生成译文文档 example-mono.pdf
和双语对照文档 example-dual.pdf
,默认使用 Google 翻译服务。
-
命令行格式如下:
-p指定页码
pdf2zh example.pdf -p 1-3,5
-li和-lo指定语言
pdf2zh example.pdf -li en -lo ja
-s表示翻译服务提供商,默认使用Google进行翻译,我们也可以使用如DeepSeek、deepl等服务。
pdf2zh example.pdf -s openai:gpt-4o-mini或
set OPENAI_MODEL=gpt-4o-mini
pdf2zh example.pdf -s openai在powershell上使用:
$env:OPENAI_MODEL = gpt-4o-mini
pdf2zh example.pdf -s openai
支持的服务商包括:
Translator | Service | Environment Variables | Default Values | Notes |
---|---|---|---|---|
Google (Default) | google | None | N/A | None |
Bing | bing | None | N/A | None |
DeepL | deepl | DEEPL_AUTH_KEY | [Your Key] | See DeepL |
DeepLX | deeplx | DEEPLX_ENDPOINT | https://api.deepl.com/translate | See DeepLX |
Ollama | ollama | OLLAMA_HOST , OLLAMA_MODEL | http://127.0.0.1:11434 , gemma2 | See Ollama |
Xinference | xinference | XINFERENCE_HOST , XINFERENCE_MODEL | http://127.0.0.1:9997 , gemma-2-it | See Xinference |
OpenAI | openai | OPENAI_BASE_URL , OPENAI_API_KEY , OPENAI_MODEL | https://api.openai.com/v1 , [Your Key] , gpt-4o-mini | See OpenAI |
AzureOpenAI | azure-openai | AZURE_OPENAI_BASE_URL , AZURE_OPENAI_API_KEY , AZURE_OPENAI_MODEL | [Your Endpoint] , [Your Key] , gpt-4o-mini | See Azure OpenAI |
Zhipu | zhipu | ZHIPU_API_KEY , ZHIPU_MODEL | [Your Key] , glm-4-flash | See Zhipu |
ModelScope | ModelScope | MODELSCOPE_API_KEY , MODELSCOPE_MODEL | [Your Key] , Qwen/Qwen2.5-Coder-32B-Instruct | See ModelScope |
Silicon | silicon | SILICON_API_KEY , SILICON_MODEL | [Your Key] , Qwen/Qwen2.5-7B-Instruct | See SiliconCloud |
Gemini | gemini | GEMINI_API_KEY , GEMINI_MODEL | [Your Key] , gemini-1.5-flash | See Gemini |
Azure | azure | AZURE_ENDPOINT , AZURE_API_KEY | https://api.translator.azure.cn , [Your Key] | See Azure |
Tencent | tencent | TENCENTCLOUD_SECRET_ID , TENCENTCLOUD_SECRET_KEY | [Your ID] , [Your Key] | See Tencent |
Dify | dify | DIFY_API_URL , DIFY_API_KEY | [Your DIFY URL] , [Your Key] | See Dify,Three variables, lang_out, lang_in, and text, need to be defined in Dify's workflow input. |
AnythingLLM | anythingllm | AnythingLLM_URL , AnythingLLM_APIKEY | [Your AnythingLLM URL] , [Your Key] | See anything-llm |
Argos Translate | argos | See argos-translate | ||
Grok | grok | GORK_API_KEY , GORK_MODEL | [Your GORK_API_KEY] , grok-2-1212 | See Grok |
Groq | groq | GROQ_API_KEY , GROQ_MODEL | [Your GROQ_API_KEY] , llama-3-3-70b-versatile | See Groq |
DeepSeek | deepseek | DEEPSEEK_API_KEY , DEEPSEEK_MODEL | [Your DEEPSEEK_API_KEY] , deepseek-chat | See DeepSeek |
OpenAI-Liked | openailiked | OPENAILIKED_BASE_URL , OPENAILIKED_API_KEY , OPENAILIKED_MODEL | url , [Your Key] , model name | None |
Ali Qwen Translation | qwen-mt | ALI_MODEL , ALI_API_KEY , ALI_DOMAINS | qwen-mt-turbo , [Your Key] , scientific paper | Tranditional Chinese are not yet supported, it will be translated into Simplified Chinese. More see Qwen MT |
对于与 OpenAI API 兼容但未列在上表中的大型语言模型,可以使用表中针对 OpenAI 概述的相同方法设置环境变量。
--dir 批量翻译
pdf2zh --dir /path/to/translate/
PDFMathTranslate 会缓存已翻译的文本,以提高速度并避免对相同内容进行不必要的 API 调用。您可以使用 --ignore-cache 选项忽略翻译缓存并强制重新翻译。
pdf2zh example.pdf --ignore-cache
使用 --config 指定配置 PDFMathTranslate 的文件:
pdf2zh example.pdf --config config.json
或
pdf2zh -i --config config.json
json配置文件示例
{"USE_MODELSCOPE": "0","PDF2ZH_LANG_FROM": "English","PDF2ZH_LANG_TO": "Simplified Chinese","NOTO_FONT_PATH": "/app/SourceHanSerifCN-Regular.ttf","translators": [{"name": "deeplx","envs": {"DEEPLX_ENDPOINT": "http://localhost:1188/translate/","DEEPLX_ACCESS_TOKEN": null}},{"name": "ollama","envs": {"OLLAMA_HOST": "http://127.0.0.1:11434","OLLAMA_MODEL": "gemma2"}}]
}
默认情况下,配置文件保存在 ~/.config/PDFMathTranslate/config.json 中。程序将首先读取 config.json 的内容,然后读取环境变量的内容。当环境变量可用时,首先使用环境变量的内容,然后更新文件。
-
图形用户界面(推荐)
pdf2zh -i
浏览器访问:
http://localhost:7860/
界面如下:
在这里也更方便去使用和调控。
-
本地模型+PDFMathTranslate
本地启用vllm,参考教程如下:
- LightRAG:基于LightRAG进行本地RAG部署
- qwen2-VL部署:Vllm进行Qwen2-vl部署(包含单卡多卡部署及爬虫请求)
部署好后启用模型
-
本地启动pdf2zh
pdf2zh -i
浏览器访问:
http://localhost:7860/
option设定如下:
- service选择OpenAI-liked
- Base_url选择自己设定的,如:http://0.0.0.0:8000/v1
- OPENAILIKED_API_KEY如果没有设定,可以随便填一个
- OPENAILIKED_MODEL选择你启动的模型,如Qwen2.5-7B-Instruct-GPTQ-Int4
如下:
-
API申请流程
DeepSeek
登录以下页面:DeepSeek
注册账号,并充值
- 费用参考:一个4页的文档,大约花费4分钱
点击左侧的API_keys,创建API Key,并复制API Key,
- 注意:API key只展示一次,如果没有保存,需要重新生成一个
使用方法:
-
阿里云
申请API Key教程:百炼控制台
申请API Key:百炼控制台
使用方法:
-
-
总结
PDFMathTranslate 是一个专注于科学 PDF 文档翻译的工具,能够保留原文档中的公式、图表、目录和注释,支持多种语言和翻译服务。它提供了多种使用方式,包括命令行工具、图形交互界面、容器化部署以及 Windows 可执行文件等,方便用户根据自身需求选择。此外,该工具还支持多线程翻译、部分文档翻译、自定义模型和端口等高级功能,进一步提升了翻译的效率和灵活性。尽管当前的 API 已暂时弃用,但项目团队仍在积极开发,计划在 pdf2zh 2.0 发布后重新提供更强大的 API 支持。未来,PDFMathTranslate 还将引入基于 DocLayNet 的布局解析技术,优化页面旋转、目录和列表格式等问题,并开发 Zotero 和 Obsidian 的插件,以进一步拓展其功能和应用场景。
如果你觉得这个工具对你的学习、工作或研究有帮助,不妨点个赞👍,收藏一下🌟,或者关注我们的项目👀。你的支持是我们不断改进和更新的动力!感谢你的关注与支持!
相关文章:
PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
1.简介 PDFMathTranslate 是一个用于科学 PDF 文档翻译及双语对照的工具,是一个功能强大且灵活的科学文档翻译工具,适合科研人员、学生和专业人士使用,能够有效提高文档翻译的效率和质量。其具有以下特点和功能: 核心功能 保留格…...
CSS 入门全解析
CSS 入门全解析:从选择器到布局的全面教学 一、CSS 是什么?二、CSS 的基本语法结构三、常见选择器讲解四、盒模型讲解(重点)五、字体与颜色样式六、布局方式6.1 浮动布局(了解)6.2 Flex 弹性布局࿰…...
用户案例--慧眼科技
作者:算力魔方创始人/英特尔创新大使刘力 每个行业都有其独特的需求,算力魔方推出了全面的定制化服务,从概念到产品化,满足各行各业,用户可以根据具体应用需求定制更多接口或更强图形处理的需求,且算力魔方…...
面试中被问到mybatis与jdbc有什么区别怎么办
1. 核心区别 维度JDBCMyBatis抽象层级底层API,直接操作数据库高层持久层框架,封装JDBC细节代码量需要手动编写大量样板代码(连接、异常处理等)通过配置和映射减少冗余代码SQL管理SQL嵌入Java代码,维护困难SQL与Java代…...
科技与商业动态简报
睿创咨询 聚焦与深耕IPD领域长达20年,联合多名企业经营实战专家和前高管,睿创咨询借力IPD,为企业全方面提高产品竞争力,让增长从偶然变为必然!...
Flutter Dart中的类 对象
Dart 基本特征 私有属性/私有方法 import test88.dart;main() {var home new MainHome();home.execRun(); //间接的调用私有方法 }class MainHome {String _name "张三";//私有属性int age 10;main() {_run();print(_name);}void _run() {print("私有方法&qu…...
4G卡的DTU固件TCP通讯
4G卡DTU固件的TCP通讯 概述TCP通讯测试软硬件准备上网步骤 总结 概述 银尔达的DTU固件的4G卡可以应用到很多领域。我用的是YED-M780-B. 主要特点: 1、5~12V供电 2、工作环境为-35℃-75℃; 3、 支持1路TTL 串口,兼容3.3V电平和5V电平&#x…...
Spring Boot 读取配置文件的几种方式
Spring Boot 提供了灵活多样的方式来读取配置文件(如 application.yml 或 application.properties),本文介绍几种常见的读取方式。 1. 配置文件位置与加载顺序 Spring Boot 默认从以下位置加载配置文件(优先级从高到低࿰…...
Winform(1.Winform控件学习)
使用的控件有:Button,Label,TextBox button:表示一个按钮,用户点击按钮触发事件 click事件最常用 label:标签,用于显示文本 Name属性:变量名称 textBox:输入框 Form1代码: using System; using System.Collections.Generic; using Sy…...
解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南
随着“数据要素市场”建设加速,数据资产逐步成为企业核心资产之一。2024年4月,由中国质量认证中心(CQC)发布的《数据资产质量评估实施规则》(编号:CQC96-831160-2024)正式实施,为企业…...
Python Transformers 库介绍
Hugging Face 的 Transformers 库是一个用于自然语言处理(NLP)的强大 Python 库,它提供了对各种预训练模型的访问和使用接口。该库具有以下特点和功能: 主要特点 丰富的预训练模型:Transformers 库包含了大量的预训练模型,如 BERT、GPT - 2、RoBERTa、XLNet 等。这些模型…...
防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战
防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战 在网络安全防御体系中,防火墙是第一道物理屏障,承担着“网络流量守门人”的核心角色。从早期基于IP地址的包过滤设备到如今集成AI威胁检测的云原生防火墙,其技术演进始终…...
58、微服务保姆教程(一)
一、 微服务架构概述 1、微服务架构的核心概念 微服务架构是一种软件开发架构风格,它将一个应用程序划分为多个小型、独立的服务。每个服务负责一个特定的业务功能,并能够通过轻量级的通信方式(如HTTP RESTful API、消息队列等)相互通信。在设计上,每个服务都是独立的、…...
C 语言内存分配方法及优缺点
在 C 语言开发中,内存分配的方式主要有三种:静态内存分配、栈内存分配和堆内存分配。每种分配方式都有其独特的特点、适用场景以及优缺点。 静态内存分配 静态内存分配是在编译时就确定好内存的分配,它主要用于定义全局变量和静态局部变量。…...
通过模仿学习实现机器人灵巧操作:综述(下)
25年4月来自天津大学、山东大学、瑞士ETH、南方科技大学、通用 AI 国家重点实验室、爱丁堡大学和中科院自动化所的论文“Dexterous Manipulation through Imitation Learning: A Survey”。 灵巧操作是指机械手或多指末端执行器通过精确、协调的手指运动和自适应力调制&#x…...
uni-app 引入高德地图
一、准备工作:申请密钥与环境配置 1. 申请高德地图 API 密钥 注册并登录高德开放平台 创建「Web 端 (JS API)」类型应用,获取API 密钥(Key)✅ 注意:需在「安全设置」中添加域名(如https://*.yourd…...
开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…...
Windows环境下常用网络命令使用
ipconfig命令使用: ipconfig可用于显示当前的TCP/IP配置的设置值,通常是用来检验人工配置的TCP/IP设置是否正确。在网络连接出现问题时,可以使用ipconfig /release和ipconfig /renew命令来刷新IP地址,这通常能解决因IP地址冲突或…...
RS232“变形记”,Profinet如何让电力通信设备“改头换面”
在现代电力系统中,随着自动化和智能化技术的不断发展,通信协议的转换成为实现设备互联互通的关键环节。VING微硬创新RS232转Profinet技术为电力设备的升级和优化提供了有效的解决方案,本文将详细介绍这一技术的背景、原理、应用及意义。 一、…...
WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版
为什么选择Linkreate AI内容生成插件? ✓ 全自动化工作流程 - 从关键词挖掘到文章发布一站式完成 ✓ 多语言支持 - 轻松覆盖全球市场(中/英等多语种) ✓ 智能SEO优化 - 自动生成搜索引擎友好的内容结构 ✓ AI智能配图 - 每篇文章自动匹配高质…...
弹性布局--Flexbox
CSS3 的弹性盒子布局(Flexbox)是一种强大的布局模型,用于更轻松地创建复杂的布局,尤其适合响应式设计。以下是其详细介绍: 基本概念 Flex 容器(Flex Container): 通过将display属性…...
更新GNS3
更新GNS3 有时,我们需要更新GNS3(Graphical Network Simulator-3,图形化网络模拟器3)——一款用于模拟网络的学习软件,类似于Cisco Packet Tracer。然而,GNS3主要由两部分组成——GNS3客户端和GNS3虚拟机&…...
c#接口_抽象类_多态学习
c#接口_抽象类_多态学习 学习日志 关于:c#接口_抽象类_多态的学习记录。 一、概念 1. 多态(Polymorphism) 定义:同一操作作用于不同对象时,表现出不同的行为。实现方式: 继承 方法重写(ov…...
BGE-M3模型深度技术分析
以下是针对 BGE-M3 模型的深度技术分析,综合其架构设计、核心能力、性能表现及实际应用场景: 一、模型概览 BGE-M3(Beijing General Embedding M3)是北京智源研究院(BAAI)推出的多语言通用向量模型&#x…...
光谱相机如何提升目标检测与识别精度
光谱相机(多光谱/高光谱)通过捕捉目标在多个波段的光谱特征,能够揭示传统RGB相机无法感知的材质、化学成分及物理特性差异。以下是提升其目标检测与识别精度的核心方法: 1. 硬件优化:提升数据质量 (1) 光谱分辨…...
漏洞管理体系:从扫描评估到修复验证的全生命周期实践
漏洞管理体系:从扫描评估到修复验证的全生命周期实践 在网络安全防御体系中,漏洞管理是“攻防博弈”的核心战场。据NVD(国家漏洞数据库)统计,2023年新增漏洞超21万个,平均每天披露575个,其中32…...
资深程序员进阶设备分享,专业编程显示器RD280U
前言 在软件开发行业多年,长时间在电脑前工作常让我眼花、眼困、脊椎不舒服。曾尝试很多方法、买过不少产品,像显示器护眼挂灯、机械臂等,效果不佳还麻烦。直到我用上明基 RD280U 专业编程显示器,它上下可调高度,适配…...
云+AI双轮驱动,亚马逊云科技加速中国企业出海新浪潮
导读:全球化就是本地化 作者 | 小葳 图片来源 | 摄图 近年来,中国企业出海步伐不断加快,“不出海,就出局”成为很多企业的共识。 据沙利文统计,2024年上半年,超过2000家中国上市企业布局海外市场ÿ…...
不同ECU(MCU/ZCU/CCU)其部署(实现)的功能存在差异
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁&am…...
施工安全巡检二维码制作
进入新时代以来,人们对安全的重视程度越来越高。特别在建筑施工行业,安全不仅是关乎着工人的性命,更是承载着工人背后家庭的幸福生活。此时就诞生了安全巡检的工作,而巡检过程中内容庞杂,安全生产检查、隐患排查、施工…...
Linux 权限修改详解:chmod 命令与权限数字的秘密
在 Linux 系统的使用过程中,权限控制就像是一把神奇的钥匙,它决定了谁能在系统中对文件和文件夹进行何种操作。今天我们来深入了解一下如何使用 chmod 命令来修改文件和文件夹的权限,让你在系统管理时更加得心应手。 一、chmod 命令…...
git 的基本使用
文章目录 一、创建仓库并初始化1、操作步骤2、注意事项 二、工作区与版本库1、Git 管理文件类型2、Git 保存文件方式3、工作区与版本库概念及操作 三、命令小结四、版本回退与前进1、相关概念2、版本回退3、版本前进4、总结 五、撤销修改1、场景 12、场景 23、场景 34、注意事项…...
Android 编译问题 prebuilts/clang/host/linux-x86
Android 编译问题 prebuilts/clang/host/linux-x86工具被破环了,用打包的方式替换调工具,不能拷贝,会破坏工具的链接。 FAILED: out\_odm/soong/build.ninja cd "$(dirname "out\_odm/host/linux-x86/bin/soong\_build")&quo…...
SIEMENS PLC程序解读 -BLKMOV (指定长度数据批量传输)
1、程序代码 2、程序解读 这段西门子 PLC 程序(程序段 10)实现了基于条件的数据块移动功能,具体解释如下: 条件触点: %M0.1 Always<>(TRUE)(注释为 AT<>1):当 M0.1 的值…...
Git 核心命令学习总结
一、Git 基础概念 工作目录:本地实际操作的文件夹,包含项目文件。 暂存区:临时存放待提交的变更(通过 git add 添加)。 本地仓库:存储项目历史版本(通过 git commit 提交)。 二、…...
vscode 打开csv乱码
在 Visual Studio Code (VS Code) 中打开 CSV 文件出现乱码可能是由于以下几个原因导致的: 编码设置不正确:CSV 文件可能使用了不同的字符编码方式保存,而 VS Code 默认使用的字符编码可能与文件实际的编码方式不一致。你可以在 VS Code 的右…...
WebUI可视化:第3章:Gradio入门实战
学习目标 ✅ 掌握Gradio的安装与基础配置 ✅ 能创建包含多种交互组件的界面 ✅ 实现前后端数据交互逻辑 ✅ 独立开发简单AI应用界面 3.1 Gradio快速安装 3.1.1 通过pip安装 打开终端(Windows:CMD/PowerShell,Mac/Linux:Terminal),执行: bash # 基础安装 pip insta…...
Flink checkpoint问题排查指南
之前只因为checkpoint过大碰到过checkpoint失败的情况,没想到数据倾斜也会导致 我们知道 task 仅在接受到所有的 barrier 之后才会进行 snapshot,如果作业存在反压,或者有数据倾斜,则会导致全部的 channel 或者某些 channel 的 …...
mysql知识总结 索引篇
mysql知识总结 索引篇 1. 索引问题常见分类1. 什么是索引2. 索引的分类3. 从数据结构分类4. 通过二级索引查询商品数据的过程5. 为什么选择B树作为索引呢? 本文是阅读 小林coding 后的读书笔记 原文可以点击上面超链接到达 也可以直接百度搜索 小林coding 1. 索引…...
Flink 数据清洗与字段标准化最佳实践
—— 构建可配置、可扩展的实时标准化清洗链路 本文是「Flink Kafka 构建实时数仓实战」专栏的第 4 篇,将围绕字段标准化这一核心问题,从业务痛点、技术架构、配置设计到完整代码工程,系统讲透标准化实践。 📌 一、为什么实时字段…...
.NET写的开源工业物联网网关(IoTGateway)
Ver V0.0 250425 主要针对《物联网智能网关开发与设计》课程,根据官方的文档重新组织了一下,并演示了一下在Windows的VS2022下快速地搭建出了学习基于.NET8的Linux IoTGateway的开发,提供给学生作为学习的扩展和外延。 Index IoTGateway …...
蓝桥杯 5. 交换瓶子
交换瓶子 原题目链接 题目描述 有 N 个瓶子,编号为 1 ~ N,放在架子上。 例如有 5 个瓶子,当前排列为: 2 1 3 5 4每次可以拿起 2 个瓶子,交换它们的位置。 要求通过若干次交换,使得瓶子的编号从小到大…...
freeswitch配置视频对接
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 随着4G/5G网络的完善,视频呼叫的需求慢慢变多,本文介绍使用fs对接视频线路的配置方案。 环境 CentOS 7.9 freeswitch 1.10.7 视频模块 目前主流视频编解码使用H264,需要编译安装…...
使用Tortoise-ORM和FastAPI构建评论系统
title: 使用Tortoise-ORM和FastAPI构建评论系统 date: 2025/04/25 21:37:36 updated: 2025/04/25 21:37:36 author: cmdragon excerpt: 在models.py中定义了Comment模型,包含id、content、created_at、updated_at字段,并与User和Article模型建立外键关系。schemas.py中定义了…...
【信息安全工程师备考笔记】第三章 密码学基本理论
笔记内容整理自 https://www.bilibili.com/video/BV1X8411175t (B站 崔老夫子老师),老师讲解的非常好,推荐大家看原视频。 第三章 密码学基本理论 3.1 密码学概况 密码编码学:明文 —— > 密文 密码分析学&#x…...
精益数据分析(22/126):解锁创业增长密码与长漏斗分析
精益数据分析(22/126):解锁创业增长密码与长漏斗分析 在创业与数据分析的探索旅程中,我们都在不断寻求新的知识和方法,以提升创业的成功率。我一直期望能和大家共同学习、共同进步,今天就让我们继续深入研…...
【深度强化学习 DRL 快速实践】近端策略优化 (PPO)
PPO(2017,OpenAI)核心改进点 Proximal Policy Optimization (PPO):一种基于信赖域优化的强化学习算法,旨在克服传统策略梯度方法在更新时不稳定的问题,采用简单易实现的目标函数来保证学习过程的稳定性 解决…...
14-DevOps-快速部署Kubernetes
在学习阶段,为了能快速部署Kubernetes,这里用一个快速安装工具:Kubeode,来完成Kubernetes的部署。 接下来部署一个单机,一主一从的Kubernetes。一主一从都部署在同一台服务器上。 在虚拟机新开一个服务器,…...
Java 安全:如何防止 DDoS 攻击?
一、DDoS 攻击简介 DDoS(分布式拒绝服务)攻击是一种常见的网络攻击手段,攻击者通过控制大量的僵尸主机向目标服务器发送海量请求,致使服务器资源耗尽,无法正常响应合法用户请求。在 Java 应用开发中,了解 …...
html+servlet项目中的echart图表
介绍 ECharts 是一款由百度开源的,基于 JavaScript 的可视化图表库,它提供了丰富的图表类型和强大的交互功能,能将数据以直观、美观的图表形式展示出来,广泛应用于数据可视化、商业智能、数据分析等领域。 官网: Ap…...