如果文档是从扫描仪扫描的,则图像只是一个平面位图图像。没有这样的层或对象。只是像素和更多像素。要将 DjVu 制作成分层文档,必须将其生成为分层文档。
编辑答案:
对不起,我不知道。我做了一些研究,你是对的。不过,需要在 DjVu 编码设置中打开分层选项。告诉编码器使用特殊的图像处理算法来搜索前景和背景对象,并将它们保存到单独的层中。
http://djvu.sourceforge.net - DjViLibre 是一个 C++ 库,可以满足您的需求。
WinDjView - http://windjview.sourceforge.net/ 是一个不错的基于 DjVuLibre 构建的 DjVu 文件查看器。它具有查看前景或背景对象的选项。因此,这将是在深入研究 C++ 代码之前测试算法的好坏的好方法。
我建议将一些扫描的 TIFF / JPEG 文件上传到http://any2djvu.djvuzone.org/,然后使用 WinDjView 查看前/后分离的结果。我上传了 1 个彩色 JPEG 文档,结果给我留下了深刻的印象。
WinDjView 的源代码位于http://windjview.cvs.sourceforge.net/viewvc/windjview/windjview/ - RenderThread.cpp - 函数 CRenderThread::Render() 是 WinDjView 中前景/背景查看功能的分层/查看代码。
还有一个 PDF 文档解释了算法的工作原理 - “DJVU 文档压缩的一般分割方案......” - 如果您使用“vincent djvu 分割”执行 Google 搜索,然后单击“快速查看”链接的第一个结果,然后您可以阅读 PDF。原始 PDF 不再可用。
我将不得不自己做一些测试。我想知道商业应用的许可费用是多少?
我希望这比我的第一次尝试能更好地回答您的问题。刚出来的时候我看的是 DjVu,但由于某种原因忽略了这个功能。
附加信息
我又上传了大约 10 个文件,并得出以下结论。 DjVu 无法将 300dpi 黑白图像处理为前/后层。黑白转换图像的整个页面仅包含在前景中。当您上传到 any2djvu 时,它首先会询问您是黑白文档还是彩色文档。当您选择黑白时,您将失去支持我的理论的背景处理选项,自动背景分离不支持黑白。前/后分离适用于灰色和彩色图像。我没有足够的扫描图像来测试它的性能。
不支持 B/W 分离的事实可能是 DjVu 多年前没有在文档管理行业起飞的部分原因。当它刚问世时,大多数计算机在处理黑白图像、去歪斜和去斑方面都相当困难。因此,执行灰度或彩色图像处理是不可行的,并且出于速度原因,大多数解决方案都是黑白的。如果我们当时使用彩色图像,那么 DjVu 将是一个非常好的解决方案。 DjVu 在它发布的时候,在扫描 OCR 的应用程序中并没有多大用处。即使在今天,它也是一项伟大的技术。