使用 conda 和 poppler 安装后无法导入 pdftotext,Windows 10

Unable to import pdftotext after installing with conda and poppler, Windows 10

我正在尝试使用 pdftotext,但无法导入。

我在 Lenovo IdeaPad S340 上 运行ning Windows 10(64 位)工作笔记本电脑。

按照指示 here and here(非常有帮助),我:

  1. 已安装 Microsoft Visual C++ 构建工具。
  2. 已安装 Anaconda。
  3. 获取最新版本的 Anaconda 并更新它,对每个步骤使用单独的 Anaconda3 命令。我不记得这些命令,也没有再找到它们。
  4. 已更新 Microsoft Visual 14。
  5. 使用 conda 通过 Anaconda3 命令安装 poppler:conda install -c conda-forge poppler
  6. 使用 pip 通过 Anaconda3 命令安装 pdftotext:pip install pdftotext

之后:

这发生在 Python 3.8(32 位)命令提示符中:

>>> import pdftotext
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pdftotext'
>>>

这发生在 IDLE 的 Python 3.75 Shell(64 位):

>>> import pdftotext
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import pdftotext
ModuleNotFoundError: No module named 'pdftotext'
>>> 

这发生在 Anaconda3 命令提示符中:

import pdftotext
'import' is not recognized as an internal or external command,
operable program or batch file.

这也发生在 Anaconda3 命令提示符中:

pip install pdftotext
Requirement already satisfied: pdftotext in c:\programdata\anaconda3\lib\site-packages (2.1.4)

这是否意味着它在 Python 2 中只有 运行s?我怎么会事先检查呢?如果它只在 Python 2 上执行 运行,你能推荐一个 Python 3 package/module/library(有什么区别,顺便说一句?)将 PDF 读入纯文本文件?

感谢您的帮助!

更新:

我在同一台机器上用一个新用户重新开始 OS(另一个用户的名称中有一个 space,所以它的文件路径有一个 space,可以造成问题)。我遇到了同样的问题。

我有 Python 3.7.6 和 3.8.1。 Python 3.7.6 是通过 Anaconda3 提示 python -V 检查版本时显示的内容(使用 conda info 时为 3.7.6.final.0)。

我还有:

我在这里找到 Python:C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64.

我用眼睛搜索了整个程序文件、用户文件以及 Anaconda Navigator,我 运行 在我的整个 C 盘中搜索 'pdftotext',但我没有'找不到任何关于 pdftotext 的信息。

从 IDLE 的 Python 3.7.6 shell 尝试也没有成功。

更新:

我明白了,有点。 pdftotext 不能作为 Python 导入工作,作为 example code in PyPI uses it. But, it does work as a command line tool that is part of Xpdf,在这些步骤之后没有额外的安装。

我在Anaconda3 PowerShell命令提示符下使用了命令:

pdftotext C:\filepath\file.pdf

然后它创建了一个同名的文本文件并将其保存在同一个文件夹中。我上面链接的 Xpdf 页面上概述的命令还有其他选项(比如设置文件名)。

Buuuut,这不是一个令人满意的解决方案。我可以通过一个额外的步骤处理我当前的用例任务,但我仍然无法从 Python 程序中调用 pdftotext。

更新:

如果您使用 Anaconda 和 conda 安装 pdftotext,那么导入它似乎只有在您从 Anaconda3 shell.[=25] 的 Python 解释器中 运行 时才有效=]

所以,我必须首先在 Anaconda3 PowerShell 中切换到 Python 解释器模式:python

然后,我可以无错误地导入 pdftotext:import pdftotext

看起来像这样:

(user)> python
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdftotext
>>> 

好的,我明白了!如果你使用 Anaconda 和 conda 安装 pdftotext,那么导入它似乎只有当你在 Anaconda3 shell.

中的 Python 解释器中 运行 它时才有效

所以,我不得不先在 Anaconda3 PowerShell 中切换到 Python 解释器模式: python

然后,我可以毫无错误地导入 pdftotext: import pdftotext

看起来像这样:

(user)> python
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdftotext
>>> 

Ooor,第二个部分解决方案是它作为 command line tool that is part of Xpdf

完成问题 post 中的步骤后,我不需要额外安装。我在Anaconda3 PowerShell命令提示符下使用了命令:

pdftotext C:\filepath\file.pdf

然后它创建了一个同名的文本文件并将其保存在同一个文件夹中。我上面链接的 Xpdf 页面上列出的命令还有其他选项(比如设置文件名)。

从命令行使用它的第二种解决方案的问题是,如果您想之后对文本文件执行某些操作,则必须 运行 另一个命令或脚本。它所做的只是将其读取到文件中。

pdftotext 不是模块而是命令。 所以你可以这样做

import os

file_path = "C:\documents\mypdf.pdf"

# writing data in variable
text = os.popen("pdftotext {}".format(file_path)).read()

# writing data in file
os.system("pdftotext {} {}".format(file_path, "data.txt"))

我遇到了同样的问题,但在执行以下操作后,效果非常好!

sudo apt install build-essential libpoppler-cpp-dev pkg-config python3-dev

pip install pdftotext