Как Perspec превращает кривые фотографии документов в идеальные сканы

21 июн 2026
785
38
6
1 неделя

Знакомая история: нужно быстро отправить скан документа, вы достаете телефон, делаете снимок под углом, чтобы не мешала тень, и в итоге получаете трапецию вместо прямоугольника. Читать такое неудобно, печатать — еще хуже. Обычно в таких случаях мы либо мучаемся с инструментами трансформации в Photoshop, либо ищем мобильные сканеры, которые забиты рекламой и подписками.

Недавно я наткнулся на Perspec. Это десктопное приложение и CLI-утилита, которая делает ровно одну вещь, но делает ее чертовски хорошо: исправляет перспективу на фотографиях плоских объектов. Это могут быть чеки, страницы книг, белые доски после митинга или даже фасады зданий.

Что умеет Perspec

Проект написан на Haskell, что уже само по себе любопытно для утилиты такого рода. В основе лежит библиотека FlatCV, которая берет на себя всю математику компьютерного зрения.

Главная фишка — автоматизация. Когда вы закидываете фотографию в Perspec, алгоритмы сами пытаются найти углы документа. Если автоматика промахнулась (а на сложных фонах это бывает), вы просто перетаскиваете маркеры вручную.

https://raw.githubusercontent.com/ad-si/Perspec/main/images/screenshots/2026-04-23t1756_detected_corners.png

Реклама

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

Четыре режима сохранения

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

  1. Color (24-bit). Обычное сохранение со всеми цветами. Подойдет для фотографий зданий или цветных журналов.
  2. Grayscale (8-bit). Переводит в оттенки серого и нормализует яркость. Идеально для архивных документов.
  3. BW (1-bit). Жесткий черно-белый режим. Каждый пиксель либо черный, либо белый. Весит копейки, выглядит как факс.
  4. BW Smooth. Мой фаворит. Это почти ч/б, но со сглаживанием краев. Текст остается максимально четким, но не «лесенкой».

https://raw.githubusercontent.com/ad-si/Perspec/main/images/examples/package_slip_bw_smooth.png

Автоматизация через CLI

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

/Applications/Perspec.app/Contents/Resources/perspec fix photos/*.png

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

Как собрать и запустить

Если вы на macOS, проще всего поставить через Homebrew:

brew install --cask ad-si/tap/perspec

Для любителей собирать из исходников понадобится Haskell Stack и утилита Platypus (она используется для сборки macOS-бандла). Процесс стандартный: клонируем репозиторий и запускаем make install.

Интересный момент: автор в README описывает целый воркфлоу по оцифровке. Например, он советует использовать камеру со звуковой активацией (по щелчку пальцев), чтобы не трясти телефон при нажатии на кнопку. А для финальной полировки предлагает использовать ImageMagick (mogrify) для нормализации динамического диапазона.

Техническая сторона

Проект не пытается казаться сложнее, чем он есть. Haskell здесь используется для описания логики трансформаций, а Platypus превращает скрипты в полноценное приложение.

Внутри используются классические алгоритмы:

  • Преобразование перспективы (Perspective Transformation).
  • Конвертация в Grayscale и BW.
  • Интерполяция недостающих частей (если при выпрямлении по краям образуются пустоты).

Кому это пригодится

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

Инструмент точно зайдет:

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

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.