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

介绍一款基于MinerU的PDF翻译工具

一。简介

Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割,
送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。

git地址:
https://github.com/kv1830/fast_pdf_trans
gitee地址:
https://gitee.com/daibaitu170/fast_pdf_trans

二。主要功能

pdf解析功能

  • 支持由pdf书签生成markdown标题(分级),魔改MinerU实现
  • 支持移除markdown代码块的非标题#号,魔改MinerU实现
  • 支持由大模型对MinerU生成的标题进行分级和过滤(无书签的场景)
  • 支持由大模型移除误识别的公式,魔改MinerU实现

翻译功能

  • 支持所有兼容openai api的大模型
  • 支持流控限制、多线程、多个大模型同时翻译
  • 支持缓存,任务中断后再次执行时,问过的问题直接从缓存读取
  • 支持对大模型返回的代码块进行自动换行处理

生成结果pdf

  • 基于pypandoc加prince引擎实现

三。系统要求

完整的系统要求可以参照MinerU的系统要求,简言之:

  • windows/linux均可
  • 有英伟达显卡则可以使用显卡加速,显存8G以上最好(6G也可以)
  • 内存最好在16G以上

四。安装

建议使用conda安装,尤其是如果用gpu进行pdf解析的话。

1.创建conda环境

conda create -n fast_pdf_trans python=3.10
conda activate fast_pdf_trans

2.安装MinerU

pip install "magic-pdf[full]==1.2.0" --extra-index-url https://wheels.myhloli.com

如果要使用本软件魔改MinerU的相关功能(pdf书签等),就要严格使用上面指定的1.2.0版本,否则可以使用最新版本。
如果要使用英伟达gpu加速推理,请移步MinerU cuda环境安装文档(主要是重装cuda版的pytorch和paddlepaddle-gpu),也可以参照文本后面的七。MinerU cuda环境安装:
Windows 10/11 + GPU
Ubuntu 22.04 LTS + GPU

3.安装依赖

cd到fast_pdf_trans项目目录下

pip install -r requirements.txt

4.下载模型

注意:如果你已经参照MinerU官方的cuda环境文档安装过了,你可能已经把下载模型的步骤执行过了,
不用再重新下载模型了。

执行如下脚本

python tools\download_models.py

模型会下载到C:\Users\你的用户名.cache\modelscope\hub\models目录下,并且脚本会自动当该目录保存到
C:\Users\你的用户名\magic-pdf.json文件中

注意,在linux中就用你的当前用户来执行这个脚本,不要用root用户去执行,否则模型会下载到/root/.cache/modelscope中, 而你普通用户是访问不了/root这个目录的。

5.安装Prince

如果你只需要将pdf解析为markdown并翻译成中文markdown,那就不需要安装Prince了。但是如果你还需要将它转换成中文pdf,则需要Prince。
请移步Prince官网下载对应系统的版本。下面分别以windows和ubuntu为例:

windows

下载prince-16-win64.zip,解压到任意目录,比如D:\program,然后把"D:\program\prince-16-win64\bin"添加到系统环境变量PATH中。
以windows11为例(win10应该也差不多,顶多是找环境变量的过程可能稍有区别),在文件浏览器中右击"此电脑"–“属性”–“高级系统设置”–“环境变量”–下面的"系统变量",在里面找到Path,双击它打开,
在里面新建一项填"D:\program\prince-16-win64\bin"即可(填的时候并不需要双引号)。
修改完环境变量后,需要重新打开cmd命令行才有效(如果你用的是pycharm也是同理,需要重新打开pycharm),执行where prince,看到如下结果表示Path加成功了

(fast_pdf_trans) D:\workPython\llm\fast_pdf_trans>where prince
D:\program\prince-16-win64\bin\prince.exe
ubuntu20.04

下载prince_16-1_ubuntu20.04_amd64.deb,参考Prince Installation Guide
在这里插入图片描述

点到ubuntu的安装部分,其实就一条命令,如果是root用户,直接执行:

gdebi prince_16-1_ubuntu20.04_amd64.deb

否则执行:

sudo gdebi prince_16-1_ubuntu20.04_amd64.deb

