国立国会図書館デジタルコレクションの蔵書の画像の余白を削除して読みやすくする

国立国会図書館デジタルコレクションの蔵書をダウンロードしてローカルで読む際余白が邪魔なので消しました．

国立国会図書館デジタルコレクション

国立国会図書館―National Diet Library

まず，十全に国立国会図書館デジタルコレクションを利用するためには国立国会図書館の利用者登録（個人）の本登録をしておきましょう．

国立国会図書館の利用者登録（個人）について｜国立国会図書館―National Diet Library

現在は現地に行かずとも遠隔で本登録まで可能です．便利になりましたね．

国立国会図書館デジタルコレクション で読みたい本を検索，ログイン( 登録利用者ID，パスワード )
右下の印刷で印刷範囲を指定して「印刷ファイルを開く」で該当範囲の pdf ファイルを作成，
上部に 「ファイルを作成しています…」 のメッセージが表示され，しばらく待つと 「印刷用ファイルを作成しました。右のリンクからPDFファイルを表示できます。」に変わるので 「PDFファイルを開く」 からダウンロードします．

Note

50コマを超えている場合は「範囲を指定」で 1-50 のように範囲指定できる．
> 入力値が資料のコマ数を超過しています。
となったとき最大コマ数を調べて指定しなくても 150- のように指定して最後までダウンロードできるよう．

ダウンロードした PDF ファイルは下部に 登録利用者ID, 利用者名，生成年月日時分秒 が画像に埋め込まれています．

PDF ファイルはこんな感じでした．2481 x 1732.5 pts 50コマ(100ページ分)で37MB程．

$ pdfinfo digidepo_2530201_0001-001-050.pdf
Title: 宇宙船ビーグル号の冒険
Keywords: A.E.ヴァン・ヴォークト 著 ほか『宇宙船ビーグル号の冒険』,東京創元社,1964.2(43刷:1999.10). 国立国会図書館デジタルコレクション https://dl.ndl.go.jp/pid/2530201 (参照 2024-05-02)
Author: A.E.ヴァン・ヴォークト 著
Producer: PyPDF2
CreationDate: Thu May 2 00:30:21 2024 JST
ModDate: Thu May 2 00:30:21 2024 JST
Custom Metadata: no
Metadata Stream: no
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 50
Encrypted: yes (print:yes copy:no change:no addNotes:no algorithm:AES-256)
Page size: 2481 x 1732.5 pts
Page rot: 0
File size: 36676525 bytes
Optimized: no
PDF version: 1.7

Encrypted で print:yes copy:no change:no addNotes:no でパスワードもわからないので，tdftk は使えません．

Error: Invalid PDF: unknown.encryption.type.r
Error: Failed to open input PDF file:

オライリージャパンで公開されている「GNU Make 第3版」のpdfをダウンロードして1つのpdfファイルにまとめる – matoken’s meme

print は出来るので mcomix でも読めます．ということで pdfimages で中の画像の取り出しは出来ました．

$ pdfimages -all digidepo_2530201_0001-001-050.pdf 2530201/2530201
$ ls 2530201/
2530201-000.jpg 2530201-004.jpg 2530201-008.jpg 2530201-012.jpg 2530201-016.jpg 2530201-020.jpg 2530201-024.jpg 2530201-028.jpg 2530201-032.jpg 2530201-036.jpg 2530201-040.jpg 2530201-044.jpg 2530201-048.jpg
2530201-001.jpg 2530201-005.jpg 2530201-009.jpg 2530201-013.jpg 2530201-017.jpg 2530201-021.jpg 2530201-025.jpg 2530201-029.jpg 2530201-033.jpg 2530201-037.jpg 2530201-041.jpg 2530201-045.jpg 2530201-049.jpg
2530201-002.jpg 2530201-006.jpg 2530201-010.jpg 2530201-014.jpg 2530201-018.jpg 2530201-022.jpg 2530201-026.jpg 2530201-030.jpg 2530201-034.jpg 2530201-038.jpg 2530201-042.jpg 2530201-046.jpg
2530201-003.jpg 2530201-007.jpg 2530201-011.jpg 2530201-015.jpg 2530201-019.jpg 2530201-023.jpg 2530201-027.jpg 2530201-031.jpg 2530201-035.jpg 2530201-039.jpg 2530201-043.jpg 2530201-047.jpg
$ file 2530201/2530201-001.jpg
2530201/2530201-001.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 3308x2310, components 3

pdfファイルから画像を抜き出し( pdfimages or LibreOffice ) – matoken’s meme

余白が気になるので Imagemagick の trim でカットします．正攻法だと座標を指定しますが，今回は fuzz で Imagemagick に頑張ってもらいます．
fuzz の % は画像により丁度いい値を探す必要があります．今回は 60% で良さそう.

$ convert 2530201/2530201-001.jpg -fuzz 60% -trim 2530201-001-trim.jpg

余白がカットされ，3308×2310 → 2831×2099 になりました．いい感じそうなので mogrify で全画像に反映して1つのアーカイブにまとめました．

$ mogrify -fuzz 60% -trim 2530201/*
$ find 2530201 | sort -V | zip -@0 ./宇宙船ビーグル号の冒険.zip

50コマ以上の資料で，2つ以上のアーカイブの場合は2つ目以降の PDF を同様に変換を繰り返してアーカイブに追加します．ただ， pdfimages で生成されるファイル名が被ってしまうので rename コマンドなどでファイル名を変更します．

$ rm 2530201/* (1)
$ pdfimages -all ./digidepo_2530201_0001-051-100.pdf 2530201/2530201 (2)
$ rename 's/(\d+)-(\d+)/sprintf "$1-%03d",$2 + 50/e' 2530201/* (3)
$ mogrify -fuzz 60% -trim 2530201/* (4)
$ find 2530201 -print | sort -V | zip -@0 ./宇宙船ビーグル号の冒険.zip (5)

古いデータを削除

PDF 画像を取り出し

連番部分を 50 加算したファイル名に改名

余白削除

非圧縮で zip アーカイブに追加

タブレット端末で MComix で閲覧するといい感じそうです．ちょっとサイズが大きいので縮小したり，互換性のために PDF 形式にしたりしても良さそうです．
スマホなどで読む場合はさらに真ん中から2分割したら良さそうですが，ざっと見た感じのどが中央に揃っているわけではないので少し面倒そうです．

環境

$ dpkg-query -W imagemagick zip poppler-utils rename
imagemagick 8:6.9.12.98+dfsg1-5.2
poppler-utils 22.12.0-2.2+b1
rename 2.02-1
zip 3.0-13
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux trixie/sid
Release: n/a
Codename: trixie
$ arch
x86_64