如何从djvu及其他电子书格式提取文本(可能用Python)
我有一堆电子书,格式包括djvu、pdf和chm,我想找个办法在这些书的内容里搜索关键词。我查了一些资料,发现有几种方法可以解析pdf的内容,但似乎没有办法把djvu格式的内容转换成文本。请问,有谁知道怎么把djvu的内容解码成文本,这样我就能方便地搜索了?
谢谢
3 个回答
1
当然,DjVuLibre SDK可以让你访问文本层——前提是这个文本层存在(并不是所有的DjVu文件都有文本层;很多都是纯粹的栅格图像)。
另一种解决方案可能是基于IIS技术来建立你的索引。CamiNova提供了一个免费的IFilter,你可以用来实现这个功能。
3
python-djvulibre 是一组 Python 绑定,用于 djvulibre 这个开源的 djvu 实现——我没有试过,但看起来应该能满足你的需求。
9
假设你的djvu文件里有经过OCR处理的文本,在Linux上快速提取这些文本的方法是使用Popen来运行djvutxt
,然后获取它的输出。
.djvu
文件里的文本是用一种专门的压缩算法bzz
压缩的,这种算法没有简单的C接口可以直接在Python中使用。它是基于某个框架的C++实现。
顺便提一下,我为Calibre贡献了从OCR处理过的.djvu
文件转换的功能,这个功能就是用djvutxt
来实现的。不过,如果djvutxt
不可用,它会退回使用我自己写的纯Python解码器(速度非常慢)。所以如果你不能使用djvutxt
,可以用我的代码。
我还没有把Calibre的Python源代码单独发布出来。但你可以下载并解压Calibre的源代码后找到:
curl -L http://status.calibre-ebook.com/dist/src | tar xvJ
find . | fgrep djvu
相关的文件是djvu_input.py
、djvu.py
和djvubzzdec.py