我正在尝试使用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中提取整个文本,任何帮助将不胜感激。
发布于 2019-04-10 00:15:31
我也有同样的问题!这可能是新更新的一个问题,因为python不会将额外的文件识别为模块,因为它们没有很好地分类。
因此,您需要做的就是直接导入特定的文件,您可以通过以下三种方式完成此操作:
在你的代码中(整个模块)
不使用import pdfminer,而是导入要使用的特定模块
import pdfminer.layout
import pdfminer.high_level这样,您就可以像在中那样直接访问模块的所有类
laparams = pdfminer.layout.LAParams()
代码内部(特定的类/函数)
同样的逻辑也适用,但在这里,我们将只选择要在每个模块中使用的特定类(在本例中,您已经使用了类/函数LAParams()和extract_text_to_fp
所以你会这样做:
from pdfminer.layout import LAParams
from pdfminer.high_level import extract_text_to_fp在模块本身上(为每次使用都进行修复)
这是一个杀手级的解决方案,但不是最优的,因为您可能会在每次更新模块时丢失这些更改。但是,如果您经常使用此模块,则会很有用。
python -m site上找到你的站点包位置,你就会找到所有的路径。看看像这样完成...lib/python3.6/site-packagespdfminer模块的人,打开文件夹,打开__init__.py文件导入pdfminer.high_level导入pdfminer.layout
现在,每次您使用import pdfminer时,这些模块也会被预加载,所以您可以像上面编写的那样运行代码,它就可以工作了。
发布于 2020-10-30 22:12:17
这为我解决了这个问题。
pip install --upgrade camelot-pyhttps://stackoverflow.com/questions/48694272
复制相似问题