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

魔法测试:用本地多模态大模型(Qwen2.5-VL)将PDF转为Markdown文档

安装咒语清单 📜

pip install -U vllm qwen-vl-utils pdf2image
pip install git+https://github.com/huggingface/transformers accelerate

(温馨提示:念咒前请检查你的魔法棒(Python环境)是否兼容~)在这里插入图片描述
在这里插入图片描述

第一阶段:PDF变形术 🎩→🖼️

import os
import shutil
from pdf2image import convert_from_pathclass PdfToImg:"""PDF转图像工具类 - 让枯燥的PDF在像素的海洋里畅游"""def __init__(self,dpi: int = 200,  # 分辨率越高,文件越大,你的内存哭得越惨fmt: str = "jpeg",  # 就像选择把PDF变成照片还是油画size: tuple = (700, None),  # 宽度700,高度随缘output_folder: str = "./out",  # 输出目录,会自动清空,小心别放重要文件!):self.fmt = fmt  self.output_folder = output_folderself.paths_only = True  # 只返回路径不返回图片对象,省内存小技巧self.size = size  self.dpi = dpi  # 清空输出目录(危险动作,请勿模仿到生产环境)if os.path.exists(self.output_folder):shutil.rmtree(self.output_folder)os.makedirs(self.output_folder, exist_ok=True)def convert(self, file_path: str) -> list[str]:"""执行转换 - 见证奇迹的时刻"""img_paths = convert_from_path(file_path,fmt=self.fmt,output_folder=self.output_folder,paths_only=self.paths_only,size=self.size,dpi=self.dpi,)if not img_paths:raise ValueError("转换失败!可能:1.PDF是空的 2.你的PDF在抗议 3.玄学问题")return img_paths

使用示例:

pdf2img = PdfToImg()  # 默认参数适合大多数凡人
pdf2img.convert("example.pdf")  # 请确保这个PDF不是你的毕业论文终稿

第二阶段:AI视觉魔法 🔮→📝

from transformers import AutoProcessor
from vllm import LLM, SamplingParams
from qwen_vl_utils import process_vision_infoclass Qwen25VLModel:"""Markdown生成器 - 让AI帮你写文档,卷死同事"""def __init__(self, model: str = "Qwen/Qwen2.5-VL-7B-Instruct-AWQ", **kwargs):self.model = modelself.llm = LLM(model=self.model, **kwargs)  # 加载模型,祈祷你的显卡不会冒烟def generate(self, file_path: str, prompt: str = None, sampling_params: SamplingParams = None) -> str:"""核心生成方法 - AI开始它的表演"""if not prompt:prompt = "请将PDF文件中的图像内容准确提取并转换为标准Markdown格式,确保转换结果严格遵循Markdown语法规范,同时尽可能保留原始内容的结构和细节。"# 默认prompt写得这么详细,是怕AI偷懒吗?# 构建多模态输入(让AI既看图又看提示)message = [{"role": "system", "content": "你是文档解析专家"},{"role": "user", "content": [{"type": "image", "image": f"file://{file_path}"},{"type": "text", "text": prompt},]}]processor = AutoProcessor.from_pretrained(self.model)prompt = processor.apply_chat_template(message, tokenize=False, add_generation_prompt=True)image_input, _ = process_vision_info(message)outputs = self.llm.generate([{"prompt": prompt,"multi_modal_data": {"image": image_input} if image_input else {}}], sampling_params=sampling_params or SamplingParams(temperature=0.1,  # 低温让AI少说胡话min_p=0.1,  # 概率阈值max_tokens=8192,  # 最大长度,写小说都够了stop_token_ids=[],  # 不设停止符,让AI尽情发挥))return outputs[0].outputs[0].text  # 从层层嵌套中取出生成的文本# 初始化模型(显卡风扇开始狂转)
llm = Qwen25VLModel(model="Qwen/Qwen2.5-VL-7B-Instruct-AWQ",#用哪个模型在于你的实力dtype="half",  # float16量化,牺牲精度换速度max_model_len=7000,  # 上下文长度限制,防止OOM
)# 施放魔法!
markdown_text = llm.generate(img_files[0]) 

效果如何?🤔
本AI只能说:效果介于"哇塞太神奇了"和"这什么鬼"之间,
取决于你的PDF内容、图片质量、星座运势和AI当天的心情~
(建议亲自试试,反正烧的是你的显卡)🔥

相关文章:

魔法测试:用本地多模态大模型(Qwen2.5-VL)将PDF转为Markdown文档

安装咒语清单 📜 pip install -U vllm qwen-vl-utils pdf2image pip install githttps://github.com/huggingface/transformers accelerate(温馨提示:念咒前请检查你的魔法棒(Python环境)是否兼容~) 第一阶段:PDF变…...

【渗透测试】Fastjson 反序列化漏洞原理(二)

目录 反序列化漏洞结合 RMI 攻击详解一、RMI 和 JNDI 的基础知识(1) RMI 简介(2) JNDI 简介 二、漏洞利用的核心原理1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 加载并执行恶意代码 三、具体利用过程环境准备攻击步骤1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 部署恶意类…...

[c语言日寄MAX]深度解析:大小端字节序

【作者主页】siy2333 【专栏介绍】⌈c语言日寄MAX⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还…...

凝视型高光谱相机:钻石光谱分析研究与应用

钻石作为一种珍贵的宝石,其颜色和光谱特征一直是宝石学研究的重要方向。中达瑞和测试部样品科对六种不同颜色的钻石样品进行了高光谱成像测试,旨在分析它们在光谱下的差异和可分性。本文将详细介绍此次测试的过程、结果及其意义。 测试样品与设备 此次…...

2.基于多线程的TCP服务器实现

在我们预想中,服务器端应该能够同时与多个客户端建立连接并进行网络通信。然而,在之前的代码中,服务器实现只支持单一连接,因为在处理连接时,主线程会被accept()、read()或write()等方法阻塞,导致无法响应新…...

自动驾驶01 激光雷达原理

部分转载于 原文链接:https://blog.csdn.net/qq_45193988/article/details/143982588 1. 什么是激光雷达 激光雷达LiDAR的全称为Light Detection and Ranging 激光探测和测距。 激光雷达的工作原理:对红外光束Light Pluses发射、反射和接收来探测物体。…...

基础场景-------------------(5)重载和重写的区别

重写(Override) 从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继 承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列 表,返回…...

基于ssm的微博网站(全套)

进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术JSP开发的微博网站,可以实…...

Java并发编程从入门到实战:同步、异步、多线程核心原理全解析

《Java并发编程从入门到实战:同步、异步、多线程核心原理全解析》 一、多线程基础认知(从单核到多核的进化) 1.1 什么是线程? 线程是程序执行的最小单元,一个进程可以包含多个线程。例如浏览器同时下载文件&#xff0…...

《引流获客》总结

第一章 入门篇 理解爆款打法和引流打法的区别 爆款打法:刷播放量,制作“爆款”视频/文案。 引流打法:刷有效转化,不在意播放量,而注重有多少观众被引流成为客户,完成消费,即成交转化。 定理&…...

基于Python的机器学习入门指南

在当今数字化时代,机器学习(Machine Learning)已经成为科技领域中最热门的话题之一。它不仅改变了我们对数据的理解和处理方式,还在许多行业中得到了广泛应用,如金融、医疗、交通等。Python作为一门强大的编程语言&…...

【蓝桥杯每日一题】3.25

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x “OJ超时不是终点,是算法在提醒你该优化时间复杂度了!” 目录 3.25 差分数组 一、一维差分 题目链接: 题目描述: 解题思路:…...

Kubernetes高级应用之-重启策略

一、介绍+扩展应用(涉及的高级资源在后续会写出来) # Kubernetes Pod重启策略(RestartPolicy)全面解析 ## 一、重启策略的核心价值与重要性 在Kubernetes集群中,Pod重启策略(RestartPolicy&a…...

Axure RP9.0教程: 多级联动【设置选项改变时->情形->面板状态】(给动态面板元件设置相关交互事件的情形,来控制其他面板不同的状态。)

文章目录 引言I 多级联动(省、市、区)实现思路添加三省、市、区下拉列表给省下拉框添加数据源将市、区下拉框添加不同状态,分别以省、市命名给省下拉控件设置选项改变时的交互事件省下拉控件的交互事件情形市下拉交互事件的配置II 知识扩展: 展示省 → 地级市 → 区县的多级…...

Next.js 严重漏洞:攻击者可绕过中间件授权检查

Next.js React 框架近日披露了一个严重的安全漏洞,攻击者可在特定条件下利用该漏洞绕过授权检查。该漏洞被标记为 CVE-2025-29927,其 CVSS 评分为 9.1(满分 10.0)。 漏洞详情 Next.js 在公告中表示:“Next.js 使用内…...

气象可视化卫星云图的方式:方法与架构详解

气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…...

NLP高频面试题(十四)——DPO、PPO等强化学习训练方法介绍

强化学习(Reinforcement Learning,RL)近年来随着深度学习的快速发展而备受关注,特别是在游戏控制、自动驾驶、机器人控制及大语言模型训练等领域均有广泛应用。本文将重点介绍强化学习中的经典训练方法,包括PPO&#x…...

从 Neo4j 数据库中提取数据并绘制图谱

代码说明: 连接 Neo4j 数据库: 使用 py2neo.Graph 连接到 Neo4j 数据库。确保替换 uri、username 和 password 为你的实际配置。 Cypher 查询: 查询数据库中的节点和关系,限制返回的记录数(例如 LIMIT 100&#xff09…...

Android Compose 框架隐式动画之过渡动画深入剖析(二十六)

Android Compose 框架隐式动画之过渡动画深入剖析 一、引言 在移动应用开发领域,用户体验始终是至关重要的。动画效果作为提升用户体验的关键元素,能够为应用增添生动性和交互性。Android Compose 作为现代 Android UI 工具包,为开发者提供…...

esp32s3聊天机器人(三)

先放上最新的硬件图 添加了按钮、600毫安锂电池和充电板 关于 sherpa-onnx 语音生成的打断 按说明实现了一下,但是偶尔还是有问题,毕竟不是直接立刻打断生成 private int OnAudioData(nint samples, int n){//Console.WriteLine("OnAudioData n…...

超融合服务器是什么

超融合服务器的定义与背景 超融合服务器(Hyperconverged Infrastructure, HCI)是一种通过软件定义技术,将计算、存储、网络和虚拟化功能整合到单一硬件平台中的IT基础设施解决方案。其核心目标是通过资源的高度集成和统一管理,简…...

Rust从入门到精通之精通篇:22.Unsafe Rust 详解

Unsafe Rust 详解 在 Rust 的设计哲学中,安全性是核心原则之一。Rust 的所有权系统、借用检查器和类型系统共同保证了内存安全和线程安全。然而,有些底层操作无法通过 Rust 的安全检查机制进行验证,这就是 unsafe Rust 存在的原因。在本章中,我们将深入探讨 unsafe Rust,…...

如何设计系统扩展性以应对业务增长

要设计具备良好扩展性的系统以应对业务增长,关键在于采用分布式架构、实现服务的松耦合、保证数据库的水平扩展能力、使用缓存和CDN优化性能、做好持续监控与自动化运维。其中,服务的松耦合尤为重要。松耦合意味着系统中各服务之间的依赖关系较弱&#x…...

Python基于Django的小区监控图像拼接系统【附源码、文档说明】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...

ElasticSearch快速入门--实现分词搜索

分词题目搜索 使用Elasticsearch实现题目数据的存储和分词搜索,需要将数据库的数据同步到 Elasticsearch。 ElasticSearch入门 ElasticSearch(简称ES)是一个开源的分布式搜索和数据分析引擎,用Java开发并且是当前最流行的开源的…...

解读探寻数字影像新路径:树莓集团现状最新进展

树莓集团在数字影像领域展现出强劲的发展势头,其核心战略在于构建完整的数字产业生态链。 产业园建设与运营 全国布局: 树莓集团已在全国范围内建设并运营多个国际数字影像产业园,旨在打造区域性的数字产业高地。 成都案例: 在成…...

数据治理之数据仓库

本文主要阐述了数据仓库在大数据平台项目中的地位和重要性,对目前市场上数据仓库主流设计进行分析说明,讲述了通用数据仓库设计上所应考虑的因素。 数据仓库介绍 数据仓库是一个过程而不是一个项目;数据仓库是一个环境,而不是一件产品。数据仓库提供用户用于决策支持的当前…...

自由学习记录(48)

When the material of an object disappears, the light and shadow also disappear (synchronized) Tiling And Offset 显示的是四分之一前面的,不是中间的四分之一块, 准确的还是跟着视频学, ,AI一些回答会散发一种“奇怪的错味…...

zynq7020 最小ps环境速通

1 简介 环境: 硬件 野火 zynq 皓月 xc7z020clg400-1 软件: vivado2020.2 vitis2020.2 petalinux2020.2 搭建 ps 的最小环境,跑裸机 helloworld 测试 uart 和 ddr,跑 linux 系统. 2 ps 环境搭建 2.1 uart 2.1 ddr 2.1 删除 pl 接口,包括 pl 时钟,pl 时钟复位,axi_m. 具体略…...

Modbus RTU ---> Modbus TCP透传技术实现(Modbus透传、RS485透传、RTU透传)分站代码实现

文章目录 Modbus RTU到Modbus TCP透传技术实现1. 透传技术概述1.1 透传基本原理- 协议帧格式转换- 地址映射与管理- 通信时序适配- 错误检测与处理 2. 透传网关硬件架构2.1 典型硬件结构- 微控制器/处理器(ARM、STM32等)- RS-485/RS-232收发器- 以太网控制器(如W5500)- 电源管理…...

【SOC 芯片设计 DFT 学习专栏 -- IDDQ 测试 与 Burn-In 测试】

文章目录 IDDQ 测试与 Burn-In 测试IDDQ 测试工作原理测试过程优点局限性示例 2. Burn-In 测试工作原理测试过程优点局限性示例 总结对比 IDDQ 测试和 Burn-in 测试: IDDQ 测试与 Burn-In 测试 本文将详细介绍 DFT 中 IDDQ测试 和 burn-in测试模式 IDDQ 测试 IDD…...

Rust从入门到精通之进阶篇:19.Rust 生态系统

Rust 生态系统 Rust 拥有一个丰富而活跃的生态系统,提供了各种库和框架来支持不同领域的开发。在本章中,我们将探索 Rust 生态系统中的主要组件,了解常用的库和工具,以及如何在项目中有效地使用它们。 Rust 包管理:Cargo 和 crates.io Cargo 回顾 Cargo 是 Rust 的构建…...

【HarmonyOS Next】三天撸一个BLE调试精灵

【HarmonyOS Next】三天撸一个BLE调试精灵 一、功能介绍 BLE调试精灵APP属于工具类APP,在用户使用的过程中,负责调试BLE设备从机端,比如蓝牙耳机、低功耗设备、带有BLE的空调等设备,可以在页面中清晰看到设备的厂商,…...

STM32实现智能温控系统(暖手宝):PID 算法 + DS18B20+OLED 显示,[学习 PID 优质项目]

一、项目概述 本文基于 STM32F103C8T6 单片机,设计了一个高精度温度控制系统。通过 DS18B20 采集温度,采用位置型 PID 算法控制 PWM 输出驱动 MOS 管加热Pi膜,配合 OLED 实时显示温度数据。系统可稳定将 PI 膜加热至 40℃,适用于…...

【docker】docker-compose安装RabbitMQ

docker-compose安装RabbitMQ 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改)2、启动mq3、访问mq4、查看服务器映射目录5、踩坑5.1、权限不足 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改) versi…...

如何突破MacBook苹果电脑Cursor限制:免费版的解决方法

Macbook苹果电脑无限白嫖Cursor|解决免费版限制问题|达到50次150次续杯|arm|intel 如何突破MacBook苹果电脑Cursor限制:免费版的解决方法 前言 本文介绍了如何在MacBook上突破Cursor免费版的使用限制。请遵循以下步骤进行操作。 操作步骤 进入程序目录:…...

网络原理之传输层

前文我们了解 应用层 传输层 网络层 数据链路层 物理层 这五层结构,此文我先讨论传输层相关的知识 1. 传输层 负责数据能够从发送端传输到接收端. 1.1 端口号 端⼝号(Port)标识了⼀个主机上进行通信的不同的应用程序 端口号范围划分: 0-1023:知名端口号,HTTP,FTP,SSH等这些…...

一个免费 好用的pdf在线处理工具

pdf24 doc2x 相比上面能更好的支持数学公式。但是收费...

新书速览|云原生Kubernetes自动化运维实践

《云原生Kubernetes自动化运维实践》 本书内容: 《云原生Kubernetes自动化运维实践》以一名大型企业集群运维工程师的实战经验为基础,全面系统地阐述Kubernetes(K8s)在自动化运维领域的技术应用。《云原生Kubernetes自动化运维实践…...

解决安卓so库异常无法打印堆栈的问题

解决方案&#xff1a; 设置 android:extractNativeLibs"true" 直接在 AndroidManifest.xml 里加上&#xff1a; <applicationandroid:extractNativeLibs"true"> </application>这样&#xff0c;so 文件会被解压&#xff0c;崩溃时可以正常打…...

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");...

红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法

红数码影视(RED Digital Cinema)的摄像机可以生成两种RAW级高清视频文件&#xff0c;一种是R3D&#xff0c;一种是MOV。其中MOV属于苹果(apple)公司的QT视频封装结构&#xff0c;使用的视频编码是Apple ProRes;而R3D则是RED公司自创的RAW视频文件&#xff0c;这种文件解码需要使…...

若依前端框架增删改查

1.下拉列表根据数据库加载 这个是用来查询框 绑定了 change 事件来处理站点选择变化后的查询逻辑。 <el-form-item label"站点选择" prop"stationId" v-has-permi"[ch:m:y]"><el-select v-model"queryParams.stationId" pl…...

YARN Cluster模式和Client模式的区别是什么

在 Apache Spark 的 YARN 部署中&#xff0c;Cluster 模式和Client 模式的核心区别在于 Driver 的启动位置和客户端&#xff08;提交任务的机器&#xff09;的角色。以下是两者的详细对比&#xff1a; 1. 核心区别概览 特性YARN Cluster 模式YARN Client 模式Driver 位置在 YA…...

哪吒汽车:一边熬夜蹦迪,一边找药投医

两年前&#xff0c;威马CEO沈晖发了个短视频&#xff0c;内容是“活下去&#xff0c;像牲口一样活下去”。 如今最能体会沈晖当时心情的&#xff0c;估计就是方运舟了。 作为哪吒汽车创始人兼董事长&#xff0c;他连续多次被限高&#xff0c;为了让哪吒汽车活下去&#xff0c…...

Java 集合 List、Set、Map 区别与应用

一、核心特性对比 二、底层实现与典型差异 ‌List‌ ‌ArrayList‌&#xff1a;动态数组结构&#xff0c;随机访问快&#xff08;O(1)&#xff09;&#xff0c;中间插入/删除效率低&#xff08;O(n)&#xff09;‌‌LinkedList‌&#xff1a;双向链表结构&#xff0c;头尾操作…...

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String&#xff1b;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…...

深度学习PyTorch之动态计算图可视化 - 使用 torchviz 生成计算图

序号系列文章1深度学习训练中GPU内存管理2深度学习PyTorch之数据加载DataLoader3深度学习 PyTorch 中 18 种数据增强策略与实现4深度学习pytorch之简单方法自定义9类卷积即插即用5深度学习PyTorch之13种模型精度评估公式及调用方法6深度学习pytorch之4种归一化方法&#xff08;…...

拓展知识三:编码学及密码学

编码和密码的区别 研究密码变化的客观规律&#xff0c;应用于编制密码以保守通信秘密的&#xff0c;称为编码学&#xff1b;应用于破译密码以获取通信情报的&#xff0c;称为破译学&#xff0c;总称密码学。 编码和密码是两个不同的概念&#xff0c;它们的区别如下&#xff1a;…...

【商城实战(54)】解锁商城国际化密码:内容管理全攻略

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...