UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x8d в позиции 386: символ отображается на <undefined> - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь прочитать файл pdf с помощью библиотеки slate, но выдает эту ошибку:

import slate

pdf = 'tabla9.pdf'

with open(pdf,encoding="utf-8") as f:

doc = slate.PDF(f)

for page in doc[:2]:
   print(page)

полная ошибка:

File "C:\Users\user\libro5.py", line 7, in <module>
doc = slate.PDF(f)
File "C:\Python3\lib\slate\classes.py", line 52, in __init__
self.parser = PDFParser(file)
File "C:\Python3\lib\site-packages\pdfminer\pdfparser.py", line 646, in 
__init__
PSStackParser.__init__(self, fp)
File "C:\Python3\lib\site-packages\pdfminer\psparser.py", line 189, in 
__init__
PSBaseParser.__init__(self, fp)
File "C:\Python3\lib\site-packages\pdfminer\psparser.py", line 134, in 
__init__
data = fp.read()
File "C:\Python3\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe2 in position 10: 
invalid continuation byte

classes.py, строка 52:

class PDF(list):
    def __init__(self, file, password='', just_text=1, check_extractable=True, char_margin=1.0, line_margin=0.1, word_margin=0.1):
        self.parser = PDFParser(file)

pdfparser.py, строка 646:

def __init__(self, fp):
        PSStackParser.__init__(self, fp)

psparser.py, строка 189:

class PSStackParser(PSBaseParser):

    def __init__(self, fp):
        PSBaseParser.__init__(self, fp)

psparser.py, строка 134:

class PSBaseParser:

    """Most basic PostScript parser that performs only tokenization.
    """
    def __init__(self, fp):
        data = fp.read()

Файл "C: \ Python3 \ lib \ codecs.py", строка 322, в декодировании (результат, используется) = self._buffer_decode (data, self.errors, final) UnicodeDecodeError: 'utf-8'кодек не может декодировать байт 0xe2 в позиции 10: недопустимый байт продолжения:

def decode(self, input, final=False):
    # decode input (taking the buffer into account)
    data = self.buffer + input
    (result, consumed) = self._buffer_decode(data, self.errors, final)

Я использую Python 3.7 в Windows 10.

1 Ответ

0 голосов
/ 13 декабря 2018

PDF-файл является двоичным, его нельзя открывать в текстовом режиме с кодировкой.

Попробуйте:

with open(pdf, "rb") as f:
...