当尝试使用Textract从PDF提取文本时,出现TypeError:“无法在类似字节的对象上使用字符串模式”。谁能为您提供解决方案? 当我打印(文本)时,虽然格式有点奇怪,但我从要提取的PDF中获取了文本。但是,text [0]等仅包含数字..?
import textract
import os
from nltk.tokenize import word_tokenize
for filename in os.listdir('Harbour PDF'):
if '.DS_Store' == filename:
continue
filename = 'Harbour PDF/' + filename
print(filename)
text = textract.process(filename)
print(text)
tokens = word_tokenize(text)
keywords = [word for word in word_tokenize(text,'english',False)]
错误:
文件“ scrapePort.py”,第15行,在 令牌= word_tokenize(文本) 在word_tokenize的第143行中,文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/init.py” 句子= [文本]如果keep_line否则send_tokenize(文本,语言) 在send_tokenize的第105行中,文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/init.py” 返回tokenizer.tokenize(文本) 文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,行1269,在标记化中 返回列表(self.sentences_from_text(文本,realign_boundaries)) 文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,第1323行,在句子_from_text中 在self.span_tokenize(text,realign_boundaries)中返回[text [s:e]为s,e] 文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,第1323行,在 在self.span_tokenize(text,realign_boundaries)中返回[text [s:e]为s,e] 在span_tokenize中,文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,第1313行 对于片中的sl: 文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,行1354,在_realign_boundaries中 对于_pair_iter中的sl1,sl2(片): _pair_iter中的文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,第317行 上一个=下一个(it) 文件“ /Users/Rasmus/anaconda3/lib/python3.6/site-packages/nltk/tokenize/punkt.py”,第1327行,_slices_from_text 用于self._lang_vars.period_context_re()。finditer(text)中的匹配: TypeError:无法在类似字节的对象上使用字符串模式
答案 0 :(得分:0)
您可能需要先对数据进行解码。
text.decode("utf-8")
答案 1 :(得分:0)
我遇到了同样的问题,请尝试
tokens = word_tokenize(text.decode("utf-8"))