【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码

前情提要
20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。

三位老师把视频课的内容提炼重点再面授。(我先看了一遍视频,但是算法和图像都看不懂,后来就直接挂分刷满时间,不看了)
今天是面对面授课,听不懂我也要聚精会神听,感觉能听懂一点点了。


第二位女老师讲授数字图像处理,没有说太多的理论,而是鼓励学生多练习图像处理的代码,获得一定的需求。
1、推荐了飞棠学习网站

2、介绍最新人工智能算法代码
2025

2019

3、介绍一些数字图像处理的实用案例。


背景需求:
随后老师分享了部分考试提纲内容,希望学员通过背诵记忆,通过理论考试。

下载后我发现word比较多,而且不是按序排列(第一章、第五章),一个个打开查看不方便。所以我想做成一个PDF
把序号改成第1章、第2章,把题目设置01、把答案写02,这样就能完全按照顺序排列

第1次询问deepseek

第一次生成结果


打开后的确是按顺序排列的,供幼56页,但是我发现底部没有页码,这样容易遗失

第2问:如何PDF添加页码

把生成的修改代码(包括页码)运行后,添加页码的部分出现问题

第3问:把出现的错误的截图+源代码一起写入deep seek

AI发现了问题成因,并重新写代码

最终代码
'''
上师大继续教育人工智能-数字图像处理复习题合并+pdf页码
deepseek,阿夏
20250419
'''import os
from docx2pdf import convert
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
import iodef convert_docx_to_pdf(input_folder):"""将指定文件夹中的所有DOCX文件转换为PDF"""for filename in os.listdir(input_folder):if filename.lower().endswith('.docx'):docx_path = os.path.join(input_folder, filename)try:print(f"正在转换: {filename}")convert(docx_path, docx_path.replace('.docx', '.pdf'))print(f"转换完成: {filename}")except Exception as e:print(f"转换 {filename} 时出错: {e}")def create_page_num_pdf(page_num, total_pages, pagesize):"""创建包含页码的单个PDF页面"""packet = io.BytesIO()# 确保pagesize是float类型if hasattr(pagesize, '__iter__'):pagesize = (float(pagesize[0]), float(pagesize[1]))else:pagesize = lettercan = canvas.Canvas(packet, pagesize=pagesize)# 设置页码文本 (底部居中)text = f"{page_num}/{total_pages}"width, height = pagesizecan.setFont("Helvetica", 10) # 设置字体和大小can.drawCentredString(width / 2, 20, text) # 在底部居中位置绘制页码can.save()packet.seek(0)return PdfReader(packet)def add_page_numbers(input_pdf_path, output_pdf_path):"""为PDF文件添加页码"""reader = PdfReader(input_pdf_path)writer = PdfWriter()total_pages = len(reader.pages)for page_num in range(total_pages):# 获取原始页面page = reader.pages[page_num]# 获取页面尺寸并确保是float类型if '/MediaBox' in page:media_box = page['/MediaBox']pagesize = (float(media_box[2]), float(media_box[3]))else:pagesize = letter # 默认使用letter尺寸# 创建带页码的PDFpage_num_pdf = create_page_num_pdf(page_num + 1, total_pages, pagesize)# 将原始页面与页码合并page.merge_page(page_num_pdf.pages[0])writer.add_page(page)# 保存带页码的PDFwith open(output_pdf_path, "wb") as output_pdf:writer.write(output_pdf)def merge_pdfs(input_folder, output_folder, output_filename='20250419(合并打印版本)数字图像处理考试.pdf'):"""合并指定文件夹中的所有PDF文件并添加页码"""# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)merger = PdfWriter()pdf_files = []# 收集所有PDF文件for filename in os.listdir(input_folder):if filename.lower().endswith('.pdf'):pdf_path = os.path.join(input_folder, filename)pdf_files.append(pdf_path)if not pdf_files:print("没有找到PDF文件可合并")return# 按文件名排序pdf_files.sort()# 合并PDFfor pdf in pdf_files:try:reader = PdfReader(pdf)for page in reader.pages:merger.add_page(page)print(f"已添加: {os.path.basename(pdf)}")except Exception as e:print(f"添加 {pdf} 时出错: {e}")# 保存临时合并PDFtemp_output_path = os.path.join(output_folder, 'temp_' + output_filename)final_output_path = os.path.join(output_folder, output_filename)try:with open(temp_output_path, "wb") as temp_pdf:merger.write(temp_pdf)# 为合并后的PDF添加页码add_page_numbers(temp_output_path, final_output_path)print(f"合并完成并添加页码,保存为: {final_output_path}")# 删除临时文件os.remove(temp_output_path)except Exception as e:print(f"保存合并PDF时出错: {e}")finally:passdef main():path = r'D:\人工智能(专升本)\04 202502第一学期\06线下课\20250419 02数字图像处理\数字图像处理考试'input_folder = os.path.join(path, '02处理后')output_folder = path# 第一步:转换所有DOCX为PDFprint("开始转换DOCX文件为PDF...")convert_docx_to_pdf(input_folder)# 第二步:合并所有PDF并添加页码print("\n开始合并PDF文件并添加页码...")merge_pdfs(input_folder, output_folder)if __name__ == '__main__':main()
这次完全成功了
有页码,而且是我想要的那种带有总数(56)的页码


