メモ帳DPA

ぐぐってあまり引っかからないような何かがあったら書いたりする

それなりの質の自炊pdfをなるべく楽して作るScanSnapの設定とバッチ

作るファイル

自動化できるところはなるべく自動化しつつ、そこそこな質の自炊pdfを手間を最小限に抑えて作ります。

以下のPDFを生成します。

  • 表紙カラー見開き
  • 本文グレースケール
  • OCR透明テキスト
  • ファイル名自動付加

用意するもの

pdftkはPDFの結合に、ISBNTitlerは自動リネームに使用します。


小説pdf向けの設定はこっちに記載。

そこそこの質の自炊漫画zipをあんまり手間かけず作るScanSnapの設定とバッチ - メモ帳DPA

表紙は欲しい

ScanSnapで自炊する際に困るのが中身の紙のサイズと違う表紙のスキャンです。

一般的なのは以下の4択かと思いますがそれぞれ問題があります。

フラットベッドスキャナ使う
二台の機器に別々に紙入れる作業が必要 + 表紙と本体の結合必要
本の裁断とは別に表紙を手で分解
裁断機使えないので手動で分解する手間がかかる + 表紙と本体の結合必要
ScanSnap長尺モードでスキャン
フラットベッドに比べ若干歪む + 表紙と本体の結合必要
諦めて捨てる
なんだか勿体無い

ここはトレードオフですが、手間と質のバランスから長尺モードスキャンを選びます。

表紙と本体をまとめて取り込むことで結合作業を省く手も有りますが、カラー自動認識の設定は紙の黄ばみやレンズのゴミに反応して結構誤作動するので実用的じゃないので、表紙はカラー、本体はグレースケールで別に取り込みます。

結合と結合時のOCR問題

PDFスキャン時にOCRしたテキストを埋め込む機能は、ScanSnap以外で作ったファイルを処理してくれない仕様があります。
ヘッダを編集すれば認識するとの情報も聞きますが私の環境だとうまくいきませんでした*1

ってことで、OCRをかけてから別ファイルとの結合を行う必要があります。以下の流れで。

  1. 表紙のカバーをカラーでスキャン
  2. 本文をグレーでスキャン
  3. OrganizerでOCR
  4. 結合

Acrobatでやれば済むっちゃ済むんですが、そこまで精度が良くない+有償なので使ってません。

ファイル名自動付加

作成時に地味にめんどいのがファイル名入力ですが、ISBNTitlerを使うとバーコードを認識して自動でリネームしてくれて楽です。

設定はこんな感じで。


表紙向け設定

アプリ選択画面では.exeしか表示されませんが、実は.batも普通に登録出来ます。
ので、IsbnTitlerに渡すための以下のbatを作成して登録します。

以降、パスは適当に置き換えてください。

@echo off

D:\datas\program\commove\IsbnTitler\IsbnTitler.exe -b -m1 -i %1


ScanSnap側設定はこんな感じで。


読み取りモードオプションは「原稿の向きを自動的に補正します」だけ有効
ファイル形式は「PDF」、テキスト認識の選択は全部無効

本体向け設定

本文にはバーコードが無いせいで自動認識できないので、スキャン済みの表紙データから取得してリネームします。(「-b」を付加)
ただし表紙をスキャンした順番と同じ順番で本体をスキャンする必要があります。

以下のbatを作成して表紙向けと別プロファイルで作成。

@echo off

set COVERTMP=D:\datas\Scansnap\_covertmp
set COVERDIR=D:\datas\Scansnap\COVER
set BODYDIR=D:\datas\Scansnap\BODY

for /F "delims=" %%F in ('dir %COVERTMP% /o-d /b') do set FILENAME=%%F

mv "%COVERTMP%\%FILENAME%" "%COVERDIR%\%FILENAME%"

mv %1 "%BODYDIR%\%FILENAME%-b.pdf"


読み取りモードオプションは全部無効
ファイル形式は「PDF」、テキスト認識の選択は全部無効

マージ用bat

以下を適当な場所に作成しておきます。
Scansnapへの登録は不要。

@echo off

set COVERDIR=D:\datas\Scansnap\COVER
set BODYDIR=D:\datas\Scansnap\BODY
set OUTDIR=D:\Books\_New_Novel
set PDFTK=D:\Program_Files\pdftk\pdftk.exe

for /F "delims=" %%F in ('dir %COVERDIR% /o-d /b') do call :merge %%F
exit /b

:merge
set FILENAME=%*

echo %FILENAME:~11%
echo %FILENAME:~0,10% >> %OUTDIR%\ISBN.txt

%PDFTK% "%COVERDIR%\%FILENAME%" "%BODYDIR%\%FILENAME%-b.pdf"  cat output "%OUTDIR%\%FILENAME:~11%"
if not errorlevel 1 DEL "%COVERDIR%\%FILENAME%" "%BODYDIR%\%FILENAME%-b.pdf"

ついでにISBNのリストをテキスト出力してます。ブクログに一括で積本登録するのに便利。

スキャン

以上の準備で完了。

  • カバーを分離
  • 本を裁断
  • 表紙向けプロファイルで表紙をスキャン(青ボタン長押しして長尺モードで実行)
  • 本体向けプロファイルで本をスキャン
  • スキャンした本全てにScanSnapOrganizerでOCR実行
  • マージ用bat実行

の作業をあとは淡々と行うだけで自炊PDFが生成されます。
本が何冊あっても各工程単位でまとめて作業出来るのが地味にポイントです。

大量にスキャンする際、表紙をスキャンした順番と同じ順番で本をスキャンする点を抑えれば、カバー全部外す→本全部裁断→表紙全部スキャン→〜 のように同じ作業毎をまとめて行えるのでだいぶ作業が楽です。

もっといい方法あれば教えてください。

*1:pdfのバージョン差のせい?