Google Colab使用pdf2docx转Word报rotationMatrix属性错误解决方法
问题背景
在Google Colab平台运行PDF转Word代码时,此前可正常执行的逻辑近期在cv.convert()转换步骤抛出AttributeError,提示'Page' object has no attribute 'rotationMatrix'。
待转换的Apollo 2019.pdf为企业股东大会议案文档,核心包含四项议案:
- 审议批准2019财年末(2019年3月31日)经审计的公司单独财务报表、合并财务报表及对应的董事会报告、审计师报告
- 宣告2019财年每股权益派息3.25
- 审议轮任退任董事Robert Steinmetz(DIN: 00178792)的重新聘任特别决议
- 审议轮任退任董事Francesco Gori(DIN: 07413105)的重新聘任议案
原实现代码
!pip install python-docx !pip install pdf2docx from pdf2docx import Converter from docx import Document from google.colab import drive drive.mount('/content/drive/') file_name='/content/drive/MyDrive/Colab Notebooks/PDF files/Apollo 2019.pdf' word_name='Apollo 2019.docx' cv=Converter(file_name) cv.convert(word_name) cv.close()
核心报错信息
# Element is a base class processing coordinates, so set rotation matrix globally --> 279 Element.set_rotation_matrix(self.fitz_page.rotationMatrix) 280 281 return raw_layout AttributeError: 'Page' object has no attribute 'rotationMatrix'
故障原因
该报错是依赖版本不匹配导致:pdf2docx底层依赖PyMuPDF(别名fitz)做PDF解析,新版PyMuPDF将Page对象的驼峰命名属性rotationMatrix更改为蛇形命名rotation_matrix,Colab环境近期自动拉取了新版PyMuPDF,但已安装的pdf2docx版本未适配该接口变更,调用旧属性名时触发属性不存在错误。
可行解决方案
- 固定兼容依赖版本(稳定性最高,无需修改业务逻辑)
先卸载当前不匹配的依赖,再安装经过验证的版本组合,安装完成后重启Colab运行时即可直接运行原有转换代码:!pip uninstall -y pymupdf pdf2docx python-docx !pip install python-docx==0.8.11 !pip install pymupdf==1.19.2 !pip install pdf2docx==0.5.6 - 热修复适配新版依赖(无需降级依赖)
如果需要保留新版PyMuPDF的特性,可在初始化转换类前添加属性映射补丁,将旧属性名指向新接口,修改后的完整代码如下:!pip install python-docx !pip install pdf2docx import fitz # 补全新旧版本属性映射 fitz.Page.rotationMatrix = property(lambda self: self.rotation_matrix) from pdf2docx import Converter from docx import Document from google.colab import drive drive.mount('/content/drive/') file_name='/content/drive/MyDrive/Colab Notebooks/PDF files/Apollo 2019.pdf' word_name='Apollo 2019.docx' cv=Converter(file_name) cv.convert(word_name) cv.close() - 升级pdf2docx到最新适配版本
直接升级pdf2docx到官方最新版,官方已在新版本中完成PyMuPDF新接口的适配,升级完成后重启运行时即可运行原代码:!pip install -U pdf2docx python-docx
内容的提问来源于stack exchange,提问作者Ashlesa Goyal
相关产品推荐
相关产品推荐

