33

我已经安装了 PymuPDF/fitz,因为我试图从 PDF 文件中提取图像。但是,在运行下面的代码时,我看到No module named 'frontend'.

    doc = fitz.open(pdf_path)
            for i in range(len(doc)):
                for img in doc.getPageImageList(i):
                    xref = img[0]
                    pix = fitz.Pixmap(doc, xref)
                    if pix.n < 5:  # this is GRAY or RGB
                        pix.writePNG("p%s-%s.png" % (i, xref))
                    else:  # CMYK: convert to RGB first
                        pix1 = fitz.Pixmap(fitz.csRGB, pix)
                        pix1.writePNG("p%s-%s.png" % (i, xref))
                        pix1 = None
                    pix = None

我已经搜索过,但没有关于此类错误的单一报告。我已经安装了 PyMuPDF、muPDF 和 fitz 模块

这是完整的错误:

    Traceback (most recent call last):
      File "/home/waqar/PycharmProjects/predator/ExtractFileImage.py", line 1, in <module>
        import fitz
      File "/home/waqar/anaconda3/envs/retinanet/lib/python3.6/site-packages/fitz/__init__.py", line 1, in <module>
        from frontend import *
    ModuleNotFoundError: No module named 'frontend'
4

9 回答 9

65

我已经通过以下方式解决了它:

pip install PyMuPDF
于 2019-10-11T11:17:47.507 回答
20

我尝试了上述解决方案pip install PyMuPDF。但它并没有开箱即用。

所以,我使用了以前版本的 PyMuPDF。它对我来说非常有效。

pip install PyMuPDF==1.16.14
于 2020-09-11T07:38:44.273 回答
7

fitzPyPI 上有一个名为的包。因为 PyMuPDF 使用相同的名称 ,fitz作为其顶级文本,所以两个包不能在同一个 Python 中共存 - 除了上述更改。

于 2020-06-11T20:19:41.747 回答
4

在文件中/home/waqar/anaconda3/envs/retinanet/lib/python3.6/site-packages/fitz/__init__.py

改变

from frontendfrom fitz.frontend

于 2019-08-26T20:40:03.473 回答
4

你应该pip install fitz跟着跑pip install PyMuPDF。如果您已安装 PyMuPDF,请将其卸载并重新安装。

于 2021-08-31T04:06:04.877 回答
1

Python3并且您已经安装了PyMuPDF模块。

pip install --upgrade pip
pip install -U PyMuPDF
于 2021-04-06T02:00:22.893 回答
0

这个组合对我来说很好:

sudo apt install mupdf
sudo apt install libmupdf-dev
pip3 install PyMuPDF==1.16
于 2022-01-25T14:12:29.583 回答
0

在你的脚本上调用 python 应该可以解决这个问题:

python script.py

如果您不使用关键字 python,您可能会收到错误消息。

就我而言,我得到:

ModuleNotFoundError: No module named 'fitz'
于 2020-10-11T14:41:55.800 回答
-2

您可以使用 pdfplumber。如果以下代码返回“无”,则它是扫描的 pdf,否则它是可搜索的。

with pdfplumber.open(file_name) as pdf:
    page = pdf.pages[0]
    text = page.extract_text()
    print(text)

要从扫描的 pdf 中提取文本,您可以使用 OCRmyPDF。简易包装

于 2021-01-05T23:56:00.900 回答