如果你没有安装gdebi,那就先用apt安装一下就好啦

apt update
apt install gdebi

非root用户还是注意加上sudo

sudo apt update
sudo apt install gdebi

安装完prince之后执行which prince,看到如下结果表示成功安装了:

(fast_pdf_trans) root@DESKTOP-U5878VE:/home/kv183# which prince
/usr/bin/prince

6.配置大模型

本项目自身要用的配置都在conf.yaml中,里面各项都做了详细说明,不要被它们吓到! 接下来演示的功能,唯一要配置的就是一个大模型的api-key。
即如下这段,搜索ds_llm_agent即可找到,把里面的api_key的值sk-xxxxxxxxxx换成你自己的api_key:

ds_llm_agent: # deepseek官方api,这里的'ds_llm_agent'是在别的配置中引用的名字,随便起什么都可以。更多的llm_agent示例见conf_llm_example.yamlbase_url: https://api.deepseek.com/model_name: deepseek-chatapi_key: sk-xxxxxxxxxx # api_key需要到对应平台创建timeout: 120max_retries: 2 # 开启流控的话则把这一项置0,否则会影响流控的计算use_cache: true # 开启缓存,会把大模型的响应缓存在文件中,下次同样的问题直接从缓存文件中读取,不会重复调用大模型cache_file_name: deepseek-chat # 缓存文件名。缓存目录就是项目目录的cache文件夹rate_control: # 没有明确说明流控的,可以不配置。也可以通过相关任务的线程数来控制访问频繁。streaming: false # 流式输出,没有强制要求流式输出的,可以指定为false

你如果没有api_key,请移步deepseek官网注册并充值~~

  • 你如果不想用deepseek,只要是兼容openai-api的大模型,都可以配置在这里。
  • 也可以另外新建一段大模型的配置并且在翻译配置中引用它。
  • 或者你有多个deepseek的帐号,你想在翻译中一起用。

具体用法参见README 6配置大模型

至此,所有准备工作就都完成了!

五。运行

现在我有一本"Hands-On Generative AI with Transformers and Diffusion Models.pdf",现在测试一下,让它翻译21页到27页,cd到fast_pdf_trans项目目录下,执行:

python translate.py "D:\学习\机器学习\GAN、扩散模型\Hands-On Generative AI with Transformers and Diffusion Models.pdf"  --start-page 21 --end-page 27

注意这里的–start-page,–end-page的值都是从1开始计数的。如果这两个参数都不传,则会翻译整个pdf。各命令行参数的含义可以执行python translate.py -h进行查看。

本次运行的条件是这是一个文字版pdf(非扫描版),有书签,无公式,其它场景后面会再详细例举。
在这里插入图片描述

最后看到

2025-03-21 02:14:01,684 llm_translate.translator translate 30 INFO     finish all step, result_pdf_path: D:\workPython\llm\fast_pdf_trans\output\Hands-On Generative AI with Transformers and Diffusion Models\Hands-On Generative AI with Transformers and Diffusion Models_correct_trans_format.pdf

表示结果pdf路径就是:D:\workPython\llm\fast_pdf_trans\output\Hands-On Generative AI with Transformers and Diffusion Models\Hands-On Generative AI with Transformers and Diffusion Models_correct_trans_format.pdf
在这里插入图片描述

本次没有指定输出文件的目录,所以默认是在项目目录的output文件夹下。
在这里插入图片描述

如上图:

  • 绿框是通过MinerU解析pdf后生成的markdown文件,但是本次使用了pdf书签生成markdown标题(在conf.yaml中有默认配置,后面详述),
    所以这个markdown文件里的标题看起来会有点奇怪,是我做了特殊记号的(用于标记标题级别)。
  • 黄框是在MinerU生成的markdown的基础上,进行一些修改操作,比如把上面的标题级别的标记还原成实际的markdown标题级别。
    或者在没有使用pdf书签的情况下,通过大模型修正markdown标题级别,也会在本文件中完成。
  • 蓝框就是翻译后的中文markdown了。
  • 红框是MinerU解析pdf后我保存的一些调试数据,比如layout.pdf, spans.pdf可以直接去看看。
  • 没有框起来的那两个文件,_correct_trans_format.md是在翻译完的markdown的基础上又进行了一些修正操作,比如将代码段中超长的代码行自动换行。_correct_trans_format.pdf就是最终的翻译结果啦。

