我收藏了 djvu、pdf、chm 格式的电子书,我正在寻找一种方法来搜索内容中的关键字。我一直在研究并找到一些建议来解析 pdf 内容,但似乎没有办法将 djvu 中的内容转换为文本。有没有人知道一种将 djvu 内容解码为文本以便我可以轻松搜索的方法?
谢谢
我收藏了 djvu、pdf、chm 格式的电子书,我正在寻找一种方法来搜索内容中的关键字。我一直在研究并找到一些建议来解析 pdf 内容,但似乎没有办法将 djvu 中的内容转换为文本。有没有人知道一种将 djvu 内容解码为文本以便我可以轻松搜索的方法?
谢谢
假设 djvu 文件包含 OCR-ed 文本,在 Linux 上快速获取该文本的方法是使用 Popen 运行djvutxt
并获取输出。
文件中的文本.djvu
使用djvu
特定的压缩算法bzz
进行压缩,不存在简单的 C 接口,您可以将其加载为 Python 中的共享对象。它是基于某些框架的 C++ 实现。
无耻的自我推销:我为Calibre贡献了来自 OCR-ed 的转换.djvu
,它djvutxt
以这种方式使用。但是,如果不可用,它会退回到我的纯 python 解码器实现(sloooow)djvutxt
。因此,如果您不能使用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
python-djvulibre是一组与djvu的 djvulibre 开源实现的 Python 绑定——我还没有尝试过,但它看起来应该可以满足您的需求。
当然,DjVuLibre SDK 将允许访问文本层——如果它存在(并非所有 DjVu 文件都有文本层;许多是纯光栅图像)。
另一种解决方案可能是将索引基于 IIS 技术。CamiNova 有一个免费的 IFilter,您可以使用它。