通过agent获知pymupdf中对docx文件抓取图片信息的一些理解

发布时间:2026/9/14 7:25:18

通过agent获知pymupdf中对docx文件抓取图片信息的一些理解 最近在学习的过程中看到了这样一个库pymupdf是一个可以用于解析pdf中的一些文本、图片等一些基本信息的一个库。然后让ai帮我生成了两个用于解析简历的函数def_read_docx_images(path):try:importpymupdfexceptImportErrorasexc:raiseImportError(请先安装 PyMuPDFpip install pymupdf)fromexc image_candidates[]withZipFile(path)asarchive:fornameinarchive.namelist():ifnotname.startswith(word/media/)orname.endswith(/):continueimage_bytesarchive.read(name)try:pixmappymupdf.Pixmap(image_bytes)exceptException:continuewidth,heightpixmap.width,pixmap.heightifwidth60andheight60:image_candidates.append((width*height,image_bytes,Path(name).suffix[1:]orpng))returnimage_candidatesdef_read_with_pymupdf(file_path):try:importpymupdfexceptImportErrorasexc:raiseImportError(请先安装 PyMuPDFpip install pymupdf)fromexc texts[]image_candidates[]withpymupdf.open(file_path)asdocument:forpage_number,pageinenumerate(document):page_textpage.get_text(text,sortTrue).strip()ifpage_text:texts.append(page_text)# 简历头像通常位于第一页优先从第一页内嵌图片中选择。ifpage_number0:forimage_infoinpage.get_images(fullTrue):xrefimage_info[0]imagedocument.extract_image(xref)widthimage.get(width,0)heightimage.get(height,0)ifwidth60andheight60:image_candidates.append((width*height,image[image],image.get(ext,png)))iffile_path.suffix.lower().docx:image_candidates.extend(_read_docx_images(file_path))avatarmax(image_candidates,defaultNone,keylambdaitem:item[0])return\n.join(texts),avatar提示词非常简单大概就是让其帮我用pymupdf的某个版本生成用于解析pdf的函数。后面又做了一些简单的改动允许解析pymupdf支持的各个类型的文件其中包含pdf、xps、image、docx等等。然后开始阅读函数大概的内容基本上也能看的懂大致是提取文本并获取PDF中图像的属性如宽度、高度等。首先我注意到有两个函数_read_docx_images_read_with_pymupdf第一个疑问是为什么是两个函数然后在读第二个函数的时候发现了这两行代码iffile_path.suffix.lower().docx:image_candidates.extend(_read_docx_images(file_path))也就是文件扩展名为docx的时候调用这个函数并对返回结果进行追加。这时候问题就又来了为什么要加这两行我通过前面直接open打开对应的文件抓取文本和图像信息不可以吗然后AI是这样给我解释的意思就是通过pymupdf.open打开docx文件只能通过get_text抓取文本不能通过get_image拿到图像信息。于是做了个实验在函数体里打印get_imageprint(page.get_images(fullTrue))结果是空去掉那两行代码打印image_candidatesprint(image_candidates)image_candidates也是空因此得出结论对于docx文件想要抓取图像就要单独做一次处理。然而为什么pymupdf通过open打开docx抓不到图像呢ai是这样解释的DOCX / XLSX / PPTX 这类 Office 文件可以被 PyMuPDF 加载成 Document 对象 但有 caveats比如会转换成 HTML 来布局原始分页会丢失 主要适合文本提取 如果要更忠实的版式应考虑 PyMuPDF Pro。为什么原始分页会丢失因为 .docx 和 .pdf 的文档模型不一样。 PDF 更像“固定版式” 第1页有哪些文字、哪些图片、坐标在哪里 第2页有哪些文字、哪些图片、坐标在哪里 PDF 本身就强依赖页面。 DOCX 更像“流式文档” 一段文字 一个标题 一个表格 一张图片 再一段文字 它不是天然固定在某一页上的。 你在 Word 里看到的“第几页” 很多时候是 Word 根据纸张大小、字体、页边距、行距、 分页符、渲染环境动态排版出来的结果。意思就是docx的文档模型更像是html类型内容都是流式形式的而pdf的模型的各个内容更像是在一个坐标上很容易读取不管是文本图像都可以以坐标的形式读取因此docx的模型在读取时会先转换成类似html的布局再读取对应文本内容这个pymupdf的官方文档也有解释https://pymupdf.readthedocs.io/en/latest/about.html#note总的来说使用pymupdf对docx文件抓取文本可以直接使用open方法的get_text抓取文本信息图像需要单独处理这里是通过zipFile对图片进行处理的
延伸阅读

更多相关文章

2026/9/14 7:23:44

用状态机、TDD和上下文管理写出高质量需求文档

需求文档这件事,很多团队其实一直没想明白。你以为需求文档就是“把用户想要的东西写清楚”,那只是及格线。真正能把需求文档写出价值的人,写的是“需求背后的行为逻辑和判定规则”,是让开发、测试、产品三方能对着同一份文档&…

2026/9/14 7:23:44

C语言入门指南:从环境搭建到项目实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 7:23:44

PRD转可点击HTML:零代码实现交互式需求文档

1. 项目概述:为什么一份PRD文档值得被“点开”? “产品经理神器:PRD 直接变可点击网页!”——这句话不是营销话术,而是我过去三年在三个不同规模团队里反复验证过的真实工作流。它解决的不是“能不能做”的技术问题&am…

2026/9/14 7:23:44

MySQL从安装到性能优化:索引、事务、备份与面试核心知识点全梳理

最近接了一个活儿,帮朋友公司梳理一台跑了三年多、几乎没有文档的MySQL数据库服务器。打开命令行敲了几条命令之后,我对着屏幕愣了半天——表结构命名混乱、索引冗余严重、备份策略全靠运气,最要命的是,负责这台库的人换了两茬&am…

2026/9/14 7:23:44

手搓教程:建立技术直觉的硬核学习法

1. 这不是怀旧,是工程师的肌肉记忆在说话 “为什么现在 AI 这么发达了,还要坚持手搓教程?”——这句话最近在技术社区、教学群、甚至新手训练营里反复刷屏。它表面像一句吐槽,实则戳中了当前技术学习生态里最真实的一道裂痕&#…

2026/9/14 7:18:44

STM8S103K3实战:从最小系统到双工具链开发全解析

简介:面向STM8S103K3单片机开发者的完整资料包,以最小系统板PDF原理图、IAR/STVD可运行例程和STM8官方标准外设库为核心,兼顾入门学习与项目参考需求,适合电子专业学生、嵌入式初学者及工程师用作设计蓝本。压缩包共143.57MB&…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码