所以如果已经完成了pdf到markdown的解析步骤,在翻译的过程中,手动中断了翻译任务(或者产生未知的异常中断了翻译任务),
可以再次运行相同的命令,pdf解析这一步是不会再重复执行的,因为相关的markdown已经存在了。
而已经翻译过的段落,实际上已经保存在缓存文件中了,所以会直接从缓存文件读取,不会再去调api。

是否开启缓存也是配置在conf.yaml的大模型配置中的,如下只展示缓存配置

ds_llm_agent: # deepseek官方api,这里的'ds_llm_agent'是在别的配置中引用的名字,随便起什么都可以。更多的llm_agent示例见conf_llm_example.yamluse_cache: true # 开启缓存,会把大模型的响应缓存在文件中,下次同样的问题直接从缓存文件中读取,不会重复调用大模型cache_file_name: deepseek-chat # 缓存文件名。缓存目录就是项目目录的cache文件夹

所以缓存文件名就是deepseek-chat.txt,它就在本项目的cache文件夹下:
在这里插入图片描述

其实通过这个文件来检查大模型的回答还挺方便。如果不想再用过去的缓存,可以自行删除这些文件。

六。更多翻译场景

比如

  • pdf有公式
  • pdf无书签
  • pdf页数过多导致内存不够
  • 翻译结果pdf有问题
  • 想使用命令行参数代替conf.yaml

见how_to_translate_different_pdfs_zh-CN.md

七。MinerU cuda环境安装

二。安装–2.安装MinerU中所说,可以参照MinerU官方的安装指南,也可以参照我这里的。其实MinerU的cuda环境稍微有点麻烦的是,它既要用到pytorch2.3.1又要用到paddlepaddle-gpu2.6.1,但这两者依赖的cuda版本还不一样。
另外,先完成二。安装里的步骤,然后再执行本节的步骤。

windows

安装显卡驱动

首先说明一下,cuda环境必然得是英伟达的显卡,如果你是amd显卡,那就不在本文讨论范围之内。MinerU也支持华为Ascend NPU,请参照MinerU官方文档 。

接下就是安装英伟达的显卡驱动了,其实一般情况下你多半已经安装过显卡驱动了(不然你显卡咋用来打游戏~~),但是我们得确认一下你的驱动版本是否过老(太老了可能不适用于cuda11.8),执行如下命令:

nvidia-smi

在这里插入图片描述
看右上角的CUDA Version,只要它大于等于11.8,就OK。注意,上图这里并不是说你安装了cuda12.6,而是你的显卡驱动最高支持cuda12.6。

  • 如果你压根就没这个命令(nvidia-smi),那你多半没装显卡驱动,去英伟达官网装一个nvidia驱动 。
  • 如果你CUDA Version小于11.8,那你还是得装一个新的驱动。

卸载pip安装的cpu版的pytorch

pip uninstall torch torchvision

输入Y回车。
在这里插入图片描述

使用conda安装pytorch

conda install pytorch==2.3.1 torchvision==0.18.1 pytorch-cuda=11.8 -c pytorch -c nvidia

如上命令安装的是cuda11.8版本的pytorch。
可能需要等待片刻,然后解析出所有要安装的包,输入Y回车。
在这里插入图片描述
可以检查一下pytorch安装好了没

conda list | findstr torch

在这里插入图片描述
上图的pytorch已经是cuda版的pytorch了。至于pytorch-cuda是啥,其实它就是conda里面的各种cuda文件的依赖打包。
可以执行如下命令查看安装好的cuda运行时:

conda list | findstr nvidia

在这里插入图片描述
cuda11.8运行时已经装好了,其实这并不是完整的cuda,它缺少nvcc编译器,不过只有要编译pytorch扩展时才会用到nvcc编译器。MinerU并不需要用到nvcc。

