Нет проблемы быстро сканировать документы с любым количеством страниц, если под рукой есть сканер с устройством автоматической подачи. Однако часто МФУ имеют дуплексную двустороннюю печать и сканер, который умеет сканировать только с одной стороны, но имеет устройство автоматической подачи документов.

При этом сканирование больших двухсторонних документов выглядит проблемой, которая поедает большое количество времени.

Инструкция, которую надо сканировать и она частично распечатана с двух сторон
Инструкция, которую надо сканировать и она частично распечатана с двух сторон

Ведь если документ состоит всего из нескольких страниц, то нет необходимости связываться с командной строкой, потому что можно вручную склеить сканы в любой программе, которая работает с PDF, просто переставив местами страницы или даже вручную перевернув их на сканере.

Но что если документ А4 формата имеет несколько десятков или даже сотен страниц как на фотографии?

TL;DR

Решение: используйте консольную программу PDFtk:

pdftk 
A="Лицевая сторона.pdf" 
B="Оборотная сторона.pdf" 
shuffle A1-end Bend-1 
output "Готовый скан.pdf"

Сосканируйте лицевые и оборотные стороны в два отдельных файла

Расшейте документ перед сканированием и убедитесь что не осталось скрепок, скрепляющих листы.

Неважно насколько толстый по объему документ — при сканировании пачки можно разбить все страницы на небольшие группы и добавлять содержимое в один файл — во многих программах сканирования это делает кнопкой добавить.

Сканирование лицевых сторон
Сканирование лицевых сторон

После того как сканирование лицевых сторон завершено вы получите многостраничный файл с условным названием Лицевая сторона.pdf.

Дальше переворачиваем все страницы чтобы оборотная сторона стала лицевой. При этом некоторые оборотные страницы могут быть пустые — ничего разбирать или убирать не надо.

Сканируем через автоподатчик все страницы, которые теперь оказались в обратном порядке, в том числе и пустые.

Сканирование оборотных сторон
Сканирование оборотных сторон

После того как сканирование оборотных сторон завершено вы получите ещё один многостраничный файл, но уже с другим условным названием — Оборотная сторона.pdf.

При этом страницы в нём будут идти в обратном порядке: от самой последней к самой первой.

Магия программы PDFtk

PDFtk (сокращение от PDF Toolkit) — это инструмент командной строки для работы с PDF‑файлами. Он позволяет пользователям объединять несколько PDF‑файлов в один документ, разбивать PDF‑документ на несколько меньших документов, поворачивать страницы, добавлять водяные знаки, прикреплять файлы к PDF‑файлам и многое другое.

PDFtk доступен для Windows, macOS и Linux и может использоваться вместе с другими инструментами командной строки или сценариями для автоматизации задач, связанных с PDF. PDFtk также можно использовать в качестве библиотеки для таких языков программирования, как Python и Ruby.

PDFtk больше не поддерживается, но его функциональность по‑прежнему полезна. Альтернативы PDFtk включают, среди прочего, QPDF, PyPDF2 и pdftk‑java.

Как установить программу PDFtk

Процесс установки PDFtk зависит от вашей операционной системы. Вот шаги для установки PDFtk в Windows, macOS и Linux:

Windows:

  1. Загрузите установщик PDFtk с веб-сайта PDFtk: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

  2. Дважды щелкните загруженный файл, чтобы запустить программу установки.

  3. Следуйте инструкциям программы установки, чтобы завершить процесс установки.

  4. После завершения установки откройте командную строку и введите pdftk, чтобы убедиться, что инструмент успешно установлен.

macOS:

  1. Установите Homebrew (если он еще не установлен), введя в Терминале следующую команду:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  2. После установки Homebrew введите в Терминале следующую команду, чтобы установить PDFtk:

    brew install pdftk

  3. После завершения установки введите pdftk в Терминале, чтобы убедиться, что инструмент успешно установлен.

Linux:

  1. Откройте Терминал и введите следующую команду для установки PDFtk:

    sudo apt-get install pdftk

  2. После завершения установки введите pdftk в Терминале, чтобы убедиться, что инструмент успешно установлен.

    Примечание. Приведенные выше инструкции предназначены для установки PDFtk в дистрибутиве Linux на основе Ubuntu. Процесс установки может отличаться для других дистрибутивов Linux.

Склеиваем два сканированных файла в один

