【DX実践】ブラザーの片面スキャナを「自動両面対応」に変えるPython術

13.【DX実践】ブラザーの片面スキャナを「自動両面対応」に変えるPython術 DX/業務改善事例

【はじめに:その「スキャン後の並び替え」、自動化しませんか?】

オフィスで活躍するブラザーなどのコンパクトな複合機。
コストパフォーマンスは抜群ですが、安価なモデルだとADF(自動原稿送り装置)が「片面読み取り」にしか対応していないことがあります。

両面書類をスキャンする場合、表面をスキャンし、次に束を裏返して裏面をスキャン。
すると、裏面PDFは構造上「最終ページからカウントダウン」するように保存されてしまいます。

「1, 3, 5…」という表面PDFと、「10, 8, 6…」という裏面PDF。

これを有料ソフトで1枚ずつ入れ替えるのは、まさに非生産的な作業です。
この手間を、Pythonを使って「0秒」にする方法をご紹介します。

【解決策:Pythonによる「ページ・インターリーブ」】

今回作成したのは、表面(奇数ページ)と、逆順になった裏面(偶数ページ)を自動で判別し、正しい順番に「交互に差し込む(インターリーブ)」プログラムです。

プログラミングの知識は不要です。

Googleが提供する無料ツール「Google Colab」を使えば、ブラウザにコードを貼り付けるだけで誰でも実行できます。

【公開:ブラザーADF専用 PDF交互マージ・プログラム】

以下のコードをコピーして使用してください。

Python

# @title ブラザースキャナー用_PDF結合ツール (RTFrontier提供)

# 1. 必要なライブラリのインストール
!pip install PyPDF2 -q

import PyPDF2
from google.colab import files
import io

def merge_brother_scanner_pdfs():
    print("--- ブラザーADF用 PDF交互マージツール ---")

    # 2. 奇数ページPDF(表面)のアップロード
    print("\n【手順1】表面(1, 3, 5...ページ)のPDFを選択してください。")
    uploaded_odd = files.upload()
    if not uploaded_odd:
        print("ファイルが選択されませんでした。")
        return
    odd_filename = list(uploaded_odd.keys())[0]
    odd_reader = PyPDF2.PdfReader(io.BytesIO(uploaded_odd[odd_filename]))

    # 3. 偶数ページPDF(裏面・逆順)のアップロード
    print("\n【手順2】裏面(最後, ..., 4, 2ページ)のPDFを選択してください。")
    uploaded_even = files.upload()
    if not uploaded_even:
        print("ファイルが選択されませんでした。")
        return
    even_filename = list(uploaded_even.keys())[0]
    even_reader = PyPDF2.PdfReader(io.BytesIO(uploaded_even[even_filename]))

    writer = PyPDF2.PdfWriter()

    # ページ数の取得
    n_odd = len(odd_reader.pages)
    n_even = len(even_reader.pages)

    # 最大ページ数に合わせてループ(奇数と偶数が1枚程度ズレていても対応可能)
    max_pages = max(n_odd, n_even)

    print(f"\nマージを開始します... (奇数: {n_odd}枚 / 偶数: {n_even}枚)")

    # 4. ページ結合ロジック
    for i in range(max_pages):
        # 奇数ページを追加(前から順番)
        if i < n_odd:
            writer.add_page(odd_reader.pages[i])

        # 偶数ページを追加(後ろから順番:カウントダウン対応)
        # 例:3枚あれば、i=0のときに index=2 (3枚目) を取る
        if i < n_even:
            target_index = n_even - 1 - i
            writer.add_page(even_reader.pages[target_index])

    # 5. 保存ファイル名の指定とダウンロード
    # 保存名を指定したい場合はここを書き換えてください
    output_filename = "merged_scanned_document.pdf"

    with open(output_filename, "wb") as f:
        writer.write(f)

    print(f"\n完了! 「{output_filename}」をダウンロードします。")
    files.download(output_filename)

# 実行
merge_brother_scanner_pdfs()

【初心者向け:Google Colabでの実行手順】

  1. Google Colab にアクセスし、「ノートブックを新規作成」をクリック。
  2. 表示された枠に上記のコードをコピペ
  3. 左側の再生ボタン(▶)をクリック。
  4. 画面の指示に従って「表面PDF」→「裏面PDF」を選択すれば、自動的に結合されたPDFがダウンロードされます。

【おわりに:小さなDXが現場を変える】

DX(デジタルトランスフォーメーション)の本質は、必ずしも高価なシステムを導入することではありません。

「今ある道具(片面スキャナ)」の弱点を「IT(Python)」で補い、現場のストレスを解消する。こうした小さな成功体験の積み重ねこそが、組織全体のデジタル化を加速させる第一歩になります。

「こんな不便も自動化できるかな?」という課題があれば、ぜひRTFrontierへご相談ください。

タイトルとURLをコピーしました