[记录]基于python的pymupdf和opencv提升PDF的清晰度

import fitz
import numpy as np
from PIL import Image
import cv2
from tqdm import tqdm
import io

pdf_doc = fitz.open('/Users/linql/Desktop/11.pdf')
output_doc = fitz.open()
for orig_page in tqdm(pdf_doc):
    zoom = 2
    mat = fitz.Matrix(zoom, zoom)
    pix = orig_page.get_pixmap(matrix=mat)
    img = Image.frombytes("RGB",
                          [pix.width, pix.height],
                          pix.samples)
    img = img.convert('L')
    cleaned_page_array = cv2.adaptiveThreshold(np.array(img),
                                               255,
                                               # cv2.ADAPTIVE_THRESH_MEAN_C, #基于邻域均值的自适应阈值。
                                               cv2.ADAPTIVE_THRESH_GAUSSIAN_C,#基于邻域加权平均的自适应阈值。
                                               cv2.THRESH_BINARY,
                                               19,
                                               15)
    new_image = Image.fromarray(cleaned_page_array)
    fp = io.BytesIO()
    new_image.save(fp, "JPEG")
    page = output_doc.new_page(width=new_image.size[0], height=new_image.size[1])
    page.insert_image(page.rect, stream=fp.getvalue())

output_doc.save("output_file.pdf")

从错误信息来看,您在安装 `PyMuPDF` 或其他依赖库(如 `opencv-python-headless`)时遇到了问题。以下是可能的原因及解决方案: --- ### 可能原因分析 1. **缺少必要的编译工具** 错误提示表明系统未能成功运行 `gcc` 编译器完成构建操作。这通常是因为您的环境中未正确配置 C/C++ 编译器。 2. **Python 环境版本不匹配** 某些 Python 库需要特定版本的 Python 才能正常安装运行。 3. **缺失依赖项** 安装某些包(例如 `opencv-python-headless` `PyMuPDF`)时,可能会因为缺乏一些底层依赖(例如 GTK、Mupdf SDK 等),导致失败。 4. **网络连接不稳定** 如果下载依赖文件的过程中出现问题,也可能引发该错误。 --- ### 解决方案 #### 方案一:检查并安装 GCC 工具链 - 对于 Linux 用户: ```bash sudo apt-get update sudo apt-get install -y build-essential libgtk-3-dev pkg-config ``` - 对于 macOS 用户: 使用 Homebrew 安装必要组件: ```bash brew install gcc ``` #### 方案二:尝试直接安装预编译好的轮子 (Wheel) 有些库会提供官方支持的 Wheel 文件,避免手动编译的问题。可以尝试以下命令强制安装最新版或兼容版: ```bash pip install --upgrade pip setuptools wheel pip install PyMuPDF opencv-python-headless --no-cache-dir ``` 如果仍然无法解决问题,建议查看 [PyPI](https://pypi.org/) 上是否有对应的 `.whl` 预编译文件,并手动下载后通过以下方式安装: ```bash pip install 轮子文件.whl ``` #### 方案三:确保环境变量正确设置 有时需要将 GCC 的路径添加到系统的 PATH 中。比如,在 Windows 下,可以通过 MinGW-w64 来获取 GCC 支持,并将其目录加入环境变量。 #### 方案四:降低版本要求 部分较新的第三方库对操作系统或硬件有更高需求。您可以选择回退至较低稳定版本测试是否可行。 ```bash pip install "opencv-python-headless<4" "PyMuPDF==1.19" ``` #### 方案五:虚拟环境隔离冲突 创建一个新的独立 virtualenv/virtualenvwrapper 并切换至此环境下再试一次完整流程: ```bash python -m venv my_env source ./my_env/bin/activate pip install PyMuPDF opencv-python-headless ``` --- ### 其他注意事项 若以上办法均无效,则需进一步排查日志详情。重点关注类似 “missing header files”、“undefined reference” 这样的关键字,然后针对性地补充相应软件资源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值