Теперь в одной папке находятся два файла:

  1. Лицевая сторона.pdf — в котором прямой порядок страниц.

  2. Оборотная сторона.pdf — где обратный порядок страниц: от самой последней к самой первой.

Вызываем в терминале команду:

pdftk A="Лицевая сторона.pdf" B="Оборотная сторона.pdf" shuffle A1-end Bend-1 output "Готовый скан.pdf"

pdftk под Windows
pdftk под Windows

Если всё прошло успешно, то программа не выдаёт никакой информации об ошибках.

Проверяйте папку, где появился файл Готовый скан.pdf.

Готовый скан на 162 страницы
Готовый скан на 162 страницы

На этом миссия выполнена — после склейки получается обычный скан с нормальным порядком страниц. Дополнительно, пустые страницы можно удалить отдельно.

Что в итоге

Если к вас нет двухстороннего сканера, то работа с PDFtk через командную строку полностью решает проблему двустороннего сканирования независимо от того Linux, Windows или macOS вы используете.

Автор: Михаил Шардин,

15 марта 2023 г.

Комментарии (31)


  1. sevmax
    00.00.0000 00:00
    +1

    Спасибо! Сканирую редко, но этот подход реально может сэкономить время!


    1. empenoso Автор
      00.00.0000 00:00

      Да, пришлось разбираться и мне тоже было очень странно почему такие гиганты как тот же акробат не умеют постранично объединять два файла.


  1. ts347
    00.00.0000 00:00
    +10

    Задумался, а нет ли в моей любимой программе PDF24 такой функции. Посмотрел — конечно, есть. Модуль "Объединить PDF", метод — "Сопоставить".


    Всем настоятельно рекомендую эту бесплатную и невероятно мощную программу. Всё, что мне до сих пор приходило в голову делать с PDF — она может.


    1. Dakar
      00.00.0000 00:00
      +2

      Поддерживаю. Очень удобная программа. Еще бы нумерацию страниц могла проставлять - было б вообще супер. Ради простановки страниц однажды я и познакомился с PDFtk, если память не измееяет.


      1. ts347
        00.00.0000 00:00
        +1

        В текущей версии умеет.
        У них некоторое время назад произошло мощное обновление, в результате которого количество функций выросло раза в три.


    1. empenoso Автор
      00.00.0000 00:00

      Adobe Acrobat DC и PDF-Xchange почему-то такого функционала не имеют ????‍♂️


    1. IDDQDesnik
      00.00.0000 00:00
      +1

      В качестве альтернативы так же есть бесплатный опенсорсный PDFSAM Basic.


  1. Javian
    00.00.0000 00:00
    +1

    off А чем можно "ремонтировать" PDF? Для файлов, которые "Файл поврежден и не может быть восстановлен."


    1. empenoso Автор
      00.00.0000 00:00

      Не сталкивался с этим. Возможно поможет резервная копия, если она есть?


      1. Javian
        00.00.0000 00:00

        Иногда МФУ портит файлы при сохранении результата по сети.


    1. aborouhin
      00.00.0000 00:00
      +1

      Я использую PDF X-Change, но она платная :(

      При открытии битого файла сразу предлагает сохранить исправленную копию. Рутинное действие для квитанций об отправке электронного заказного письма Почтой России, которые всегда скачиваются с их сайта битыми (не знаю, что они там напортачили).


    1. tkl
      00.00.0000 00:00
      +2

      можно попробовать cpdf или ghostscript

      https://www.coherentpdf.com/cpdfmanual/cpdfmanualch1.html#x5-350001.13

      когда-то давно помогло починить побитые какой-то питоновской либой файлы


  1. valeriyvan
    00.00.0000 00:00

    На macOS невозможно установить при помощи brew:

    brew install pdftk
    Running `brew update --auto-update`...
    ==> Auto-updated Homebrew!
    Updated 4 taps (homebrew/bundle, homebrew/services, homebrew/core, and homebrew/cask).
    ==> New Formulae
    aztfy
    ==> New Casks
    irpf2021                irpf2022                keyfinder               scansion
    Warning: Calling plist_options is deprecated! Use service.require_root instead.
    Please report this issue to the appveyor/brew tap (not Homebrew/brew or Homebrew/homebrew-core), or even better, submit a PR to fix it:
      /opt/homebrew/Library/Taps/appveyor/homebrew-brew/Formula/appveyor-server.rb:33
    
    
    You have 39 outdated formulae and 3 outdated casks installed.
    You can upgrade them with brew upgrade
    or list them with brew outdated.
    
    Warning: No available formula with the name "pdftk". Did you mean pdftoipe?
    ==> Searching for similarly named formulae and casks...
    ==> Formulae
    pdftk-java                                      pdftoipe
    
    To install pdftk-java, run:
      brew install pdftk-java


    1. empenoso Автор
      00.00.0000 00:00

      К сожалению лично у меня нет macOS - может быть кто-то из пользователей подскажет.


  1. aik
    00.00.0000 00:00
    +2

    Подсказал бы кто программу, которая страницы при сканировании переворачивать будет… :)


    1. empenoso Автор
      00.00.0000 00:00

      Вообще это она - у лицевой пачки прямой порядок страниц, а у оборотной обратный. Один раз только перевернуть без автоматизации ????


      1. aik
        00.00.0000 00:00

        Я про сканирование книг. Ну и вообще тех документов, которые расшить нельзя.


        1. empenoso Автор
          00.00.0000 00:00

          Вроде специальные сканеры есть. Не сталкивался


          1. aik
            00.00.0000 00:00
            +1

            Потому и хочется программку поставить, чтобы обычный планшетный сканер сам страницы листал. :)


    1. Alexufo
      00.00.0000 00:00
      +1

      Irfan view даж без пережатия может вращать jpg


  1. aborouhin
    00.00.0000 00:00
    +1

    Способ хороший, но для большинства пользователей, сканирующих документы, что-то запустить из командной строки - недостижимые высоты мастерства :) (работаю с юристами)

    Благо, сканирование в 90% случаев предполагает и OCR сразу, а FineReader так делать тоже умеет из коробки.


    1. empenoso Автор
      00.00.0000 00:00

      Думаю, что согласен на счёт недостижимых высот мастерства :) правда это печально.
      У меня например для этих больших документов OCR не предполагался - там всякие сертификаты в основном.


      1. aborouhin
        00.00.0000 00:00
        +1

        Ну в FineReader можно, в принципе, и без OCR это сделать, раз уж он ради OCR куплен и установлен. Но у OCR, даже если не текстовый слой сам особо не нужен, ещё плюс в том, что листы автоматически поворачивает в зависимости от содержимого (когда в середине документа листов на 300 три широких таблички по 10 листов каждая в альбомной ориентации - бесит). Хотя для простых случаев, согласен, из командной строки мне самому было бы проще.


  1. vassabi
    00.00.0000 00:00
    +2

    эх! а я писал скрипт на питоне

    from PyPDF2 import PdfFileWriter, PdfFileReader
    from PIL import Image

    ### и там далее:
    ### читаем из pdf страницы как картинки,
    ### делаем что угодно с картинками,
    ### сохраняем картинки как страницы в pdf


    1. empenoso Автор
      00.00.0000 00:00

      Сила ????


  1. falconandy
    00.00.0000 00:00
    +1

    Для манипуляций с PDF есть еще такая утилита pdfcpu. Написана на Go, может использоваться как библиотека из своих go-программ.


    1. empenoso Автор
      00.00.0000 00:00

      Спасибо ????


  1. theGrove
    00.00.0000 00:00
    +1

    Профит! Спасибо)


  1. imageman
    00.00.0000 00:00
    +1

    Есть еще вариант. Сканируем все (пусть даже) в pdf. Из pdf делаем одностраничные pdf (в Акробате extract pages). Получаем набор pdf, который нужно правильно переименовать. Для этого в Total Commander (или любой другой программе для переименования) вызываем Multi-rename tool. И делаем шаблон с [C] в одном случае start - 1; step - 2, а в другом start - 2; step - 2 (digits - 4). Т.е. любым доступным способом делаем так, что бы при сортировке по алфавиту номера страниц были правильные. После этого объединяем получившиеся pdf в один (можно через Акробат).


    1. empenoso Автор
      00.00.0000 00:00

      Но мой вариант кажется проще :)


      1. imageman
        00.00.0000 00:00

        PDFtk "инструмент командной строки" - эти три слова многих современных специалистов (не говоря уже о пользователях) вгоняют в скуку и депрессию :-) Поэтому альтернативный вариант кому-то может оказаться проще - нужно всего-то разбить документы постранично, правильно переименовать файлы и собрать обратно все файлы в один документ.