我正在尝试使用pdfminer.six
从pdf中提取文字,我按照下面提到的代码进行了here
import pdfminer
import io
def extract_raw_text(pdf_filename):
output = io.StringIO()
laparams = pdfminer.layout.LAParams()
with open(pdf_filename, "rb") as pdffile:
pdfminer.high_level.extract_text_to_fp(pdffile, output, laparams=laparams)
return output.getvalue()
print(extract_raw_text('simple1.pdf'))
但它产生错误
Traceback (most recent call last):
File "extract.py", line 13, in <module>
print(extract_raw_text('simple1.pdf'))
File "extract.py", line 6, in extract_raw_text
laparams = pdfminer.layout.LAParams()
AttributeError: module 'pdfminer' has no attribute 'layout'
我只想从pdf中提取整个文本,我们将不胜感激。
答案 0 :(得分:0)
我遇到了同样的问题! 可能是新更新存在问题,因为python无法将多余的文件归类为模块,因为它们没有得到很好的分类。
因此,您所需要做的就是直接导入特定文件,您可以通过以下三种方式进行操作:
而不是使用import pdfminer
,而是导入您要使用的特定模块
import pdfminer.layout
import pdfminer.high_level
这样,您可以像在
中那样直接访问模块的所有类。
laparams = pdfminer.layout.LAParams()
采用相同的逻辑,但是在这里,我们将只选择我们要在每个模块中使用的特定类(在您的情况下,您已经使用了类/函数LAParams()
和extract_text_to_fp
< / p>
所以您会这样做:
from pdfminer.layout import LAParams
from pdfminer.high_level import extract_text_to_fp
这是一个致命的解决方案,但不是最佳解决方案,因为每次更新模块时,这些更改可能会丢失。但是,如果您经常使用此模块,则很有用。
查找您的站点包位置
在您的终端python -m site
上书写,您将找到所有路径。像这样...lib/python3.6/site-packages
找到您的pdfminer
模块,打开文件夹并打开__init__.py
文件
为要预加载的所有模块编写代码,例如:
导入pdfminer.layout 导入pdfminer.high_level
现在,每次使用import pdfminer
时,这些模块也会被预先加载,因此您可以按照上面的代码运行代码,并且可以正常工作。
答案 1 :(得分:0)
这为我解决了问题。
{
"id": 1,
"name": "Darush",
"family": "Hamidi"
}