尝试使用pdfminer.six从pdf文件提取文本时出错

问题描述

我正在尝试使用pdfminer.six库(如here)从pdf中提取文本,我已经将其安装在虚拟环境中。这是我的代码

import pdfminer as miner

text = miner.high_level.extract_text('file.pdf')


print(text)  

但是当我使用python pdfreader.py执行代码时,出现以下错误

Traceback (most recent call last):
  File ".\pdfreader.py",line 9,in <module>
    text = miner.high_level.extract_text('pdfBulletins/corona1.pdf')
AttributeError: module 'pdfminer' has no attribute 'high_level'  

我怀疑它与Python路径有关,因为我在虚拟环境中安装了pdfminer,但是我发现pdf2txt.py在我的系统python安装中已经安装了。这是正常现象吗?我的意思是venv内部发生的事情不应更改我的系统Python安装。

我使用pdf2txt.py库附带的pdfminer.six实用程序(从命令行和使用系统python安装)成功提取了文本,但没有从venv项目中的代码提取文本。我的pdfminer.six版本是 20201018

我的代码可能是什么问题?

解决方法

pdfminer high_level extract_text 需要其他参数才能正常工作。下面的代码使用 pdfminer.six ,并从我的pdf文件中提取文本。

from pdfminer.high_level import extract_text

pdf_file = open('my_file.pdf','rb')
text = extract_text(pdf_file,password='',page_numbers=None,maxpages=0,caching=True,codec='utf-8',laparams=None)
print(text)

以下是我撰写的一些其他文章,这些文章关于从PDF文件提取文本可能有用:

,

尝试pdfreader从PDF文档中提取文本(纯文本并包含PDF运算符)

这是从所有文档页面提取以上所有内容的示例代码。

from pdfreader import SimplePDFViewer,PageDoesNotExist

fd = open(you_pdf_file_name,"rb")
viewer = SimplePDFViewer(fd)

plain_text = ""
pdf_markdown = ""
try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        plain_text += "".join(viewer.canvas.strings)
        viewer.next()
except PageDoesNotExist:
    pass

,

您的问题是尝试使用尚未导入的模块中的功能。导入pdfminer不会自动也导入pdfminer.high_level

这有效:

from pdfminer.high_level import extract_text

text = extract_text('file.pdf')

print(text)
,

您需要安装pdfminer.six而不是pdfminer

pip install pdfminer.six

只有在此之后,您才能将extract_text导入为:

from pdfminer.high_level import extract_text