[test.rtf.zip](https://github.com/deanmalmgren/textract/files/907377/test.rtf.zip)
res = textract.process("test.rtf").decode(encoding='UTF-8')
assert "æøå" in res
FAIL
textract.process("test.rtf").decode(encoding='UTF-8')
-> test זרו
unrtf --text test.rtf
Translation from RTF performed by UnRTF, version 0.21.5
font table contains 0 fonts total
invalid font number 0
test æøå
9条答案
按热度按时间9q78igpj1#
看起来我们可以将unrtf和html解析器链接在一起,以正确处理编码:
我们显然希望比在textract内部运行textract更好地处理这个问题,但这似乎是一个非常合理的解决方案。想要提出一个PR吗?
似乎
rtf_parser.Parser
可以继承自ShellParser
(如目前所示),并且还可以从html_parser.Parser
继承,然后相应地调整rtf_parser.Parser.extract
方法。gwo2fgha2#
这看起来确实是一个合理的解决方案。让我今晚再看一下。它很可能只是因为我在unrtf中使用了有问题的--text选项。
twh00eeo3#
看起来有一个新的版本的
unrtf
(webpage)。实际上,我在OSX上安装了最新版本,但--text
选项在那里也无法使用。也许报告这个bug是个好主意...vwkv1x7d4#
是的,如文档中所记录的,我确实使用unrtf v.0.21.9得到了正确的文本输出。
mbjcgjjk5#
当我在文件上运行
unrtf
时,我的输出看起来像:这似乎表明unrtf在这个情况下没有正确处理编码。
iq3niunx6#
嗯,这是真的,这里也是一样——也许是因为它被压缩了?如果我直接在文件上使用unrtf命令:
http://papirkriger.dk/test.rtf
unrtf --text test.rtf > out.txt
subl out.txt
nr9pn0ug7#
是的。我先解压了,但仍然只看到问号,而不是Unicode字符,这让我觉得我们的环境有些不同。你有没有设置一个shell环境变量,可能会告诉
unrtf
你的RTF文档中的编码有所不同?另外,有趣的是,对我来说,unrtf的HTML输出似乎是正确的:
oiopk7p58#
不,我知道。但是出于某种原因,当我解压缩文件并取消压缩后,我得到了和你一样的(错误的)输出。
是的,unrtf html输出是正确的。非常奇怪。
可能是unrtf有问题,而不是textract,但我仍然不知道我们如何从RTF中获得正确的编码。
g0czyy6m9#
我已经在我的主机机器(OSX)上尝试过,以及在我的docker容器内,同样存在这个问题。