安装cudnn

conda install "cudnn==8.9.*[build=cuda11_0]"  -c nvidia --no-deps

可能需要等待片刻,然后解析出所有要安装的包,不过这次其实只有一个包,输入Y回车。
在这里插入图片描述
之所以只有一个包,是因为我们加了–no-deps,加它的原因是因为cudnn8.9依赖cuda-toolkit11.5,但我们已经有cuda11.8啦。其实安装的这个cudnn并不是给pytorch用的,pytorch自己就带上了cudnn的库文件。这里安装的是给paddlepaddle-gpu用的。

安装paddlepaddle-gpu

用pip安装,因为如果用conda安装的话,它会依赖cuda-toolkit11.7,而我们装的是pytorch-cuda11.8,它们依赖的cuda版本不一样,那就会装两个cuda进来,有可能会冲突。而cuda11.8一般是兼容基于cuda11.7开发的软件的。而用pip装paddlepaddle-gpu2.6.1的话,它并不会装cuda和cudnn相关的东西

pip install paddlepaddle-gpu==2.6.1

一切安装完毕!

修改MinerU配置

接下来把MinerU的配置文件修改一下
C:\Users\你的用户名\magic-pdf.json
把device-mode的值由cpu改为cuda
在这里插入图片描述

测试

还是跑之前的用例:

python translate.py "D:\学习\机器学习\GAN、扩散模型\Hands-On Generative AI with Transformers and Diffusion Models.pdf"  --start-page 21 --end-page 27

在这里插入图片描述
显存大于等于8G,则会进行批量推理(文档布局识别、文字行识别),上图红线处即表示用cuda推理,红框里显示文档布局识别用时1.83秒,文字行检测用时1.3秒,这是7页的总时间。
下面对比一下cpu推理的耗时:
在这里插入图片描述
cpu推理耗时明显比gpu慢很多,单页就要3到4秒。

linux

在linux下,在执行如下命令的时候,就已经安装了cuda版的pytorch,并且把cuda12.1和cudnn8.9都装好了。

pip install "magic-pdf[full]==1.2.0" --extra-index-url https://wheels.myhloli.com

接下来只要安装paddlepaddle-gpu就行了

python -m pip install paddlepaddle-gpu==3.0.0rc1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/

然后把MinerU配置文件修改一下就行了参照上面的windows一节中的修改MinerU配置
不过其实pytorch装的是cuda12.1,paddlepaddle装的是cuda11.8,这两者分别对应不同的cudnn,都通过pip装进来了,如下图:
在这里插入图片描述
em…,不过我运行了一下,是没有问题的,cuda11.8和cuda12.1共存,可能关系不太大,因为cuda11和cuda12的相关库文件名不同,pytorch和paddle在加载cuda库文件时可以通过文件名区分:
在这里插入图片描述

相关文章:

介绍一款基于MinerU的PDF翻译工具

一。简介 Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割, 送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。 git地址: https://github.com/kv1830/fast…...

轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁

在数字化浪潮席卷全球的今天,数据隐私与传输安全已成为企业及个人的核心关切。TLS(传输层安全协议)作为互联网通信的"隐形卫士",承担着保护数据在传输过程中不被窃取或篡改的重要使命。然而,对于许多传统服务…...

SQL问题分析与诊断(8)——前提

8.1. 前提 与其他关系库类似,SQL Server中,当我们对存在性能问题的SQL语句进行分析和诊断时,除了获取该SQL语句本身外,还需要获取SQL语句相应的查询计划及其相关的数据环境。这里,所谓数据环境,具体是指SQ…...

关于cmd中出现无法识别某某指令的问题

今天来解决以下这个比较常见的问题,安装各种软件都可能会发生,一般是安装时没勾选注册环境变量,导致cmd无法识别该指令。例如mysql,git等,一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…...

如何处理不同输入类型(例如邮箱、电话号码)的验证?

处理不同输入类型(如邮箱、电话号码)的验证可以通过多种方法实现,包括使用 HTML5 内置验证、JavaScript/jQuery 自定义验证和正则表达式。以下是一些常用的验证方法和示例。 1. 使用 HTML5 内置验证 HTML5 提供了一些内置的输入类型,可以自动处理基本的验证。 示例 <…...