成果运用:发班级群共享

相关文章:
【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码
前情提要 20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。 三位老师把视频课的内容提炼重点再面授。(我先看了一遍视频,但是算法和图像都看不懂,后来就直接挂分刷满时间,不看了) 今天是面对面授…...
如何从 GitHub 镜像仓库到极狐GitLab?
最近 GitHub 封禁中国用户的事情闹得沸沸扬扬,虽然官方发布的报道说中国用户被限制登录是因为配置错误导致,已经撤回了更新,中国用户已经可以正常使用。但是这就像横在国内开发者和企业头上的“达摩克利斯之剑”。为了避免 GitHub 不可用而带来的影响,国内开发者和企业可以…...
【云馨AI-大模型】2025年4月第三周AI领域全景观察:硬件革命、生态博弈与国产化突围
一、硬件算力突破点燃多智能体时代 谷歌在4月12日Cloud Next大会发布第七代TPU Ironwood,单芯片算力达4614 TFLOPs,较前代内存提升6倍,专为AI推理场景优化。配合发布的Gemini 2.5 Flash模型通过"思考"功能实现成本优化,…...
ETL数据集成平台在交通运输行业的五大应用场景
在智能交通与数字物流时代,交通运输企业每天产生海量数据——车辆轨迹、货物状态、乘客流量、设备日志……但这些数据往往被困在分散的系统中:GPS定位数据躺在车载终端里,物流订单卡在Excel表中,地铁客流统计锁在本地服务器内。如…...
使用 Docker 安装 Elastic Stack 并重置本地密码
Elastic Stack(也被称为 ELK Stack)是一个非常强大的工具套件,用于实时搜索、分析和可视化大量数据。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等组件。本文将展示如何使用 Docker 安装 Elasticsearch 并重置本地用户密码。 ###…...
利用 Deepseek 和 Mermaid 画流程图
提示词 你是一个产品经理,请绘制一个报名比赛的流程图,要求生成符合Mermaid语法的代码,具体要求如下: 1.注册账号 2.填写报名信息 3.参加比赛 4.查看比赛结果 生成的结果 flowchart TDA([开始]) --> B[注册账号]B --> C{账…...
系统架构设计师:系统架构概述案例分析与简答题、详细解析与评分要点
10道系统架构概述知识体系案例分析与简答题,涵盖架构设计原则、质量属性、演化过程、评估方法等核心考点,并附详细解析与评分要点: 一、案例分析题(5题) 1. 电商系统高并发场景下的架构设计 背景:某电商平…...
学习笔记: Mach-O 文件
“结构决定性质,性质决定用途”。如果不了解结构,是很难真正理解的。 通过一个示例的可执行文件了解Mach-O文件的结构 Mach-O基本结构 Header: :文件类型、目标架构类型等Load Commands:描述文件在虚拟内存中的逻辑结构、布局Data: 在Load commands中…...
图论-BFS搜索图/树-最短路径问题的解决
续上篇~图论--DFS搜索图/树-CSDN博客 先看第一次学习的博客!!👇👇👇👇 👉 有一些问题是广搜 和 深搜都可以解决的,例如岛屿问题,这里我们记dfs的写法就好啦,…...
【uniapp】vue2 使用 Vuex 状态管理
创建store文件夹:store/index.js // index.js import Vue from vue import Vuex from vuex import address from ./modules/address.jsVue.use(Vuex)const store new Vuex.Store({modules: {address} })export default store 创建modules文件夹:modul…...
vcpkg缓存问题研究
vcpkg缓存问题研究 问题描述解决方案官网给出的方案其实并不是大多数人语境中的“清除缓存”实际解决方案 问题描述 使用vcpkg管理c的库的时候,vcpkg会在c盘某些地方缓存下载的库,如果安装的库过多,这个缓存文件夹会过大占用磁盘空间&#x…...
个人自用-导入安装Hexo
因为本人原来就有备份好的资料,所以重新安装起来会很方便,这个教程也只适合我自己用 但是所有的命令行都要在Git的命令行里面使用(因为我就是这样操作的) 1 安装Git Git的官网 Git git --version 这个是查看Git的版本 git --…...
《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
第26篇:Chain-of-Thought:引导大模型进行步骤推理 摘要 在自然语言处理(NLP)和人工智能领域,如何让大模型像人类一样进行逐步推理是一个核心挑战。Chain-of-Thought (思维链) 技术的出现为这一问题提供了强有力的解决…...
大模型API中转平台选择指南:如何找到优质稳定的服务
在人工智能快速发展的今天,大模型的应用已经渗透到各个领域。无论是开发智能应用的技术团队,还是希望通过AI提升效率的企业,都离不开大模型API的支持。然而,市场上的大模型API中转服务良莠不齐,层层转包的中间商模式不…...
STM32单片机入门学习——第43节: [12-3] 读写备份寄存器实时时钟
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.19 STM32开发板学习——第43节: [12-3] 读写备份寄存器&实时时钟 前言开发板说明…...
零基础上手Python数据分析 (18):Matplotlib 基础绘图 - 让数据“开口说话”
写在前面 —— 告别枯燥数字,拥抱可视化力量,掌握 Matplotlib 绘图基础 欢迎来到 “高效数据分析实战指南:Python零基础入门” 专栏! 经过前面 Pandas 模块的学习和实战演练,我们已经掌握了使用 Python 和 Pandas 进行数据处理、清洗、整合、分析的核心技能。 我们能够从…...
【网络原理】UDP协议
目录 一. UDP 报文格式 (1)端口号 (2)UDP长度 (3)校验和 UDP协议属于传输层协议,由操作系统内核内置 一. UDP 报文格式 UDP数据报:无连接,不可靠传输,面…...
云服务器和本地打通内网端口方式
如何通过云服务器FRP 配置让树莓派板子运行的服务端程序被客户端访问? 要通过 云服务器 FRP 内网穿透,让公网客户端访问你 树莓派运行的 Qt 服务端程序,下面是详细的完整步骤,适合你现在的场景: 云服务器安装并启动…...
HCIP OSPF综合实验
1.网络拓扑图 实验要求: 2.需求分析 IP规划: 对每个路由器配置ospf并用172.16.0.0/16网段进行划分,项目中一共有area0 - area4五个ospf区域加一个rip网段,所以我们在172.16.0.0/16选出6个网段 ISP 对r5只能配ip可以把他看成外…...
tensor.repeat和tensor.repeat_interleave
tensor.repeat 在指定维度上整体复制张量内容: x torch.arange(6).reshape(2,3) print(x) print(x.repeat(2,1))上述代码的执行结果为: tensor([[0, 1, 2],[3, 4, 5]]) tensor([[0, 1, 2],[3, 4, 5],[0, 1, 2],[3, 4, 5]])可以看到,x.rep…...
实现批量图片文字识别(python+flask+EasyOCR)
话不多说,向上效果图 1)先说框架版本 为什么要先说框架版本呢,因为我在各种版本中尝试了两天,总算确定了如下版本适合我,至于其他的版本,各位自己去尝试 python 3.9.7 EasyOCR 1.7.2 flask 3.0.3 2)执行操作效果图 2.1)多选文件 2.2)图片预览 2.3)提取选中文件 2.4)提取所有文…...
Vue3+TS中svg图标的使用
安装依赖 pnpm i vite-plugin-svg-icons -D配置引入 vite.config.ts ... import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from node:pathconst svgIconsPlugin createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), src/assets/icons)]…...
【java实现+4种变体完整例子】排序算法中【堆排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是堆排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、堆排序基础实现 原理 基于二叉堆结构(最大堆),通过以下步骤实现排序: 构建最大堆:将…...
WhatTheDuck:一个基于浏览器的CSV查询工具
今天给大家介绍一个不错的小工具:WhatTheDuck。它是一个免费开源的 Web 应用程序,允许用户上传 CSV 文件并针对其内容执行 SQL 查询分析。 WhatTheDuck 支持 SQL 代码自动完成以及语法高亮。 WhatTheDuck 将上传的数据存储为 DuckDB 内存表,继…...
从数据处理方式,系统可扩展性和处理性能三方面比较管道过滤器风格和仓储风格
在软件架构设计中,管道-过滤器风格和仓储风格是两种典型的数据处理模式,它们在数据处理方式、系统可扩展性和处理性能上有显著差异。以下从三个方面进行对比: 1. 数据处理方式 方面管道-过滤器风格仓储风格数据流动数据以流(Stre…...
工控系统前端设计(pyqt)
题目源自:白月黑羽的项目实战四-[工控系统前端] 代码已上传至gitcode https://gitcode.com/m0_37662818/Industrial_Control_System_Front_End 心得体会:直接用组态软件或者js吧 项目亮点 tablemodel的使用,绑定了表格和数据风机自定义ite…...
哲学家就餐问题(避免死锁)
解决方案: 策略:奇偶哲学家拿筷子顺序不同,破坏循环等待。 流程: 偶数哲学家先左后右。 奇数哲学家先右后左。 分析: 无死锁,哲学家交替进餐,不同拿筷顺序避免循环等待。 实验总结 遇到的…...
剑指Offer(数据结构与算法面试题精讲)C++版——day15
剑指Offer(数据结构与算法面试题精讲)C版——day15 题目一:二叉树最低层最左边的值题目二:二叉树的右侧视图题目三:二叉树剪枝附录:源码gitee仓库 题目一:二叉树最低层最左边的值 题目ÿ…...
打靶日记 zico2: 1
一、探测靶机IP(进行信息收集) 主机发现 arp-scan -lnmap -sS -sV -T5 -p- 192.168.10.20 -A二、进行目录枚举 发现dbadmin目录下有个test_db.php 进入后发现是一个登录界面,尝试弱口令,结果是admin,一试就出 得到加…...
程序性能(1)嵌入式基准测试工具
程序性能(1)嵌入式基准测试工具 Author:Once Day date: 2025年4月19日 漫漫长路,才刚刚开始… 全系列文档查看:Perf性能分析_Once-Day的博客-CSDN博客 参考文档: CPU Benchmark – MCU Benchmark – CoreMark – EEMBC Embedded Micropr…...

