问题描述
我正在尝试使用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文件提取文本可能有用:
- Unsuccessful attempt to extract text data from PDF
- How to convert whole pdf to text in python
- how to write code to extract a specific text and integer on the same line from a pdf file using python?
- Python Data Extraction from an Encrypted 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