首页->大浪淘沙 别了,DjVu!作者:马健
目录 在DjVuToy公开发布后,曾经有某位专业从事扫描外包的朋友问我对DjVu前途如何看待,我当时的回答是:如果DjVu的现状得不到改变,在商业应用方面就没有任何未来可言,只能沦为扫描电子书爱好者手中的玩物。 这个所谓的“现状”,指的就是:一项还算不错的技术,落到了一帮糟糕的人手里。 这篇文章其实就是那次谈话的一个整理,纯属一家之言。
我说DjVu技术“还算不错”,是因为:
1、扫描分辨率与有损压缩的误码率
2、缺乏对灰度图像的支持
3、对MRC模型支持的局限
4、批量处理难以摆脱人工干预
5、先天不足、内外有别的格式标准
6、工具与支持的匮乏 除上述缺陷外,从技术上讲,DjVu格式本身并不是不可替代的:DjVu所依赖的ISO/IEC 16485 MRC三层模型,同样可以应用到PDF上,并达到相似的压缩比与视觉效果,详见我写的《DjVu转PDF》一文。 有趣的是,djvulibre从v3.5.21开始,在Ddjvu例子中也加入了DjVu转PDF功能,但采用的是libtiff的tiff2pdf源代码。换句话说,是先把DjVu转换成TIFF,然后再转换成PDF,支持CCITT G4、JEPG、zip压缩。这样的转换方式,不仅完全不管MRC三层模型,而且丢失了原JB2、IW44压缩的高效率,转换出来的PDF自然会增肥许多,然后某些人又可以振振有词地说:你看,DjVu转换成PDF以后就是会变大吧! 所以,DjVu技术尽管不错,但也仅仅是“还算不错”。 DjVu格式于1996年由AT&T提出,所以文件的头4个字节就是“AT&T”。 AT&T在DjVu上的投入并不多,这一点从AT&T发布的源代码和SDK可以看出。2000年时DjVu格式被倒卖给了LizardTech,一家专注于文档扫描的公司。 LizardTech对DjVu文件格式规范、djvulibre的贡献有目共睹,遗憾的是几年后也撑不下去了,2007年被日本的Celertem所收购。但奇怪的是,在Celertem公司产品主页(http://www.celartem.com/en/products/)、下载主页(http://www.celartem.com/en/download/)上,Document Express的版本似乎有点老,最新版似乎在另外一家公司caminova的产品页(http://www.caminova.jp/en/products/?src=products2.aspx)、下载页(http://www.caminova.jp/en/downloads/),所以我怀疑现在真正掌握DjVu技术的是新公司caminova,celartem不过是在玩资本运作。
最新版DjVu SDK也由caminova发行,但是在该公司的对外http网站(http://www.caminova.jp/en/)上找不到,只能通过https跳墙进去: 由于上述种种原因,DjVu在商用领域一直发不起来,但在某些地下扫描电子书界,却受到追捧。 追捧的原因很简单:地下扫描的电子书都需要通过互联网进行分享,因此对文件大小非常敏感,而且出于个人兴趣而去扫描电子书,要比拿钱完成扫描工作的更敬业,很少有低于300 DPI的,甚至鼓励用软件放大到600 DPI(详见《The Scan and Share tutorial》)。在这样高的分辨率下,字母文字用DjVu能获得极高的压缩率,有损JB2压缩出现错别字的概率也极小。 个人扫描电子书进行分享,当然不太可能去购买昂贵的商业DjVu软件,也不会在DjVu技术上花太多心思,所以我说是在“玩”DjVu。 俄罗斯的cracker世界闻名,据我所知“玩”DjVu玩得最出彩的也是俄罗斯的电子书界。而从我了解的情况看,俄罗斯cracker对DjVu SDK的兴趣不大,认为这个东东始终比商业软件慢个几拍,因此更热衷于使用商业DjVu制作软件,如果需要定制,也宁愿从最新版商业软件中摘取自己所需要的部分,最简单的例子就是DjVu Small。 受国外地下扫描电子书界影响,国内也有人跟风在玩DjVu。但是从我接触到的情况看,国内扫描电子书很少有能到300 DPI的,印刷、扫描效果也较国外差,在这种情况下采用有损JB2的影响目视可见。至于把16级灰度PNG格式的大图版PDG直接转换成DjVu,更是技术白痴的经典表现,我连笑话的心思都懒得起了。 总之,在目前的情况下,向商业客户推荐采用DjVu格式保存扫描文档,算不上是一种很负责的行为,所以我最终劝那位从事扫描外包的老兄还是先等等看。 至于只是想“玩”,那就玩吧,注意保存好原始扫描格式就行,另外JB2尽量选无损压缩,插图或彩页的压缩比也别太狠。 当年列宁同志有个著名论断:出于贪婪的目的,资本家甚至会把用来绞死他们的绞索都买给我们。如果对DjVu片面追求压缩比,早晚也会往自己的脖子上亲手套一根绞索。 我与DjVu打交道,始于2006年开始接触PDG,因为当时流行快速版PDG,而解密后的快速版PDG = PDG文件头 + DjVu文件体。 不过有趣的是,在快速版PDG中,对JB2压缩的黑白文字部分没做什么改变,对采用IW44压缩(核心是小波压缩算法)的彩色图像却上下颠倒、颜色互换(红色、蓝色互换),所以碰到彩色的快速版PDG,直接从解密后的文件体提取出DjVu数据存盘,用DjVu浏览器看起来很别扭,只能颠倒回来后重新压缩一遍。 出现这种情况的原因不得而知,我猜测与某公司声称自己“掌握了小波压缩技术”有关,不做点手脚怎么证明自己“掌握”了?当然也可能仅仅是软件开发人员自己糊涂,搞不清RGB与BGR的区别。另外SSREADER的软件开发人员似乎并未对djvulibre的编译选项进行优化,导致DjVu解码效率有点低,不过快速版本来像素尺寸就不大,所以感觉不明显。 虽然在我刚接触PDG的时候,快速版PDG盛行一时,甚至有人提出“宁要快速版,不要清晰版”,但随着一批真正对技术感兴趣的人的努力,快速版PDG的真相逐步被揭开,尤其是有人提出因为在低分辨率下采用有损JB2压缩导致出现错别字的证据后,至少在readfree内,没人再去公开追求快速版了。 在接触PDG后不久,我接触到了DjVu电子书的另外一个重要来源——CADAL(又称“中美百万”)。从CADAL里我确实找到了一些PDG所没有的书籍,但CADAL以在线浏览为主,离线浏览并不便利。为此,我开始开发DjVuToy软件,这个软件最初的几个功能其实都是为从CADAL下载的书籍服务的。但是在CADAL开始往页面中添加水印,并采用大比例IW44压缩文字页面后,我终于忍无可忍,从此对CADAL再无丝毫兴趣。 离线浏览DjVu时,我注定不会去用IE插件,所以选择了WinDjView。但在用WinDjView浏览了一些书后,感觉白花花一片的背景也很难受,所以咬牙在UnicornViewer中加入了对DjVu的支持。 我有时候会帮朋友、同事找一些资料,但总有那么一些人不愿意使用不熟悉的浏览器,非要我把DjVu转换成PDF。随着我对DjVu的原理有所了解,感觉采用常规打印方式,或先转成通用图像格式再转成PDF的方式,对于DjVu的MRC模型、JB2压缩、IW44压缩都是一种亵渎,至少是一种不负责任的行为。为此,我花费了大半年的业余时间,研究DjVu转PDF的方法,核心思想就是尽量无损,并保持数据流长度基本一致。最终的成果就是《DjVu转PDF》一文,及DjVuToy中的“转PDF”功能。 这个过程让我对DjVu、PDF格式有了自己的理解,从此再不相信国内某些鹦鹉学舌的胡说八道,坚定了从此告别DjVu,转向PDF的决心。但其中有一根刺始终让我耿耿于怀:当时我始终不掌握图像分层技术,因此通用图像格式直接转PDF,始终达不到转DjVu的压缩率。 这个时候,某些无私的帮助出现了,终于有了DjVuToy中的“DjVu制作”功能。该功能也许与最新版的DjVu商业软件相比还有差距,但与早期版本的商业制作软件相比也不差什么了。 至此,我与DjVu的缘分终于圆满了,所以本文题目叫做“别了,DjVu!”。
(完) |