从PDF提取文本-标记TypeError

时间:2019-01-22 12:10:21

标签: python pdf extract

当尝试使用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:无法在类似字节的对象上使用字符串模式

2 个答案:

答案 0 :(得分:0)

您可能需要先对数据进行解码。

text.decode("utf-8")

答案 1 :(得分:0)

我遇到了同样的问题,请尝试

 tokens = word_tokenize(text.decode("utf-8"))