マルチページTIFFを自動で分割したい

ある冊子の全ページをコピー機でスキャン(特定フォルダへTIFFで保存。ファイル名は連番)したのですが、

一部の見開きページだけが、マルチページTIFFとして保存されてしまいました。


これを、下記のように自動的に処理したいです。

・全て、単ページのTIFFにする

・上記で分けられたファイル名は、枝番の連番にする(例えば、1.tiff → 1-1.tiff / 1-2.tiff)


方法は、アプリケーションでもOSの機能を使用するのでも、いずれでも構いません(一つ一つ手作業でやるのでなければ良い)。

どなたかご教示いただければと存じます。よろしくお願いいたします。

MacBook Pro 13″, macOS 11.1

投稿日 2021/01/07 08:24

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2021/01/12 20:57

以下はマルチページ TIFF を分割する Automator ワークフローです。ワークフローを実行するとダイアログが表示されるので、TIFF ファイルを選択 (複数選択可) してください。


動作確認は Mojave 10.14.6。Big Sur は未導入なので確認できません。ダメな場合はご勘弁を。(tiffutil による枚数の取得のところが超手抜きなので、同コマンドのバージョンアップで期待通りに動かなくなる可能性があります)



ーーーーー


コードはこんな感じ。


AppleScript を実行

on run
    choose file of type "public.tiff" with multiple selections allowed
end run


ーーーーー


シェルスクリプトを実行

シェル: /bin/zsh    入力の引き渡し方法: 引数として


#!/bin/zsh

[[ $# > 0 ]] || { echo "usage: zsh $0 file1.tiff file2.tiff ..." >&2; exit 1; }

for f in "$@"; do
    c=$(tiffutil -info "$f" 2>/dev/null | grep -c '^Directory')
    [[ $c > 1 ]] || continue    
    for (( i = 0; i < c; i++ )); do
        n=$(printf '%03d' $(( i + 1 )))
        o="${f%.*}-${n}.tiff"
        if [[ ! -e "$o" ]]; then
            tiffutil -extract "$i" "$f" -out "$o" 2>/dev/null
            # echo "$o"
        fi
    done
done


返信: 6
スレッドに付いたマーク ランキングトップの返信

2021/01/12 20:57 Zukk への返信

以下はマルチページ TIFF を分割する Automator ワークフローです。ワークフローを実行するとダイアログが表示されるので、TIFF ファイルを選択 (複数選択可) してください。


動作確認は Mojave 10.14.6。Big Sur は未導入なので確認できません。ダメな場合はご勘弁を。(tiffutil による枚数の取得のところが超手抜きなので、同コマンドのバージョンアップで期待通りに動かなくなる可能性があります)



ーーーーー


コードはこんな感じ。


AppleScript を実行

on run
    choose file of type "public.tiff" with multiple selections allowed
end run


ーーーーー


シェルスクリプトを実行

シェル: /bin/zsh    入力の引き渡し方法: 引数として


#!/bin/zsh

[[ $# > 0 ]] || { echo "usage: zsh $0 file1.tiff file2.tiff ..." >&2; exit 1; }

for f in "$@"; do
    c=$(tiffutil -info "$f" 2>/dev/null | grep -c '^Directory')
    [[ $c > 1 ]] || continue    
    for (( i = 0; i < c; i++ )); do
        n=$(printf '%03d' $(( i + 1 )))
        o="${f%.*}-${n}.tiff"
        if [[ ! -e "$o" ]]; then
            tiffutil -extract "$i" "$f" -out "$o" 2>/dev/null
            # echo "$o"
        fi
    done
done


2021/01/15 04:04 Zukk への返信

こんにちは。


私もスキャナで連続読み込みしたマルチページTIFFを分解するのはよくやります。

libtiffのtiffsplit というコマンド(実行file)をbuildして使ってます。

http://www.simplesystems.org/libtiff/


$ tiffsplit hoge.tif hoge-


とやると、hoge-aaa、 hoge-aab、 hoge-aac・・・・・・・

と勝手に分解してくれます。


マルチが混じった全ページやるならシェルスクリプトで、


mkdir out

for f in *.tif

do

tiffsplit "$f" ./out/"${f/.tif/-}"

done


とかやれば全部処理できますね。


(あんまり参考にならないかもしれませんが・・・・・)

2021/01/15 02:42 Hiro__S への返信

「シェルスクリプトを実行」アクションを「JavaScriptを実行」アクションに変更して書き直してみました。TIFF の枚数取得はこちらの方がちゃんとしてると思います。


使い方は前掲のワークフローと同じで、実行後にダイアログに従い TIFF ファイルを選択 (複数選択可) してください。動作確認は Mojave 10.14.6。Big Sur は未導入なので確認できてませんが...、ご参考まで。



ーーーーー


AppleScriptを実行

on run
    choose file of type "public.tiff" with multiple selections allowed
end run


ーーーーー


JavaScriptを実行

'use strict';

ObjC.import('Cocoa');

function run(argv) {
    if (! argv.length > 0) {
        return;
    }
    for (let f of argv.map(x => x.toString())) {
        const imgs = $.NSImageRep.imageRepsWithContentsOfFile(f).js;
        if (imgs.length > 1) {
            for (let i = 0; i < imgs.length; i++) {
                const num = (i + 1).toString().padStart(3, '0');
                const newf = `${$(f).stringByDeletingPathExtension.js}-${num}.tiff`;
                if (! $.NSFileManager.defaultManager.fileExistsAtPath(newf)) {
                    const tiff = imgs[i].TIFFRepresentation;
                    const opts = $.NSDataWritingAtomic;
                    const err = $();
                    if (! tiff.writeToFileOptionsError(newf, opts, err)) {
                        throw new Error(err.localizedDescription.js);
                    }
                }
            }
        }
    }
}


2021/01/11 16:04 Zukk への返信

Zukk さん、こんにちは。


Apple サポートコミュニティにご投稿いただきありがとうございます。


スキャンしたファイルを任意の形式で保存したいということですね。

こちらのコミュニティで、少しでも役に立つ情報が見つけられるようお手伝いしたいと思います。


以下の詳細内容を含めて状況をご説明いただくと、ほかのユーザの皆様が答えやすくなります。


以上、ご確認くださいますようお願いいたします。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

マルチページTIFFを自動で分割したい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。