什么是一 .djvu 文件?
DjVu,发音为“déjà vu",是一种图形文件格式,用于扫描文档和书籍,尤其是包含文本、图画、图像和照片组合的文档和书籍。它是由 AT&T 实验室开发的。它使用多种技术,例如文本和背景图像的图像层分离、渐进式加载、算术编码和双色调图像的有损压缩。由于 DJVU 文件可以包含压缩但高质量的彩色图像、照片、文本和绘图,因此可以保存在更小的空间中,因此它在网络上用作电子书、手册、报纸、古代文件等。
DjVu 可以被评为 PDF 的优秀替代品。与 DjVu 关联的文件扩展名为 .DJVU 或 .DJV。对于彩色文档,DjVu 可以实现比现有方法(例如 JPEG 和 GIF)约 5 – 10 倍的压缩比,比 [TIFF] 高 3 – 8 倍( /image/tiff/) 在黑白文档中。以 300 DPI 和高达 25 MB 的全彩色扫描文档可以压缩到 30 到 100 KB。同样,黑白文档可以压缩到 5 到 30 KB。平均 HTML 页面可以达到 50 KB,因此,这些文档可以毫无问题地上传到网上。
历史简介 ##
DjVu 技术由 Yann LeCun、Léon Bottou 在 AT&T 实验室开发、Patrick Haffner 和 Paul G 从 1996 年到 2001 年。DjVu 文件格式经过了各种修订,最近一次是从 2005 年开始。
版本 | 发布日期 | 备注 |
---|---|---|
1–19 | 1996–1999 | 这些是开发版本。 |
20 | 1999 年 4 月 | 单页更改为多页格式。 |
23 | 2002 年 7 月 | CID 块 |
24 | 2003 年 2 月 | LTAnno 块 |
21 | 1999 年 9 月 | 间接存储格式被替换。添加了文本搜索层。 |
22 | 2001 年 4 月 | 页面方向,彩色 JB2 |
25 | 2003 年 5 月 | NAVM 块。添加了对 DjVu 书签的支持。 |
26 | 2005 年 4 月 | 文本/行注释 |
DjVu 文件格式##
DjVu 文件是 IFF85 文件。该结构提供了容器的层次结构,将信息保存在 DjVu 文件中。这些容器也称为“块"。块类型和块 ID 描述了块的使用方式。有一个 4 字节的标头,后跟 IFF 结构。 DjVu 文件的前四个字节是 0x41 0x54 0x26 0x54。本节讨论各种 DjVu 文档及其组成的相应块。
块 ID | 使用 |
---|---|
FORM | 具有 FORM 块的前四个数据字节的复合块,它们是辅助标识符。 |
FORM:DJVM | 多页 DjVu 文档。包含 DIRM 块的复合块。 |
FORM:DJVU | 单页 DjVu 文档。包含组成 djvu 文档中页面的块的复合块。 |
FORM:DJVI | 通过 INCL 块包含的“共享"DjVu 文件。共享注释和形状字典。 |
FORM:THUM | 包含嵌入缩略图的 TH44 块的复合块。 |
DIRM | 多页文档的页面名称信息。 |
NAVM | 书签信息 |
ANTa, ANTz | 注释包括初始视图设置和覆盖的超链接、文本框等。 |
TXTa, TXTz | Unicode 文本和布局信息。 |
Djbz | 共享形状表。 |
Sjbz | BZZ 压缩的 JB2 双色调数据,用于存储掩码。 |
FG44 | IW44 数据用于存储前景 |
BG44 | IW44 数据用于存储背景 |
TH44 | IW44 数据用于存储嵌入的缩略图图像 |
WMRM | 去除水印所需的 JB2 数据 |
FGbz | 彩色 JB2 数据。为相应的 Sjbz 块中的每个(blit 或 shape?)提供颜色。 |
INFO | 关于 DjVu 页面的信息 |
INCL | 包含的 FORM:DJVI 块的 ID。 |
BGjp | JPEG 编码背景 |
FGjp | JPEG 编码前景 |
Smmr | G4 编码掩码 |
DJVU 压缩
单个图像被分成许多不同的图像,然后将每个图像单独压缩。为了创建 DjVu 文件,首先将图像分为三个图像,一个背景、前景和一个蒙版图像。通常背景和前景图像是分辨率较低的彩色图像;但是掩码图像是更高分辨率的图像,通常文本存储在那里。分离后,前景和背景图像通过基于小波的压缩算法 IW44 进行压缩,而掩模图像使用另一种称为 JB2 的方法进行压缩。
JB2 编码方法通过识别页面上相同的形状来消除文本图像中的大部分冗余,例如在特定字体中多次出现的字符。 JB2 首先利用相似形状之间的冗余对每个独特形状的位图进行编码。然后,它对每个形状出现在页面上的位置进行编码。 JB2 和 IW44 都依赖于一种称为 ZP 编码器的新型自适应二进制算术编码器,它在香农极限的百分之几内挤出任何剩余的冗余。 ZP 编码器是自适应的,并且比其他近似二进制算术编码器更快。