#python-3.x #object #word-cloud
#python-3.x #объект #word-cloud
Вопрос:
Хорошо, итак, я пытаюсь извлечь текст из pdf и отобразить wordcloud из извлеченного текста.
Получение TypeError: объект ‘module’ не вызывается в строке
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()
Комментарии:
1. Вы вызываете
imshow
функцию изplt
модуля какplt.imshow
, так иarray
функцию изnp
модуля, оба корректно. Вы должны сделать то же самое с функцией изwordcloud
модуля:wordcloud.somefunction(mask=rsMask).generate...
2. Большое спасибо!! Проблема решена. изменен на :
cloud = wordcloud.WordCloud(mask = rsMask).generate(pageObj.extractText())
Ответ №1:
Я думаю, что проблема с кодом в том, что модуль смешан с классом, который определен в модуле. Пожалуйста, попробуйте это:
from wordcloud import WordCloud
cloud = WordCloud(mask=rsMask).generate(pageObj.extractText())
Облако будет изображением, поэтому вы не сможете распечатать его на консоль, вам придется его где-то отобразить (или записать в файл).
Ответ №2:
Спасибо @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()