如何解决"No module named 'frontend'"错误信息?

65
我安装了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'

1
我认为你不应该安装 "现代 Nipype 工作流管理" 的 fitz (https://github.com/kastman/fitz),我会卸载 fitz。我看到了在 Ubuntu 上安装 PymuPDF 的指南:https://github.com/pymupdf/PyMuPDF/wiki/Ubuntu-Installation-Experience。 - William D. Irons
我基本上正在尝试使用fitz模块、PyMuPDF和mupdf,它们没有一些过滤器,如不支持的过滤器/DCTDecode pypdf2和其他一些过滤器。 - Waqar
10个回答

129

FYI,不区分大小写。 - Thatcher Thornberry

37

我尝试了上述的解决方案 pip install PyMuPDF,但是它并没有立即奏效。

所以,我使用了之前版本的PyMuPDF。对我来说完全可行。

pip install PyMuPDF==1.16.14

2
这实际上解决了问题。非常感谢! - Ammar Shah
你说得对。我使用 PyMuPDF==1.20.2 时也遇到了同样的问题,但是通过使用 PyMuPDF==1.21.1 解决了它。看起来多个版本都存在问题。 - Esraa Abdelmaksoud

9

PyPI上有一个名为fitz的软件包。由于PyMuPDF使用相同的名称fitz作为其顶级文本,因此除非进行上述更改,否则这两个软件包不能在同一Python中共存。


6

Python3PyMuPDF 模块已经安装完成。

pip install --upgrade pip
pip install -U PyMuPDF

5

您需要先运行pip install fitz,然后再运行pip install PyMuPDF。如果您已经安装了PyMuPDF,请先卸载再重新安装。


1
我使用以下版本:fitz==0.0.1.dev2和PyMuPDF==1.18.15,顺序相同。看起来现在对我有用了。 - Vikram
2
不要安装 fitz,因为在尝试使用 pymupdf 时会出现奇怪的错误。 - not2qubit

4
在文件/home/waqar/anaconda3/envs/retinanet/lib/python3.6/site-packages/fitz/__init__.py中:
from frontend更改为from fitz.frontend

@Ryan 我尝试了这个解决方案,但错误仍然存在。我还注意到在_init_.py文件中,print函数看起来更像是Python 2.7版本。这可能是错误的原因吗? - venkatttaknev
2
@Ryan - 我赞同上面的评论。你所做的更改现在导致了“print”语法错误。它们是否相关? - Ashwin Kumar

3
  1. 使用pip安装PyMuPDF
  2. 如果上述命令出现fitz.h错误,则升级Python版本,我发现Python3.6.*会出现此问题。如果无法升级Python版本,请将pymupdf的版本降低(版本1.18.0可以,使用pip install PyMuPDF==1.18.0)。

1
欢迎来到Stack Overflow!当链接到您自己的网站或内容(或与之相关的内容)时,您必须在答案中披露您的关联,以避免被视为垃圾邮件。在您的用户名中具有相同文本作为URL或在个人资料中提及它不被视为栈交换政策下足够的披露。 - cigien

0

这个组合对我来说很好用:

sudo apt install mupdf
sudo apt install libmupdf-dev
pip3 install PyMuPDF==1.16

0

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

python script.py

如果您不使用Python关键字,可能会出现错误。

在我的情况下,我遇到了以下错误:

ModuleNotFoundError: No module named 'fitz'

-3
你可以使用pdfplumber。如果以下代码返回“None”,则为扫描的PDF,否则为可搜索的。
with pdfplumber.open(file_name) as pdf:
    page = pdf.pages[0]
    text = page.extract_text()
    print(text)

要从扫描的PDF中提取文本,您可以使用OCRmyPDF。 这是一个易于使用的软件包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接