Redis集群哨兵相关面试题

目录 1.Redis 主从复制的实现原理是什么? 详解 补充增量同步 replication buffer repl backlog buffer 2.Redis 主从复制的常见拓扑结构有哪些? 3.Redis 复制延迟的常见原因有哪些? 4.Redis 的哨兵机制是什么? 主观下线和客观下线 哨兵leader如何选出来的&#x…...

【CXX-Qt】4.1 extern “RustQt“

QObjects Properties Methods Signals #[cxx_qt::bridge] mod ffi {extern "RustQt" {} }extern “RustQt” 部分是 CXX-Qt 桥接的核心&#xff0c;用于声明 Rust 类型和签名&#xff0c;使其可用于 Qt 和 C。 CXX-Qt 代码生成器使用你的 extern “RustQt” 部…...

当 0 编程基础,用 ChatGPT 和 Cursor 开发同一应用时… |AI 开发初体验

求人不如求己。 事情是这样的&#xff0c;前段时间&#xff0c;我看了本书&#xff0c;书里介绍了款应用&#xff0c;能计算财富自由价格&#xff0c;还能制定退休计划。 结果&#xff0c;我迫不及待去下载这个应用时&#xff0c;发现这应用功能残缺&#xff0c;完全不可用。 …...

如何排查C++程序的CPU占用过高的问题

文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…...

数据库练习

完善t_hero表 -- 添加作者字段 alter table t_hero add author varchar(100);-- 更新数据update t_hero set author "曹雪芹" where id 1; update t_hero set author "曹雪芹" where id 2; update t_hero set author "曹雪芹" where id…...

nodejs-原型污染链

还是老规矩&#xff0c;边写边学&#xff0c;先分享两篇文章 深入理解 JavaScript Prototype 污染攻击 | 离别歌 《JavaScript百炼成仙》 全书知识点整理-CSDN博客 Ctfshow web入门 nodejs篇 web334-web344_web334 ctfshow-CSDN博客 334-js审计 var express require(expr…...

无人机与AI技术结合的突破性应用场景

1. 自主导航与动态避障 技术栈&#xff1a;SLAM 强化学习 (PPO算法) 代码示例&#xff08;Python PyTorch&#xff09;&#xff1a; import torch class DronePPO(torch.nn.Module):def __init__(self):super().__init__()self.actor torch.nn.Sequential(torch.nn.Linear…...

jsBridge在vue中使用

