【发布时间】:2019-04-07 20:16:57
【问题描述】:
如何从 python 中以“iso-8859-1”编码的 pdf 文件中读取文本?
我正在尝试使用 python 中的 textract 将 pdf 转换为 txt,但对于某些文件,我面临“unicodeDecodeError utf-8 编解码器无法在位置 11 解码字节 0xe2:无效的继续字节”。我认为该文件是 iso-8859-1 编码的。
File "/home/kanika/mypython/lib/python3.5/site-.
packages/textract/parsers/__init__.py", line 77, in process
return parser.process(filename, encoding, **kwargs)
File "/home/kanika/mypython/lib/python3.5/site-.
packages/textract/parsers/utils.py", line 46, in process
byte_string = self.extract(filename, **kwargs)
File "/home/kanika/mypython/lib/python3.5/site-.
packages/textract/parsers/txt_parser.py", line 9, in extract
return stream.read()
File "/home/kanika/mypython/lib/python3.5/codecs.py", line 321, in
decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe2 in position
11: invalid continuation byte
【问题讨论】:
-
欢迎来到 StackOverflow。请展示一个完整的代码 sn-p,我们可以自己运行和检查。使它成为一个简短的 sn-p 来显示您的问题。阅读并关注How to create a Minimal, Complete, and Verifiable example。另外,您是否致力于使用
textract?还有其他用于从 pdf 文件中获取文本的软件包可以处理编码问题。 -
“以 iso-8859-1 编码的 PDF” - pdf 是二进制格式。添加一个完整的 pdf 永远不会以 iso-8859-1 编码(或以 utf-8 或您想到的任何字符编码)。 pdf 中的每种字体都为使用它绘制的文本定义了自己的编码,这种编码可以是 WinAnsiEncoding,它非常接近 iso-8859-1。但是,如果字体正确声明了这一点,那么任何常用的文本提取器都支持这种字体编码。因此,您的 pdf 很可能包含一种字体,其编码根本没有或被错误地声明。如需进一步分析,请分享有问题的 pdf。
-
不承诺使用 textract。考虑到的 pdf 是恶意文件
标签: python pdf iso-8859-1