如何分割 djvu 文件的每一页?

如何分割 djvu 文件的每一页?

在 djvu 文件中,一个 djvu 页面中有两本书页。我想将其拆分,以便每个 djvu 页一页。例如,在此输入图像描述

我想知道这是否可以通过某些软件(最好是命令行实用程序)来完成?感谢致敬!

PS:这是一份文件可以用于测试。

答案1

以下未经测试,但原则上它应该有效(如果我有更多时间,我会测试它)。

例如,您可以将 djvu 文件转换为 jpg,如下所示:

#!/bin/sh
# djvu -> jpgs converter

i=1

# number of pages (392)
while [ $i -ne 392 ]
do
ddjvu -page=$i -format=pnm 1.djvu $i.pnm
pnmtojpeg $i.pnm > $i.jpg
rm -f $i.pnm
echo "page $i done"
i=`expr $i + 1`
done

(从http://caree.livejournal.com/74639.html

然后你可以使用扫描裁缝分割页面并生成新的输出(由 tif 文件组成)。

第三步申请djvbind到该文件夹​​,您将获得所需的 djvu 文件。

答案2

这是我完整的工作脚本。它需要djvulibre-binddjvu(解码为tiff格式),cjb2(因为我不知道如何直接将tiff转换为djvu),djvm(用于在djvu文件中插入/删除页面)工具和imagemagickconvert(用于分割页面并转换为神秘的) pbm 文件格式)工具。所有库都可以通过apt-get.

方案:

file.djvu --./ddjvu--> 双折 tiff --./convert--> 单页 tiff --./convert--> pbm --./djvm--> out.djvu

示例:djvusplit 3 10 file.djvu这意味着split pages from 3 to 10.

完整代码:

#!/bin/bash
echo Usage: djvusplit PAGEFROM PAGETO FILE.DJVU

#make temp folder
mkdir ./tmp
cp "$3" ./tmp/
cd tmp

for i in $(seq -w $2 -1 $1) # Descending
do
    ddjvu -format=tiff -page=$i "$3" t$i.tiff
    convert -crop 2x1@ t$i.tiff t$i-%d.tiff
    convert t$i-0.tiff t$i-0.pbm
    convert t$i-1.tiff t$i-1.pbm
    cjb2 t$i-0.pbm t$i-0.djvu
    cjb2 t$i-1.pbm t$i-1.djvu
    djvm -i t$i-0.djvu t$i-1.djvu 2
    djvm -d $3 $i
    djvm -i $3 t$i-0.djvu $i
    rm ./t*
done

# total clean
mv $3 ../out.djvu
cd ..
rm -r ./tmp

很遗憾...

  1. 由于生成许多 tiff/pbm/djvu 文件,它的运行速度很慢。
  2. 拆分页面会丢失所有 OCR 文本。

我使用这个脚本和其他一些脚本来维护我的电子图书馆。他们找到了这里在 GitHub 上。

答案3

与 PDF 或 JPEG 等其他更常见的格式相比,没有那么多工具可以直接操作 DjVu 文件。对于图像处理程序来说,存在一个额外的障碍:大多数这些程序一次只能对单个图像进行操作,但 DjVu 文件包含多个页面。

一种可能性是通过 pdf 进行查看。与ddjvu自由DJ,PDFun2up过滤器, 和pdf2djvu:

ddjvu -format=pdf 2up.djvu 2up.pdf
un2up <2up.pdf | pdf2djvu /dev/stdin >1up.djvu

受我的启发,你也许能够为 djvu 拼凑出一个 un2uppdf版本使用python-djvulibre。我还没有检查过该 API 有多难进入。

答案4

相关内容