Итак, я пытаюсь извлечь текст из pdf и отобразить облако слов из извлеченного текста.
Получение TypeError: объект «модуль» не вызывается на линии
cloud = wordcloud(mask=rsMask).generate(pageObj.extractText())
Вот код, который я запускаю, заранее спасибо, ура:
#Extracting text from a pdf
import wordcloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import PyPDF4
pdfFileObj = open('Test-Resume-Doc.pdf', 'rb')
pdfReader = PyPDF4.PdfFileReader(pdfFileObj)
print(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
pageText = (pageObj.extractText())
pdfFileObj.close()
rsMask = np.array(Image.open('Resume_WordCloud.png'))
print(rsMask)
#
cloud = wordcloud(mask=rsMask).generate(pageObj.extractText())
print(cloud)
plt.imshow(cloud, interpolation = "bilinear")
plt.axis('off')
plt.show()
Большое спасибо!! Задача решена. изменено на : cloud = wordcloud.WordCloud(mask = rsMask).generate(pageObj.extractText())





Я думаю, что есть проблема с кодом, в котором модуль смешивается с классом, который определен в модуле. Пожалуйста, попробуйте это:
from wordcloud import WordCloud
cloud = WordCloud(mask=rsMask).generate(pageObj.extractText())
Облако будет изображением, поэтому вы не можете распечатать его на консоли, вам придется где-то его отображать (или записывать в файл).
Спасибо @DaruiszOstolski и @mkiever, вот готовое решение для тех, кто сталкивается с подобной проблемой с добавлением стоп-слов:
#Exracting text from a pdf
#import libraries
import wordcloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import PyPDF4
#open pdf extract text
pdfFileObj = open('docName.pdf', 'rb')
pdfReader = PyPDF4.PdfFileReader(pdfFileObj)
print(pdfReader.numPages)
pageObj = pdfReader.getPage(0)
pageText = (pageObj.extractText())
pdfFileObj.close()
#create array with extracted text
rsMask = np.array(Image.open('pngName.png'))
#create cloud from wordcloud.WordCloud with stopwords bcg color mask generated cloud
cloud = wordcloud.WordCloud(stopwords='stopwords.txt', background_color = "black", mask=rsMask).generate(pageObj.extractText())
#display and save
plt.imshow(cloud, interpolation = "bilinear")
plt.axis("off")
plt.savefig('.../path...newPNGName.png'.format(cloud))
plt.show()
Вы вызываете функцию
imshowиз модуляpltкак функциюplt.imshowи функциюarrayиз модуляnp, обе правильно. То же самое нужно сделать с функцией из модуляwordcloud:wordcloud.somefunction(mask=rsMask).generate...