发布时间:2026/7/22 12:42:56
通过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/7/22 17:44:59

pyFDA与Amaranth结合:FPGA滤波器设计与实现

pyFDA与Amaranth结合:FPGA滤波器设计与实现 【免费下载链接】pyfda Python Filter Design Analysis Tool 项目地址: https://gitcode.com/gh_mirrors/py/pyfda pyFDA(Python Filter Design Analysis Tool)是一款强大的滤波器设计与分析…

2026/7/22 17:44:59

测试面试避坑指南:这10个高频问题答对了,薪资至少涨30%

关注 「软件测试就业联盟」公众号,陪你走好校招求职的每一步最近半年,你周围有没有人面试聊得挺好,最后薪资却卡在某个数字再也谈不上去?甚至不少人反馈,明明问题都答上来了,面试官就是不给过。原因其实很扎…

2026/7/22 17:44:59

卷积稀疏编码

参考视频:【图像稀疏表示 (4-2)】 https://www.bilibili.com/video/BV1qq4y1Z76F/?share_sourcecopy_web&vd_sourcec0697661320dab63e5710ea1fb58458f一. 稀疏表示可以用元素周期表类比字典D,一个物质类比图像X,从…

2026/7/22 9:29:13

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析:为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中,抓包是常见手段。但很多开发者会遇到一个现象:正常访问页面时没有问题,一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主,我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电,导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者,我最近半年一直在折腾副业项目,每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者,我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费,字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…