创建jsBridge.js /* eslint-disable */ function connectWebViewJavascriptBridge (callback) {if (window.WebViewJavascriptBridge) {callback(window.WebViewJavascriptBridge)} else {document.addEventListener(WebViewJavascriptBridgeReady, function () { callback(wi…...

Windows下docker使用教程

docker安装 镜像制作镜像加载容器创建更新镜像导出镜像 Windows10安装dockerdocker image制作docker 镜像加载docker 容器创建更新imageimage 导出为.tar文件 #以Windows10 、11为例 linux和Windows区别在于docker安装的程序是哪个操作系统的&#xff0c;后面的内容其实不变 …...

iOS:GCD信号量、同步、异步的使用方法

信号量的详细用法&#xff0c;可以用此方法进行队列管理 -(void)dispatchSignal{//crate的value表示&#xff0c;最多几个资源可访问dispatch_semaphore_t semaphore dispatch_semaphore_create(3);dispatch_queue_t quene dispatch_get_global_queue(DISPATCH_QUEUE_PRIORI…...

Nginx相关漏洞解析

一、CRLF注入漏洞 原理&#xff1a;Nginx将传入的url进行解码&#xff0c;对其中的%0a%0d替换成换行符&#xff0c;导致后面的数据注入至头部&#xff0c;造成CRLF 注入漏洞 1、开环境 2、访问网站&#xff0c;并抓包 3、构造请求头 %0ASet-cookie:JSPSESSID%3D1 这样就可以…...

SpringCloud构建一个服务步骤

Spring Cloud是一个用于构建分布式系统的开源框架&#xff0c;可以帮助开发者快速构建各种云原生应用。下面是一个简单的步骤&#xff0c;展示如何使用Spring Cloud构建一个服务&#xff1a; 创建一个Spring Boot项目&#xff1a;首先需要创建一个Spring Boot项目作为基础。可以…...

MySQL中怎么分析性能?

MySQL中主要有4种方式可以分析数据库性能&#xff0c;分别是慢查询日志&#xff0c;profile&#xff0c;Com_xxx和explain。 慢查询日志 先用下面命令查询慢查询日志是否开启&#xff0c; show variables like slow_query_log;# 一般默认都是以下结果 ---------------------…...

MinGW与使用VScode写C语言适配

压缩包 通过网盘分享的文件&#xff1a;MinGW.zip 链接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取码: 2c2q 需要下载的插件 1.翻译 找到VScode页面&#xff0c;从上数第4个&#xff0c;点击扩展&#xff08;以下通此&#xff09; 搜索---Chinese--点击---安装--o…...

k8s存储介绍(五)PV与PVC

在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;持久化存储&#xff08;Persistent Storage&#xff09;是一个非常重要的概念&#xff0c;因为 Pod 本身是无状态的&#xff0c;重启后会丢失数据。为了支持有状态应用&#xff0c;Kubernetes 提供了持久化存储的机制&a…...

LangChain开发(五)消息管理与聊天历史存储

文章目录 消息存储在内存使用单参数session_id配置会话唯一键 消息持久化到redis安装redis依赖安装redis调用聊天接口&#xff0c;看Redis是否存储历史记录 裁剪消息总结记忆源码地址参考资料 消息存储在内存 我们展示一个简单的示例&#xff0c;其中聊天历史保存在内存中&…...

HTML 表单处理进阶:验证与提交机制的学习心得与进度(一)

引言 在前端开发的广袤领域中&#xff0c;HTML 表单处理堪称基石般的存在&#xff0c;是构建交互性 Web 应用不可或缺的关键环节。从日常频繁使用的登录注册表单&#xff0c;到功能多样的搜索栏、反馈表单&#xff0c;HTML 表单如同桥梁&#xff0c;紧密连接着用户与 Web 应用…...

【文献25/03/26】Hyperspectral Image Transformer Classification Networks

高光谱图像Transformer分类网络 Hyperspectral Image Transformer Classification Networks | IEEE Journals & Magazine | IEEE Xplore 摘要 高光谱图像&#xff08;HSI&#xff09;分类是地球观测任务中的一项重要工作。 卷积神经网络&#xff08;CNN&#xff09;凭借…...

数字转换(c++)

【题目描述】 如果一个数 xx 的约数和 yy &#xff08;不包括他本身&#xff09;比他本身小&#xff0c;那么 xx 可以变成 yy &#xff0c;yy 也可以变成 xx 。例如 44 可以变为 33 &#xff0c;11 可以变为 77 。限定所有数字变换在不超过 nn 的正整数范围内进行&#xff0c;…...

WPF ContentPresenter详解2

ContentPresenter与ContentControl的区别 ContentControl 和 ContentPresenter 是 WPF 中两个相关的控件&#xff0c;但它们在用途和功能上有一些关键的区别。理解这两者的区别和联系有助于更好地设计和开发用户界面。 1. 类层次结构 ContentControl&#xff1a;位于 WPF 控件…...

【git】认识git的本地仓库

1.创建本地仓库 git init2. 配置本地仓库 git config user.name xxx git config user.email xxx3. 认识本地仓库 创建完本地仓库后&#xff0c;目录下会有一个.git文件&#xff0c;这个就是本地仓库 而创建本地仓库的目录叫做工作区&#xff0c;我们不能对.git文件进行任何手…...

正则表达式基本语法和Java中的简单使用

先来个例子 public static final Pattern CHINESE_PATTERN Pattern.compile("[\\u4e00-\\u9fa5]"); / 检测字符串是否包含汉字 String text "Hello 世界"; boolean hasChinese CHINESE_PATTERN.matcher(text).find(); // 返回 true// 提取所有汉字 Mat…...

【大模型】什么是循环神经网络(RNNs)

在人工智能&#xff08;AI&#xff09;的世界里&#xff0c;**循环神经网络&#xff08;Recurrent Neural Networks, RNNs&#xff09;**是一种非常强大的工具&#xff0c;特别适合处理序列数据。无论是语言、时间序列还是音乐&#xff0c;RNNs都能帮助我们理解和预测这些数据的…...

Leetcode 交错字符串

java solution class Solution {public boolean isInterleave(String s1, String s2, String s3) {//首先获取这三个字符串的长度int m s1.length();int n s2.length();int l s3.length();if(m n ! l) return false;//创建dp数组,dp[i][j]其含义是s3的前ij个字符是否可以由…...

Vue动态绑定:文本框、单选按钮、下拉列表、多选按钮

Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件处理:v-on 指令》 《Vue表单元素绑定:v-model 指令》…...

MySQL - 数据库基础操作

SQL语句 结构化查询语言(Structured Query Language)&#xff0c;在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。 分类 DDL 数据定义语言(Data Definition Language)&#xff0c;定义对数据库对象(库、表、列、索引)的操作。 DML 数据操作语言(Data Manip…...

从入门到精通:SQL注入防御与攻防实战——红队如何突破,蓝队如何应对!

引言&#xff1a;为什么SQL注入攻击依然如此强大&#xff1f; SQL注入&#xff08;SQL Injection&#xff09;是最古老且最常见的Web应用漏洞之一。尽管很多公司和组织都已经采取了WAF、防火墙、数据库隔离等防护措施&#xff0c;但SQL注入依然在许多情况下能够突破防线&#…...

关于优麒麟ukylin如何更换清华源以及ubuntu24.04安装gcc-i686-linux-gnu找不到包的问题

打算把这个文章当成一个调试Linux bug的汇总&#xff0c;会持续更新 1、关于优麒麟ukylin如何更换清华源 &#xff08;1&#xff09;首先打开命令行&#xff0c;切换root权限 su root 输入密码 如果第一次使用ubuntu会提示密码不正确&#xff0c;输入 sudo passwd root …...

Spring Boot 自定义 Starter 组件的技术指南

1、简述 Spring Boot 通过 Starter 机制&#xff0c;让开发者可以快速集成第三方组件。在企业级开发中&#xff0c;我们常常需要封装自己的 Starter 组件&#xff0c;以提高代码复用性&#xff0c;简化配置&#xff0c;并实现可插拔的模块化开发。 Spring Boot Starter 机制 …...

基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

HarmonyOS 之 @Require 装饰器自学指南

在 HarmonyOS 应用开发工作中&#xff0c;我频繁碰到组件初始化传参校验的难题。在复杂的组件嵌套里&#xff0c;要是无法确保必要参数在构造时准确传入&#xff0c;就极易引发运行时错误&#xff0c;而且排查起来费时费力。一次偶然的机会&#xff0c;我接触到了 Require 装饰…...

【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典

更新日期&#xff1a;2025年3月26日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…...

JavaScript的性能优化指导

JavaScript 的性能优化可以从多个层面入手&#xff0c;涵盖代码执行效率、内存管理、DOM 操作、网络请求等。以下是一些关键优化策略&#xff1a; 一、代码执行优化 减少作用域链查找 避免在循环中频繁访问全局变量或深层嵌套的属性&#xff0c;将其缓存到局部变量中。 // 优化…...

如何在 Vue 项目中使用v - for指令进行列表渲染,如何优化其性能?

大白话如何在 Vue 项目中使用v - for指令进行列表渲染&#xff0c;如何优化其性能&#xff1f; 在Vue项目里&#xff0c;咱们常常会碰到要把一组数据渲染成列表的状况。这时候&#xff0c;v-for指令就派上大用场啦&#xff01;它能让咱们轻松地把数据数组里的每个元素渲染成对…...

Notepad++ 替换 换行符 为 逗号

多行转一行&#xff0c;逗号分隔 SPO2025032575773 SPO2025032575772 SPO2025032575771 SPO2025032575771 SPO2025032575770为了方便快速替换&#xff0c;我们需要先知道这样类型的数据都存在哪些换行符。 点击【视图】-【显示符号】-【显示行尾符】 对于显示的行尾换行符【C…...

《基于机器学习发电数据电量预测》开题报告

个人主页&#xff1a;大数据蟒行探索者 目录 一、选题背景、研究意义及文献综述 &#xff08;一&#xff09;选题背景 &#xff08;二&#xff09;选题意义 &#xff08;三&#xff09;文献综述 1. 国内外研究现状 2. 未来方向展望 二、研究的基本内容&#xff0c;拟解…...

【Linux】MAC帧

目录 一、MAC帧 &#xff08;一&#xff09;IP地址和MAC地址 &#xff08;二&#xff09;MAC帧格式 &#xff08;三&#xff09;MTU对IP协议的影响、 &#xff08;四&#xff09;MTU对UDP协议的影响 &#xff08;五&#xff09;MTU对TCP协议的影响 二、以太网协议 &…...

企业入驻成都国际数字影像产业园,可享150多项专业服务

企业入驻成都国际数字影像产业园&#xff0c;可享150多项专业服务 全方位赋能&#xff0c;助力影像企业腾飞 入驻成都国际数字影像产业园&#xff0c;企业将获得一个涵盖超过150项专业服务的全周期、一站式支持体系&#xff0c;旨在精准解决企业发展各阶段的核心需求&#xf…...

飞速(FS)企业网布线解决方案:赋能能源行业客户高效网络部署与智能化管理

国家&#xff1a;中国 行业&#xff1a;能源与公用事业 网络类型&#xff1a;楼宇主干局域网 方案类型&#xff1a;企业网络布线 案例亮点 部署高密度、高性能飞速&#xff08;FS&#xff09;24口千兆企业级交换机&#xff0c;有效节省客户机房安装空间&#xff0c;提高并发…...

前端性能优化方案总结

首屏加载优化 把老版本的库替换成新版本&#xff0c;支持tree shaking的库&#xff0c;按需引入&#xff0c;只打包用到的部分&#xff0c;大大优化项目体积&#xff0c;加快项目的首屏渲染。 能不用第三方库&#xff0c;就不用第三方库&#xff0c;比如时间格式化&#xff0c;…...

基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ADMM算法 4.2 最大似然ML检测算法 4.3 最小均方误差&#xff08;MMSE&#xff09;检测算法 4.4 迫零&#xff08;ZF&#xff09;检测算法 4.5 OCD_MMSE 检测算法 4.6 LAMA检测算法 …...

[plugin:vite:import-analysis] Cannot find module ‘vuex\dist\vuex.esm-bundler

我的是升级了uview-plus版本&#xff0c;导致一直报错&#xff0c;即时将版本降回去也报错&#xff0c;需要将package-lock.json和package-lock.yaml文件删掉重新安装软件包...

用Deepseek + Kimi 快速生成高质量的ppt

AI系列文章&#xff1a; AWS AI认证考试中经常提及几个重要的工具介绍 简单理解机器学习中top_k、top_p、temperature三个参数的作用 用Deepseek Kimi 快速生成高质量的ppt 在职场&#xff0c;不管干什么&#xff0c;都少不了和 PPT 打交道&#xff1a;客户交流&#xff0c…...

【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码

本章目录 1. sync.Mutex锁的基本用法2. sync.Mutex的核心原理自旋到阻塞的升级过程自旋CAS 饥饿模式 3. sync.Mutex底层源码Mutex结构定义全局常量Mutex.Lock()方法第一次CAS加锁能够成功的前提是&#xff1f;竞态检测 Mutex.lockSlow()lockSlow的局部变量自旋空转state新值构造…...

Maven入门

1、简介 Apache Maven是一个项目管理及自动构建工具&#xff0c;由Apache软件基金会所提供。基于项目对象模型&#xff08;缩写&#xff1a;POM&#xff09;概念&#xff0c;Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 2、作用 1&#xff09;依赖导…...