Я использую Python 3. Пытаюсь извлечь текст из файлов doc (Word 1997-2003). С этой целью установил olefile:
Python 3.4.2 (default, Oct 8 2014, 13:14:40)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import olefile
>>> import os
>>> file='/tmp/abc.doc'
>>> os.path.exists(file)
True
>>> olefile.isOleFile(file)
True
>>> ole=olefile.OleFileIO(file)
>>> ole.exists('WordDocument')
True
>>> ole.openstream('WordDocument').read()
В файле написано «test = тест» (не важно, генератор - MSO или OO, проблема сохраняется). В результате же read() получаю на входе поток байтов (привожу фрагмент):
b'\xec\xa5\x01\x01M \t\x04\x00\x00\xf0\x12\xbf\x00
>>> ole.openstream('WordDocument').read().decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte
ole.openstream('WordDocument').read().decode('utf-8',errors='ignore')
'\x01\x01M \t\x04\x00\x00\x12\x00\x00\x00\x00