PyMuPDF报错:Document对象无loadPage属性AttributeError
问题背景
- 运行环境:Ubuntu 21.10、Python 3
- 业务目标:将扫描仪生成的PDF逐页转换为图片,供后续OCR识别使用
- 初始核心代码:
import fitz # read pdf file pdf = fitz.open(file_path_name) # load pdf page using index page = pdf.loadPage(0)
- 触发报错:
AttributeError: 'Document' object has no attribute 'loadPage'
已尝试的修复操作
执行了以下命令完成依赖重装流程:
sudo pip uninstall PyMuPDF sudo pip uninstall fitz sudo apt autoremove sudo apt autoclean reboot sudo pip install PyMuPDF
重装后PyMuPDF版本为1.20.0,安装日志如下:
Collecting PyMuPDF Using cached PyMuPDF-1.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB) Installing collected packages: PyMuPDF Successfully installed PyMuPDF-1.20.0
重装完成后原有报错仍然存在。
问题根因
PyMuPDF(即导入时的fitz库)从1.19.0版本开始,移除了所有驼峰命名的旧版API,统一改用Python社区规范的蛇形命名方法。代码中调用的loadPage()是1.18.x及更早版本的旧接口,1.19.0之后的版本不存在这个方法,问题和安装流程、系统环境没有关系,因此重装依赖无法解决问题。
解决方案
二选一即可:
推荐方案:修改代码适配新版API
把旧的驼峰命名方法替换为对应的蛇形命名方法即可,针对转图片做OCR的需求,可直接参考以下适配完成的代码:import fitz pdf = fitz.open(file_path_name) # 替换旧版loadPage为load_page page = pdf.load_page(0) # 设置300DPI缩放,匹配OCR识别的清晰度要求 zoom_factor = 300 / 72 transform_matrix = fitz.Matrix(zoom_factor, zoom_factor) # 替换旧版getPixmap为get_pixmap page_pixmap = page.get_pixmap(matrix=transform_matrix) # 保存为PNG图片供后续OCR调用 page_pixmap.save("pdf_page_0.png")其他常用旧API对应替换规则:
getPageTextList→get_page_textlist、insertImage→insert_image、savePDF→save,后续调用其他方法时注意统一用蛇形命名即可。兼容方案:降级到支持旧API的版本
如果不想改动原有旧代码,可以安装最后一个支持驼峰命名API的版本1.18.19,执行命令:pip install PyMuPDF==1.18.19该方案不推荐,旧版本缺少后续的功能更新、bug修复,对高版本系统的兼容性也更差。
内容的提问来源于stack exchange,提问作者EMILIO
相关产品推荐
相关产品推荐

