Hazel

Hazel автоматически распознаёт поступающие PDF-документы по имени, дате, тегам и содержимому, затем переименовывает их по шаблону, раскладывает по папкам, архивирует, отправляет на сервер или запускает дальнейшую обработку; правила собираются из условий и действий, проверяются на выбранном файле и выполняются без ручной сортировки.

Главное окно делит работу на список контролируемых папок, перечень правил для выбранной папки и редактор текущего правила. В редакторе отдельно задаются условия совпадения и последовательность действий, поэтому можно сначала описать, какой документ считать счётом, выпиской или отсканированным договором, а затем определить его новое имя, папку назначения, теги и следующий этап обработки. Предварительный просмотр показывает, какие условия сработают на конкретном файле, не выполняя перенос и переименование.

Для PDF особенно полезны проверки расширения, имени, размера, дат, комментариев Finder и текстового содержимого. Если у скана нет поискового текстового слоя, правило может выполнить распознавание только для сопоставления; распознанный текст в сам PDF не записывается. Защищённый документ можно прочитать после указания пароля в параметрах правила, а найденные в тексте значения — номер счёта, дата, проект или контрагент — использовать в имени файла и структуре папок.

Скачать Hazel

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Hazel
Оценка 8.5
  • Только для macOS
  • Нет редактирования PDF
  • Нет русского интерфейса
Скачать Hazel
Загрузка начнётся после нажатия

Как устроен рабочий процесс Hazel

Hazel не требует строить один огромный сценарий для всего диска. Сначала в список Folders добавляют конкретное место, где появляются документы: Downloads, папку вложений почтового клиента, каталог сканера, общую папку проекта или отдельный входящий каталог. Затем для этой папки создают правила и располагают их в порядке проверки. Такой подход снижает риск случайно затронуть архив: правило видит только содержимое назначенного каталога, а обработку вложенных уровней включают отдельно и осознанно.

У каждого правила есть имя, необязательная заметка, блок условий и блок действий. Переключатель any означает, что достаточно одного истинного условия; all требует выполнения всех; none отбирает файлы, для которых не истинно ни одно из перечисленных условий. Для документов обычно безопаснее начинать с all: например, расширение равно pdf, имя содержит код отдела, а дата добавления старше двух минут. Последняя проверка даёт браузеру, почтовой программе или сканеру закончить запись файла до переноса.

Действия выполняются сверху вниз. Если сначала переименовать документ, следующий шаг уже получает новое имя; если сначала скопировать файл и выбрать продолжение обработки копии, дальнейшие операции относятся к экземпляру в целевой папке. Перемещение меняет местоположение текущего объекта, поэтому действие Continue matching rules нужно ставить только там, где файл остаётся доступен следующим правилам того же набора. Порядок действий следует читать как небольшой конвейер, а не как независимый список команд.

Главное окно Hazel со списком папок, правил и редактором

Папки, группы и варианты компоновки окна

Кнопка Add Folder добавляет обычную папку, том или поддерживаемую умную папку. Для часто используемых мест предусмотрены команды добавления папок приложений, чтобы не искать вручную каталоги загрузок популярных браузеров. Список слева можно разбить на группы: это удобно, когда отдельные наборы правил обслуживают бухгалтерию, проекты, фотоархив и временные загрузки. Группа упорядочивает интерфейс, но не объединяет правила в общий поток: каждое правило по-прежнему принадлежит выбранной папке.

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

Панель инструментов настраивается средствами macOS. Помимо добавления папки и правила, на неё можно вынести Folder Options, Preview Rule, Rule Status, поиск, паузу и команду Run Rules Now. Если на небольшом экране нужная кнопка скрыта, её действие остаётся доступным через меню. Отдельный редактор отсоединяется от главного окна: полезно открыть два правила рядом и перенести логику вручную, не переключаясь между строками списка.

Двухколоночная компоновка Hazel

Компоновка Hazel с папками и правилами сверху

Создание первого правила для входящих PDF

Практичный стартовый сценарий — очистка папки, куда сканер сохраняет документы. После добавления папки создайте правило Входящие PDF и задайте два условия: Extension is pdf и Date Added is not in the last 2 minutes. Расширение вводится без точки. Задержка не обязательна для уже готовых файлов, но защищает от попытки переместить документ, пока устройство ещё дописывает многостраничный скан. Если оборудование сначала создаёт временный файл с другим расширением, можно дополнительно исключить его отдельным верхним правилом с действием Ignore.

Первое действие лучше сделать диагностическим: добавить тег На обработке или вывести уведомление. После проверки замените его на Rename и Sort into subfolder. В шаблон имени можно поместить дату добавления, исходное имя и статический префикс, например Скан. Для папки назначения используйте год и месяц, чтобы Hazel создавала уровни автоматически. Не начинайте с удаления исходника или замены существующего файла: безопасный конвейер сначала перемещает документы в тестовый каталог, где легко сравнить результат с ожиданиями.

Правило сохраняется только после устранения незаполненных полей и несовместимых действий. Ошибочные строки подсвечиваются, поэтому перед закрытием редактора проверьте каждую красную отметку. После сохранения выберите один реальный PDF через Preview Rule. Зелёный индикатор у условия означает совпадение, красный — несовпадение; в режиме предварительного просмотра действия не выполняются. Лишь после этого включайте правило флажком в списке и запускайте обработку папки.

Редактор правила Hazel с условиями и действиями

Простое правило Hazel для перемещения изображений

Условия по имени, расширению и типу файла

Атрибут Name проверяет имя без расширения, а Full Name — полное имя. Эта разница важна для файлов вроде invoice.pdf: условие Name contains pdf ничего не найдёт, тогда как Full Name ends with .pdf сработает. Для обычного отбора документов надёжнее использовать Extension is pdf, потому что Finder может скрывать расширение визуально, но Hazel всё равно его читает. Проверка Kind подходит для широких категорий — Document, Image, Folder, Movie, — однако для специализированного потока PDF точное расширение уменьшает число ложных совпадений.

Операторы contains, starts with и ends with удобны для стабильных фрагментов: кода клиента, префикса сканера или суффикса signed. Оператор matches работает с шаблоном и требует совпадения всей строки. Если имя содержит дополнительный текст до или после нужного фрагмента, добавьте токен Anything в соответствующую часть шаблона. Частая ошибка — собрать образец Word-Number и ожидать, что он найдёт такой фрагмент внутри длинного имени; без Anything этот образец принимает только строку, целиком имеющую указанную структуру.

Сопоставление шаблонов не учитывает регистр, поэтому Invoice и invoice равнозначны. Это упрощает правила для файлов из разных источников, но не позволяет разделить документы только по заглавным буквам. Для разграничения используйте другой атрибут: папку-источник, Source URL, содержимое, тег или точный фрагмент имени. Когда разные расширения обозначают один класс данных, условие Extension is among the... позволяет перечислить значения, а группа any объединяет отдельные варианты без создания нескольких почти одинаковых правил.

Даты, возраст, размер и состояние документа

Hazel различает дату создания, изменения, добавления, последнего открытия и последнего совпадения с правилом. Для входящих документов чаще всего подходит Date Added: она показывает, когда объект появился в контролируемой папке. Date Modified полезна для файлов, которые внешняя программа дописывает или заменяет. Date Last Matched помогает не повторять дорогое действие слишком часто: можно запускать проверку раз в день, сравнивая текущую дату с моментом предыдущего совпадения. Перед выбором атрибута убедитесь в Preview, что конкретный источник сохраняет ожидаемые метаданные.

Относительные условия формулируются через промежуток: старше пяти минут, добавлен за последние семь дней, текущее время после 18:00. Они подходят для карантина загрузок и периодической уборки. Абсолютная дата нужна реже, но её можно получить из имени или текста документа через пользовательский атрибут. Если правило должно срабатывать по рабочим дням, учитывайте границы суток: проверка после 22:00 по будням не распространяется автоматически на раннее утро следующего дня; для ночного окна задают отдельные интервалы.

Size сравнивает фактический размер файла, а не занимаемое место на носителе. Этот атрибут помогает отделять нулевые или подозрительно маленькие результаты сканирования, переносить тяжёлые отчёты в архив и не отправлять на сервер документы сверх установленного лимита. Locked проверяет блокировку Finder; соответствующее действие может установить или снять её. Связка PDF, размер больше нуля, не изменялся две минуты, не заблокирован даёт более устойчивый входной фильтр, чем одна проверка расширения.

Поиск текста внутри PDF и распознавание сканов

Условие Contents проверяет извлекаемый текст. Для PDF с текстовым слоем Hazel читает слова документа и может искать обычную строку либо шаблон. Для изображения или скана без текстового слоя доступно распознавание на лету. Оно предназначено только для принятия решения правилом: после совпадения документ остаётся таким же, а поиск текста в стороннем просмотрщике не появляется. Если нужен поисковый архив, добавьте отдельное действие, запускающее OCR-программу, и лишь затем возвращайте обработанный файл в следующий контролируемый каталог.

В параметрах правила можно выбрать распознавание по необходимости, принудительное распознавание даже при наличии текста или отключение распознавания. Режим по необходимости экономит время и подходит большинству входящих сканов. Принудительный режим полезен, когда встроенный слой повреждён, содержит неверные символы или не соответствует видимому изображению. Отключение позволяет отличить уже распознанные документы: условие Contents is blank при выключенном распознавании укажет на PDF, из которого текст извлечь нельзя.

Contents contains ищет заданную фразу. Contents contain match использует шаблон и способен извлечь переменную часть: номер счёта после фиксированной метки, дату рядом со словом Дата или код договора. В отличие от полного matches, contain match допускает совпадение внутри большого текста. Для повторяющихся фрагментов можно указать номер вхождения от начала или конца. Это полезно, когда на первой странице присутствует номер исходного документа, а в приложениях повторяются другие номера, которые не должны определять имя файла.

Качество распознавания зависит от исходника: наклонённая страница, мелкий шрифт, фон печати и смешение языков увеличивают ошибки. Стройте правило так, чтобы оно подтверждало класс документа несколькими признаками. Например, ищите одновременно слово Счёт, ИНН вашей организации и шаблон даты; затем в Preview откройте поле Contents, найдите распознанный фрагмент и проверьте фактические символы. Не используйте один короткий термин вроде итого как единственное основание для перемещения финансового документа.

Пароль для защищённого PDF

Если PDF зашифрован и требует пароль на открытие, Contents не сможет прочитать его без дополнительных данных. Параметр Document Password находится в опциях правила рядом с его названием. Один пароль относится ко всему правилу, поэтому документы от разных отправителей с разными паролями лучше разделить на несколько правил или сначала определять их по имени и источнику. Пароль даёт Hazel доступ к содержимому для проверки, но не снимает защиту и не создаёт незашифрованную копию.

Не включайте защищённые документы в правило с неверным паролем и необратимым действием. Сначала добавьте условие по имени или Source URL, укажите пароль, проверьте файл в Preview и только затем настройте перенос. Если отправитель регулярно меняет пароль, безопаснее направлять такие PDF в отдельную папку с уведомлением, чем пытаться подобрать несколько вариантов скриптом. В заметке правила укажите назначение пароля без записи самого секрета, чтобы позднее понимать причину отдельного маршрута.

Шаблоны сопоставления и извлечение значений

Редактор шаблонов использует токены Letter, Digit, Letter or Digit, Symbol, Character, Word, Number, Letters & Digits, Symbols, Characters и Anything. Одиночные токены соответствуют одному символу, множественные — последовательности. Number распознаёт числа, включая разделители тысяч и десятичную часть, после чего значение можно форматировать при выводе. Статический текст вводится прямо между токенами. Так создаётся схема INV-Number-Date, не привязанная к одному конкретному номеру.

Синий токен можно превратить в пользовательский атрибут и присвоить ему понятное имя, например Номер счёта. Полученное значение становится доступно в последующих условиях и действиях этого правила. Для имени invoice-4832.pdf шаблон может захватить 4832, затем Rename сформирует Счёт 4832, а Sort into subfolder выберет год из другого атрибута даты. Благодаря этому одно правило одновременно классифицирует документ и переносит найденные данные в структуру хранения.

Пользовательский текстовый атрибут сохраняет первое успешно найденное значение до конца проверки правила. Если тот же атрибут повторно используется в другом условии, значение должно совпасть; это позволяет проверить согласованность номера в имени и внутри документа. Пользовательская дата преобразует найденную строку в календарное значение. При автоматическом определении формата Hazel пытается понять порядок компонентов, но для неоднозначных записей вроде 03/04/26 лучше явно задать образец и затем выбрать нужный формат вывода.

Пользовательский список собирает несколько совпадений, например все теги или найденные позиции, и передаёт их в действие. List Item проверяет, входит ли значение в заранее созданный перечень. Table сопоставляет одну колонку и возвращает данные из другой: по коду проекта можно выбрать название папки, по расширению — категорию, по сокращению контрагента — полное имя. Таблицу удобно хранить отдельно и обновлять без переписывания логики, но после изменения проверьте строки с одинаковыми ключами: при нескольких подходящих вариантах важна точность дополнительных условий.

Переименование без потери расширения

Действие Rename строит новое имя из текста и токенов. В шаблон доступны исходное имя, расширение, даты, найденные пользовательские атрибуты и счётчик. Расширение обычно оставляют отдельным токеном либо не меняют настройкой действия; ручное добавление .pdf в неподходящее место может привести к двойному расширению. Перед массовым запуском проверьте имена с пробелами, дефисами, кириллицей и уже существующим суффиксом, чтобы шаблон не дублировал префикс при повторном прохождении.

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

Ограничение максимальной длины атрибута помогает не получить чрезмерно длинное имя из заголовка или текста PDF. Сначала очистите захваченный фрагмент заменами: удалите запрещённые разделители пути, сократите повторные пробелы и уберите служебные слова. Затем задайте длину и добавьте устойчивый идентификатор в конец, потому что простое усечение разных заголовков может сделать их одинаковыми. Политику конфликта для последующего Move настройте отдельно, чтобы совпадение не перезаписало ранее сохранённый документ.

Перемещение, копирование и обработка совпадений

Move переносит файл в выбранную папку. При совпадении имени с существующим объектом можно переименовать новый файл с числовым суффиксом, заменить старый или отправить новый в Корзину. Опция Throw away if a duplicate удаляет поступивший экземпляр только при фактической идентичности, а не при равном имени. Для финансовых и юридических документов наиболее осторожная политика — переименование при коллизии плюс последующая ручная проверка; замена допустима лишь там, где источник гарантированно публикует более свежую копию того же отчёта.

Copy оставляет исходник на месте и создаёт копию. Настройки конфликта включают переименование, замену или пропуск. Важная деталь: последующие действия могут применяться к созданной копии, поэтому цепочка Copy в архив, Add tags, Upload способна маркировать и отправлять архивный экземпляр, не меняя входящий файл. Если нужно обработать оригинал и копию по-разному, разделите задачу на два правила или используйте две контролируемые папки, иначе легко ошибиться в том, к какому экземпляру относится следующий шаг.

Sort into subfolder создаёт вложенную папку внутри контролируемой и помещает туда файл. Имя подпапки формируется шаблоном, поэтому можно построить путь год/месяц/контрагент. Для многоуровневой структуры используйте токены пути осознанно: символ-разделитель должен трактоваться как путь, а значения из документа необходимо очищать от косых черт. Если конечная папка уже существует, Hazel использует её; если нет — создаёт недостающие уровни. Перед запуском на архиве проверьте один документ каждого типа.

Move и Sort into subfolder изменяют расположение файла. После этого Continue matching rules в исходном наборе обычно теряет смысл, потому что объект покинул папку. Для многоэтапного конвейера назначьте целевую папку отдельным контролируемым каталогом с собственными правилами. Такая схема легче отлаживается: Входящие только классифицирует, Распознано проверяет содержимое, Готово к архиву переименовывает и выгружает, а Ошибки хранит документы, не прошедшие контроль.

Продолжение проверки и порядок правил

По умолчанию файл обрабатывает первое подходящее правило в списке, после чего проверка набора прекращается. Поэтому узкие исключения располагают выше общих правил. Например, защищённые выписки с определённым префиксом должны стоять перед универсальным правилом для всех PDF; иначе общий маршрут сработает раньше, а пароль и специализированное имя не применятся. Перетаскивание строк меняет приоритет сразу, поэтому после реорганизации списка полезно просмотреть Rule Status на нескольких типовых файлах.

Действие Continue matching rules передаёт оставшийся на месте объект следующим правилам. Оно полезно для независимых метаданных: первое правило добавляет тег отдела, второе — цветовую метку срочности, третье — комментарий. Не ставьте Continue без необходимости после правила, которое каждый раз снова соответствует неизменившемуся файлу: ручной запуск или изменение метаданных может образовать повторяющуюся цепочку. Условие Date Last Matched или новый тег Обработано делает прохождение идемпотентным.

Ignore явно прекращает дальнейшую обработку объекта. Это удобный верхний фильтр для временных расширений, файлов с префиксом точки, служебных каталогов и документов, которые пользователь пометил тегом Не трогать. В отличие от снятия флажка со всех остальных правил, Ignore документирует исключение и показывает его в статусе. Если исключение временное, добавьте условие по дате или тегу, чтобы оно не стало бессрочным для случайно совпавшего файла.

Вложенные папки и рекурсивная обработка

Правила папки обычно проверяют элементы её верхнего уровня. Действие Run rules on folder contents заставляет Hazel перейти внутрь совпавшей папки и применить тот же набор к содержимому. Для рекурсивного обхода создают правило, у которого Kind is Folder, а действием назначают обработку содержимого. Такое правило ставят ниже специальных действий для пустых папок и исключений: если сначала углубиться, удаление пустого каталога или запрет обработки конкретной ветки может не сработать в ожидаемом порядке.

Параметр Subfolder depth ограничивает глубину. Он особенно важен для больших архивов, сетевых томов и облачных деревьев: бесконтрольный обход тысяч каталогов увеличивает нагрузку и усложняет диагностику. Если нужно обработать только документы непосредственно внутри папок проектов, задайте один уровень; для многоступенчатого архива используйте отдельные правила на каждом корне. Не запускайте рекурсивное правило на домашней папке без строгих исключений и тестовой копии структуры.

Условия можно вкладывать и менять объект проверки: текущий элемент, содержащая его папка, любой или каждый соседний объект, любой или каждый вложенный файл. Так PDF можно маршрутизировать по имени родительской папки либо обрабатывать пакет только при наличии контрольного файла. Действия всё равно применяются к текущему объекту, поэтому формулировку следует читать буквально. Preview помогает увидеть, какой уровень дал истинный результат; без него сложное none вокруг вложенного any легко понять наоборот.

Теги Finder, цвет, комментарии и блокировка

Add tags назначает один или несколько тегов Finder. Тег может быть фиксированным или собранным из шаблона и пользовательского атрибута. Например, найденный в PDF код проекта превращается в динамический тег, а список извлечённых категорий — в несколько тегов. Remove tags снимает только указанные значения, не затрагивая остальные. Теги удобны как состояние конвейера: Распознано, Проверить, Отправлено, Ошибка пароля. Следующее правило использует их как условия и не зависит от местоположения файла.

Set color label задаёт цветовую метку, но Finder связывает цветовые метки с тегами, поэтому существующая система тегов пользователя может влиять на отображение. Spotlight comment добавляет свободный комментарий, видимый в окне информации Finder и доступный для поиска. В комментарий можно поместить номер правила или найденный идентификатор, однако не стоит хранить там пароль или конфиденциальный текст документа: метаданные могут копироваться вместе с файлом и индексироваться системой.

Toggle extension visibility управляет показом расширения в Finder, а не самим форматом. Lock/Unlock изменяет флаг блокировки, который защищает файл от случайного редактирования и удаления некоторыми программами. Блокировка после окончательного архивирования полезна для утверждённых PDF, но она не является криптографической защитой и не заменяет права доступа. Если последующее действие должно изменить файл внешним инструментом, блокируйте его только после завершения всех преобразований.

Архивирование и распаковка

Archive создаёт ZIP из совпавшего файла или папки и перемещает исходник в Корзину. Последующие действия относятся к архиву, поэтому можно сначала упаковать комплект PDF, затем переименовать ZIP и отправить его на сервер. Перед включением проверьте политику хранения: если требуется сохранить оригиналы рядом, используйте Copy в подготовительную папку и архивируйте копию. Не рассчитывайте на Корзину как на постоянный резерв, особенно если Hazel одновременно очищает её по возрасту или размеру.

Unarchive распаковывает поддерживаемый архив, а исходный архив отправляет в Корзину. Это удобно для пакетов отчётности, но правила для извлечённых файлов должны учитывать появление нескольких объектов и вложенных папок. Безопасная схема распаковывает во временный контролируемый каталог, исключает исполняемые файлы и лишь затем отбирает PDF. Не открывайте автоматически содержимое неизвестных архивов: распаковка и запуск — разные действия, и последнее требует отдельного обоснованного правила.

При коллизиях внутри архива или в целевой папке результат зависит от действия после распаковки, поэтому тестируйте наборы с одинаковыми именами. Если архив содержит структуру каталогов, Run rules on folder contents поможет пройти внутрь, но ограничьте глубину и исключите системные каталоги. Для передачи на сервер часто практичнее сохранить ZIP как единый объект, а контрольную сумму или реестр сформировать внешним скриптом до Upload.

Отправка по FTP, SFTP и WebDAV

Upload передаёт совпавший файл на сервер по FTP, FTP с явным или неявным TLS, SFTP либо WebDAV, включая защищённое соединение HTTPS. В окне Connect to Server задаются адрес, протокол, порт, имя пользователя, пароль и начальный путь. Пароль хранится в системной связке ключей, поэтому его не нужно помещать в текст правила. Для SFTP можно выбрать совместимый ключ SSH. После подключения удалённый обозреватель помогает выбрать каталог назначения.

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

Сетевые ошибки не следует маскировать немедленным удалением локальной копии. Оставляйте документ в очереди или копируйте его в архив до отправки. Если сервер недоступен, смотрите журнал и Rule Status; неверный порт, изменившийся путь, просроченный пароль и отсутствие ключа дают разные причины отказа. При повторной попытке учитывайте коллизии на сервере: статическое имя может заменить файл либо вызвать отказ в зависимости от протокола и прав. Уникальное имя с датой и номером документа уменьшает риск.

Окно подключения Hazel к FTP, SFTP или WebDAV

Запуск приложений и системных команд

Open открывает файл указанной программой либо приложением по умолчанию. Это позволяет передать PDF редактору, средству OCR, подписания или печати. Настройка вывода приложения на передний план определяет, будет ли действие отвлекать пользователя. Не открывайте автоматически все новые файлы из Downloads: неизвестный документ может использовать уязвимость просмотрщика, а браузер иногда уже открывает загрузку, из-за чего получится двойной запуск. Сначала ограничьте источник, тип, возраст и дополнительные признаки.

Run Shortcut запускает выбранную команду Shortcuts и передаёт файл в автоматизацию. Run Automator workflow выполняет существующий процесс Automator. Эти действия удобны, когда нужная операция уже собрана в системном инструменте: уменьшение изображения, отправка письма, добавление в заметку или вызов программы. После обновления сценария проверьте, сохранилось ли его имя и входной тип; несовместимый вход может завершиться без ожидаемого результата, даже если правило Hazel формально совпало.

Run shell script предоставляет путь к совпавшему объекту и позволяет вызвать командную строку. Используйте абсолютные пути к утилитам, потому что окружение фонового процесса отличается от Terminal. Все пути заключайте в кавычки, обрабатывайте пробелы и проверяйте код возврата. Не формируйте команду прямой конкатенацией непроверенного имени файла: специальные символы способны изменить смысл оболочки. Для сложной логики храните проверенный скрипт отдельным файлом и ведите собственный журнал.

Pause приостанавливает цепочку на заданный промежуток. Оно полезно, когда внешняя программа запускается асинхронно и ей нужно время, но фиксированная задержка не гарантирует завершение. Надёжнее организовать две папки: первая запускает обработчик, а сам обработчик сохраняет готовый PDF во вторую. Pause оставляйте для коротких стабилизационных интервалов, а не для ожидания многоминутного OCR или сетевой операции.

AppleScript и JavaScript как условия

Встроенный AppleScript или JavaScript можно использовать не только как действие, но и как условие. Скрипт-условие возвращает истину или ложь, а внешний вариант реализует обработчик, которому Hazel передаёт файл и набор выбранных атрибутов. Это позволяет проверить свойство, отсутствующее в стандартном списке: сведения из базы, состояние другой программы или сложную структуру имени. Скрипт должен быть быстрым, потому что условие вызывается при проверке каждого подходящего объекта.

В редакторе входных атрибутов указывают только те значения, которые действительно нужны скрипту. Экспортируемые пользовательские атрибуты затем становятся доступны следующим условиям и действиям; скрипт может вернуть текст, дату или список. Имена экспортов должны быть устойчивыми, иначе токены в правилах потеряют источник. Ошибка выполнения заставляет Hazel считать обработку неуспешной и повторить её позднее, поэтому бесконечно падающий скрипт заметно засоряет журнал.

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

Встроенный редактор AppleScript в правиле Hazel

Настройка входных и выходных атрибутов скрипта Hazel

Предварительный просмотр правила

Preview Rule выбирает один файл внутри контролируемой папки и рассчитывает условия без запуска действий. Файл за пределами этой папки использовать нельзя, потому что часть атрибутов зависит от контекста наблюдения. Предварительный просмотр доступен и для выключенного правила, поэтому безопасно отключить новую логику, проверить несколько примеров и лишь затем активировать. Имя тестового файла показывается в режиме просмотра, что помогает не перепутать похожие документы.

Возле каждой строки появляется индикатор результата. Нажатие на информационную область раскрывает вычисленные атрибуты, а поле Contents становится прокручиваемым и поддерживает поиск. При редактировании условия по содержимому автодополнение может предлагать текст выбранного документа. Используйте это не для подгонки правила под один пример, а для проверки реального написания: дефисов, неразрывных пробелов, распознанных букв и порядка даты. Затем повторите тест на документе другого отправителя и на отрицательном примере.

Preview показывает, почему правило не совпадает, но не моделирует все побочные эффекты. Он не создаёт папку, не проверяет фактическое право записи в удалённое место и не подтверждает успешность серверной авторизации. После логической проверки выполните правило на копии файла в тестовой папке. Если цепочка использует внешнее приложение, скрипт или Upload, отдельно проверьте каждый этап и сохраните исходный документ до подтверждения результата.

Rule Status и журнал обработки

Rule Status отображает элементы выбранной папки, правило, которое с ними совпало, дату совпадения и ошибки. Через Quick Look можно просмотреть документ, не покидая диагностику. Информационная панель показывает атрибуты, которые Hazel видит у файла. Подсветка помогает связать выбранный объект с конкретными условиями. Кнопка обновления повторно считывает состояние, но не обязана немедленно выполнить действия, если файл ещё считается занятым или папка приостановлена.

Журнал открывается из меню состояния и содержит сообщения фонового обработчика. При расследовании ищите имя файла, имя правила и момент появления объекта. Одна строка об ошибке часто является следствием более ранней причины: например, не удалось создать целевую папку, после чего Rename или Upload тоже не получили ожидаемый путь. Скопируйте небольшой относящийся к событию фрагмент до повторного запуска, иначе новые записи усложнят картину.

Для воспроизводимой проверки создайте отдельную папку Hazel Test, скопируйте туда один проблемный PDF и временно продублируйте правило. Уберите необратимые действия, оставьте уведомление или тег, затем по очереди возвращайте Rename, Move, скрипт и Upload. Такой метод быстрее случайного изменения условий в рабочем наборе. После исправления удалите тестовую папку из списка наблюдения, чтобы копии не обрабатывались параллельно с оригиналами.

Пауза, ручной запуск и поиск по правилам

Флажок у правила отключает только эту строку, а Pause Rules приостанавливает всю выбранную папку или работу обработчика в зависимости от команды. В меню состояния виден текущий режим, и правила можно возобновить без открытия главного окна. Приостановка полезна перед массовым копированием архива в наблюдаемую папку: сначала добавьте файлы, проверьте список и только потом разрешите обработку. Не забывайте снять паузу — это одна из самых частых причин правило ничего не делает.

Run Rules Now запускает проверку по требованию. Команду можно добавить на панель инструментов и использовать после изменения правила либо подключения внешнего диска. Ручной запуск не отменяет условий: файл, который не подходит по дате, тегу или содержимому, останется нетронутым. Если действие не должно повторяться, добавьте состояние Обработано и условие его отсутствия; иначе ручной запуск может снова скопировать или загрузить тот же документ.

Поиск фильтрует правила по имени, заметке и заполненным полям, включая текст встроенных скриптов. Это полезно при десятках папок и повторяющихся действий: запрос по имени сервера найдёт все Upload, а по тегу — маршруты, которые его устанавливают или снимают. Поиск временно скрывает несовпадающие строки, но не меняет их порядок и активность. Перед перетаскиванием правила очистите фильтр, чтобы видеть соседние приоритеты.

Экспорт, импорт и синхронизация правил

Правила можно экспортировать в файл и импортировать на другом компьютере или в другую папку. Экспорт сохраняет структуру условий и действий, но внешние зависимости требуют отдельной проверки: пути к папкам, скриптам, приложениям, таблицам, серверным каталогам и ярлыкам Shortcuts могут отличаться. После импорта держите правило выключенным, заново выберите назначения и проверьте Preview. Не передавайте экспорт вместе с конфиденциальными заметками без просмотра содержимого.

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

Группируйте правила по назначению и давайте им имена, отражающие вход и результат: PDF — счёт — в 2026/Поставщики, PDF — нет текста — в OCR, PDF — ошибка — уведомить. Заметка должна объяснять нестандартный оператор, парольный маршрут или зависимость от скрипта. Такое именование облегчает поиск, экспорт и аудит, а также снижает риск удалить непонятное правило, которое обслуживает редкий, но важный документ.

Облачные папки и файлы, не загруженные на диск

В папках облачного хранилища часть объектов может существовать только как заполнители. Параметры папки определяют, как Hazel обращается с cloud-only files. Для проверки Contents и запуска внешней обработки нужен доступ к реальным данным, поэтому документ может потребовать загрузки. Массовое принудительное получение больших архивов расходует место и трафик; лучше наблюдать отдельный входящий каталог, где поставщик гарантирует локальное наличие, либо ограничить правила свежими файлами.

Перемещение между облачным и обычным томом зависит от механизма синхронизации. Объект может сначала копироваться, затем удаляться источником, а метаданные поддерживаются не одинаково на всех файловых системах. Не связывайте успешность только с исчезновением файла из исходной папки. Проверяйте наличие и размер в назначении, журнал облачного клиента и конфликты имён. Для критичных PDF используйте Copy, контроль результата и лишь затем отдельное удаление исходника.

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

Автоматическая очистка Корзины

Раздел Trash удаляет объекты, пролежавшие в Корзине дольше заданного срока, и может удерживать её размер ниже указанного количества мегабайт, гигабайт или доли диска. При превышении лимита старые элементы удаляются, а для отдельного слишком большого файла выбирается немедленное удаление или обычное помещение в Корзину. Эти настройки действуют шире правил PDF, поэтому срок должен учитывать реальные процессы восстановления, а не только желание освободить место.

Если Archive или Unarchive отправляет оригинал в Корзину, агрессивная автоматическая очистка сокращает возможность отката. Перед включением лимита проверьте, какие правила используют Корзину как промежуточную страховку. На SSD и зашифрованных томах безопасное стирание не даёт ожидаемой гарантии и может быть неприменимо; для конфиденциальных документов важнее шифрование носителя, права доступа и утверждённая политика уничтожения.

Функциям управления Корзиной нужен полный доступ к диску в настройках конфиденциальности macOS. Если очистка не выполняется, проверьте разрешение для Hazel и её вспомогательного процесса, затем перезапустите обработчик. Не добавляйте повторяющееся правило удаления поверх системной настройки, пока не выяснена причина: две независимые политики усложняют понимание, какой механизм удалил файл.

Настройки очистки Корзины и App Sweep в Hazel

App Sweep при удалении программ

App Sweep отслеживает перемещение программы в Корзину и предлагает удалить связанные файлы поддержки. В диалоге перечислены найденные элементы с путями и размерами; каждый флажок можно снять, а команды Keep All и Move to Trash определяют результат. Это не правило для PDF, но функция влияет на общую уборку системы. Перед удалением проверьте, не содержит ли поддерживающий каталог пользовательские шаблоны, базы или лицензии, которые понадобятся после повторной установки.

При нескольких учётных записях расширенный режим может искать связанные файлы пользователей, которые тоже включили такую возможность. Согласуйте это заранее: приложение, удалённое одним человеком, может обслуживать других. При возврате программы из Корзины Hazel способна предложить восстановление связанных файлов, но восстановление зависит от того, что они ещё не были окончательно удалены политикой очистки.

App Sweep ищет связи по метаданным и расположению, поэтому список нужно воспринимать как предложение, а не как безошибочный приговор. Оставляйте незнакомый крупный каталог, пока не выясните его назначение. Для рабочих PDF-процессов особенно осторожно относитесь к папкам OCR-движка, менеджера документов и сканера: в них могут храниться пользовательские профили, словари и очереди, а не только кэш.

Диалог App Sweep со связанными файлами программы

Практический сценарий: счета поставщиков

Создайте отдельную папку Счета входящие и направьте в неё вложения почты или загрузки. Первое правило исключает временные и нулевые файлы. Второе отбирает PDF, проверяет Contents на слово Счёт и ИНН вашей организации, затем шаблоном захватывает номер и дату. В Preview проверьте несколько поставщиков: метка может называться Счет №, Invoice или располагаться после номера, поэтому иногда нужны отдельные правила с общим конечным форматом.

Действие Rename формирует ГГГГ-ММ-ДД Поставщик № Номер.pdf. Sort into subfolder помещает документ в Финансы/Год/Месяц/Поставщик. Add tags назначает Счёт и Проверить. Не удаляйте входящий файл при первом запуске: переносите тестовые копии и сравните дату, номер и поставщика с изображением страницы. Ошибочно распознанная восьмёрка вместо тройки опаснее неудобного имени, потому что документ окажется в правдоподобной, но неверной ветке.

Отдельное нижнее правило ловит все оставшиеся PDF старше десяти минут и перемещает их в Не разобрано с уведомлением. Благодаря этому новый формат счёта не исчезает в общей папке и не попадает в случайный маршрут. После ручной классификации обновите шаблон, верните файл во входящую папку и повторите Preview. Такое правило-ловушка превращает молчаливый пропуск в управляемое исключение.

Практический сценарий: банковские выписки

Выписки часто защищены паролем и содержат одинаковые слова, поэтому сначала разделите источники по имени отправителя, Source URL или префиксу файла. Для каждого устойчивого пароля создайте отдельное правило и укажите Document Password. Условие Contents подтверждает банк и последние цифры счёта, а пользовательская дата извлекает период. Если пароль меняется ежемесячно, не храните цепочку старых секретов; направляйте новые документы в папку ручного доступа и обновляйте правило после подтверждения.

Переименование должно отражать период, а не дату загрузки: Банк Счёт 1234 2026-06.pdf. Если в документе есть две даты, захватывайте конкретное вхождение или используйте фиксированную метку рядом с периодом. После перемещения установите тег Выписка и блокировку. Выгрузку в бухгалтерскую систему запускайте отдельным действием или папкой, чтобы ошибка импорта не влияла на сохранение исходного PDF.

Не используйте OCR для выписки, у которой уже есть корректный текстовый слой, без причины: принудительное распознавание может иначе прочитать номера. Режим по необходимости сначала использует доступный текст. Проверяйте отрицательный пример другого счёта того же банка, иначе условие по общему логотипу и слову Выписка отправит документ не в ту папку.

Практический сценарий: сканы без текстового слоя

Сканер сохраняет документы в Scan Inbox с техническими именами. Первое правило ждёт две минуты после изменения и проверяет размер. Второе использует Contents с распознаванием по необходимости, ищет несколько опорных терминов и назначает тег по типу. Для документов, где Contents остаётся пустым или ключевые слова не найдены, нижнее правило перемещает файл в OCR Manual. Оно не должно удалять или переименовывать документ окончательно, потому что его тип ещё не подтверждён.

Если требуется полноценный поисковый PDF, правило запускает специализированный OCR-инструмент или Shortcut и передаёт результат в папку OCR Done. Hazel затем повторно проверяет Contents уже готового файла, переименовывает и архивирует. Не возвращайте результат в исходную папку с тем же именем: это может создать цикл, особенно если внешний инструмент обновляет дату изменения несколько раз. Отдельные вход и выход делают состояние понятным.

Для перевёрнутых, цветных и плохо выровненных страниц подготовьте набор контрольных файлов. Проверяйте, что распознанный номер устойчив, а не просто присутствует в одном примере. Если качество нестабильно, используйте OCR только для грубой классификации, а имя формируйте из даты добавления и счётчика; точный номер внесите после проверки. Автоматизация должна понижать риск ручной рутины, а не скрывать ошибки распознавания.

Практический сценарий: загрузки из браузера

Для Downloads создайте верхнее правило Ignore для частичных расширений и файлов, изменённых за последние минуты. Следующее правило отбирает PDF с известным Source URL или шаблоном имени, добавляет тег источника и переносит документ в тематическую папку. Source URL доступен не для каждой загрузки и может теряться при копировании, поэтому он должен дополнять, а не заменять проверку типа и содержимого.

Автоматическое Open допустимо только для доверенных доменов и ожидаемых документов. Без такого ограничения браузерная загрузка может сразу открыть неизвестный PDF. Для обычного потока безопаснее Show in Finder или уведомление. После классификации удаляйте только точные дубликаты, а одноимённые файлы сохраняйте с суффиксом: сайт может публиковать разные варианты отчёта под одинаковым названием.

Папку загрузок удобно очищать по возрасту, но общее правило всё старше недели — в Корзину ставят самым последним и исключают теги Сохранить и Проверить. Документы, не совпавшие с известными маршрутами, сначала перемещайте в архив временных загрузок. Это оставляет время обнаружить новый тип файла и не превращает ошибку классификации в потерю данных.

Практический сценарий: отчёты по проектам

Когда имя содержит код проекта, шаблон захватывает его как пользовательский текстовый атрибут. Custom Table сопоставляет код с названием клиента и относительным путём. Rename подставляет нормализованное название, а Sort into subfolder трактует возвращённый путь как структуру. Таблица избавляет от десятков правил, но ключи должны быть уникальными. Для нового проекта сначала добавьте строку таблицы и тестовый файл, затем разрешайте общий поток.

Если код присутствует и в имени, и в содержимом, повторно используйте тот же атрибут в условии Contents contain match. Правило сработает только при согласованном значении, что защищает от неверно названного файла. Для пакета документов можно использовать вложенное условие по содержащей папке или контрольному файлу. Не переносите папку проекта до завершения загрузки всех компонентов: добавьте маркер ready или проверку возраста каталога.

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

Практический сценарий: передача в редактор PDF

Hazel не меняет страницы, текст, формы и подписи внутри PDF. Зато она может определить, какой документ требует редактирования, и открыть его в профильной программе. Правило проверяет тег Редактировать, расширение и отсутствие тега В работе, затем добавляет последний тег и выполняет Open. После сохранения редактор помещает готовый документ в отдельную папку, где другое правило переименовывает его и удаляет рабочий тег.

Для задач вроде объединения страниц, удаления листов, постановки подписи или исправления текста используйте PDF-редактор. PDF Commander относится именно к этому классу, тогда как Hazel отвечает за обнаружение, маршрутизацию и запуск этапа. Такое разделение предотвращает ошибочное ожидание, что действие Contents изменит текст или что OCR для совпадения сделает документ поисковым.

При автоматическом открытии следите за повторным запуском. Условие тег В работе отсутствует и добавление тега перед Open делают правило однократным. Если редактор сохраняет файл на месте и меняет дату, Hazel увидит обновление, но тег остановит новый запуск. Отдельное правило может снять тег через заданный срок и уведомить о незавершённой работе, не открывая документ повторно.

Почему правило не совпадает

Сначала убедитесь, что выбрана правильная папка и файл находится на её верхнем уровне. Для вложенного документа требуется Run rules on folder contents или отдельное наблюдение за подпапкой. Проверьте флажок правила, состояние паузы и порядок списка. Если выше стоит более общее правило без Continue matching rules, оно может перехватить файл. Rule Status покажет фактическое совпадение, а Preview — результат каждой строки.

Для расширения вводите pdf без точки. Name не включает расширение, Full Name включает. Оператор matches требует полного совпадения, а contain match ищет фрагмент. Добавьте Anything к краям шаблона, если допускается дополнительный текст. Сопоставление не учитывает регистр, поэтому причина не в заглавной букве. При проверке даты уточните, какой атрибут меняет ваш источник: Date Added и Date Modified могут давать разные интервалы.

Если проблема в Contents, откройте поле текста в Preview. Пустое поле означает отсутствие извлекаемого текста, отказ распознавания, пароль или неподдерживаемый тип. Включите распознавание по необходимости либо укажите пароль, затем обновите просмотр. Если строка визуально есть, но не находится, ищите неразрывные пробелы, переносы, ошибочные символы OCR и другой дефис. Шаблон с несколькими устойчивыми токенами обычно надёжнее точной длинной фразы.

Почему действие не выполняется

Совпадение и действие диагностируются отдельно. Если правило зелёное, но Move не завершён, проверьте существование назначения, права записи, доступность тома и политику одинаковых имён. Перемещение в ту же папку или внутрь самого перемещаемого каталога логически некорректно. На облачном носителе дождитесь загрузки данных. Для Copy на файловую систему без части метаданных возможны дополнительные ограничения, поэтому сравните размер и откройте копию.

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

Для Upload проверьте протокол, порт, имя пользователя, начальный путь и запись секрета в связке ключей. Для SFTP убедитесь, что сервер принимает выбранный ключ. Для скрипта смотрите код возврата, абсолютные пути и права исполнения. Для Shortcut или Automator проверьте, что сценарий существует и принимает файл. Временная Pause не исправляет постоянную ошибку зависимости; она лишь откладывает следующий шаг.

Как остановить повторную обработку

Цикл возникает, когда действие меняет атрибут, по которому правило снова совпадает, либо возвращает файл в контролируемую папку. Самый простой предохранитель — тег состояния: условие требует отсутствия Обработано, а первое действие добавляет его. Для цепочек по папкам каждый этап имеет отдельный вход и выход. Date Last Matched ограничивает частоту, но не заменяет явное состояние, если действие может выполняться повторно после перезапуска.

Continue matching rules должен стоять только там, где нужны последующие правила. Если ни одно из них не меняет состояние, повторный ручной запуск снова применит цепочку. Скрипт-условие не должно переименовывать файл, а внешняя программа не должна сохранять результат в исходный каталог под новым именем без маркера. В тесте наблюдайте журнал несколько минут после первого действия, чтобы увидеть повторные события.

Когда цикл уже начался, приостановите папку или весь обработчик из меню состояния. Не пытайтесь редактировать правило, пока файлы продолжают перемещаться. Сохраните журнал, верните тестовые объекты из безопасной копии и исправьте условие. Возобновляйте сначала на одном файле. Если правило затронуло только имя, теги, комментарий, цвет или блокировку, контекстная команда Revert может вернуть поддерживаемые атрибуты; она не отменяет копии, загрузки и изменения во внешних программах.

Откат изменений и границы восстановления

Команда Revert в контекстном меню Finder возвращает поддерживаемые изменения атрибутов, выполненные Hazel: например, переименование или теги. Она не является общей отменой сценария. Копия в другой папке останется, отправленный на сервер файл не отзовётся, импорт в Photos или Music не отменится, а внешний редактор сохранит собственные изменения. Поэтому необратимые этапы должны иметь отдельную проверку и резервную копию.

Перед массовой миграцией экспортируйте правила и сделайте снимок исходной структуры. Для Move используйте тестовую копию нескольких подкаталогов, для Rename сохраните исходное имя в комментарии или таблице, для Archive проверьте содержимое ZIP до очистки Корзины. Откат проектируется заранее; наличие команды Revert не компенсирует замену существующего документа или удаление серверной копии.

Если требуется отменить обработку множества файлов, не запускайте обратное правило без списка фактических изменений. Сначала соберите кандидатов по тегу, дате последнего совпадения и целевой папке, сравните с журналом, затем выполните Preview. Обратный шаблон должен однозначно восстанавливать имя; если исходная часть была усечена, восстановление возможно только из сохранённого атрибута или резервной копии.

Разрешения и совместимость macOS

Для работы правил Hazel должна иметь доступ к контролируемым и целевым папкам. Защищённые области macOS, Корзина, внешние и сетевые тома могут потребовать отдельного разрешения. Если система показывает запрос, предоставляйте доступ только после проверки пути. При переносе папки или смене диска заново откройте назначение в редакторе: старая закладка безопасности может указывать на недоступный объект даже при одинаковом имени.

Функции управления Корзиной требуют Full Disk Access. Уведомления зависят от разрешения для компонента Hazel Notifier, а контекстные команды Finder — от расширения Finder. Если расширение конфликтует с поведением боковой панели внешнего диска, его можно отключить и пользоваться соответствующими командами из меню состояния. Отключение расширения не отменяет фоновые правила, но убирает контекстные функции Finder.

Для работы требуется macOS 13 Ventura или новее; универсальная сборка запускается на компьютерах Intel и Apple Silicon. Совместимость внешних AppleScript, Automator, командных утилит и PDF-редакторов проверяется отдельно: правило Hazel может быть корректным, а вызываемый компонент — нет. После крупного обновления системы протестируйте доступ к папкам, теги, Shortcuts, загрузку на сервер и уведомления на копиях файлов.

Ограничения при работе с PDF

Hazel анализирует и организует PDF, но не редактирует страницы, не исправляет текст, не объединяет документы, не заполняет формы и не создаёт электронную подпись. Действие Rename меняет имя файла, а Contents читает текст для условия. Это принципиальная граница: для операций внутри документа нужен редактор, командная утилита или Shortcut, который Hazel запускает как отдельный этап.

Распознавание текста не сохраняет результат в PDF. Оно повышает качество классификации сканов, но не делает архив доступным для поиска в других программах. Кроме того, результат OCR может содержать ошибки, и правило видит именно распознанную строку. Для юридически значимых номеров используйте дополнительные признаки и папку ручной проверки. Защищённые PDF требуют заранее известного пароля, причём в одном правиле задаётся один пароль.

Интерфейс и названия атрибутов представлены на английском. Пользовательские имена правил, заметки, шаблоны, теги и папки можно писать по-русски, но системные команды вроде Contents, Move, Sort into subfolder и Continue matching rules остаются английскими. Сложные шаблоны, вложенные условия и скрипты требуют внимательного тестирования; для простой сортировки лучше начинать с нескольких коротких правил, а не переносить всю логику в один экран.

Сравнение Hazel с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
HazelНепрерывный контроль папок, анализ содержимого PDF, шаблоны, теги, скрипты и серверная выгрузка на MacНе изменяет содержимое PDF и доступна только в macOS
File JugglerАвтоматическая сортировка документов в Windows по свойствам, имени и содержимомуРаботает только в Windows
DropItПеренос, копирование, архивирование и другие действия по ассоциациям и профилям в WindowsРаботает только в Windows
SpotlessБыстрая уборка папок macOS через цель перетаскивания и запуск правил по расписаниюОсновной акцент сделан на сортировке папок
organizeКроссплатформенная автоматизация файлов через проверяемые конфигурации YAML или JSONНет графического редактора правил

Hazel выбирают, когда нужен постоянно работающий набор визуальных правил для папок Mac, извлечение данных из имени или текста PDF и соединение с системными сценариями. File Juggler ближе всего по идее на Windows. DropIt удобнее для понятных ассоциаций и пакетных файловых операций, Spotless — для более простой уборки папок на Mac, а organize — для тех, кто предпочитает версионировать конфигурации и запускать автоматизацию из командной строки. Для изменения страниц и текста PDF нужен отдельный редактор; файловый автоматизатор лишь передаёт ему документ.

Как спроектировать надёжный набор правил

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

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

Устойчивый набор не зависит от одного нестабильного признака. Имя подтверждается содержимым, распознанный номер — кодом организации, серверная отправка — тегом готовности и размером, ручной запуск — отсутствием тега завершения. Таблицы и списки выносят изменяемые соответствия из логики. Заметки объясняют парольные маршруты и внешние зависимости. Экспорт правил хранится рядом с документацией процесса, но без секретов.

После изменения тестируйте минимум четыре файла: обычный положительный, отрицательный похожего вида, документ с отсутствующим атрибутом и файл с конфликтующим именем в назначении. Для OCR добавьте плохой скан, для облака — объект-заполнитель, для Upload — временно недоступный сервер. Проверка ошибок показывает, сохраняется ли исходник и формируется ли понятная очередь, а не только то, как выглядит идеальный результат.

Контрольный список перед массовым запуском

  • Контролируемая папка содержит только ожидаемый входящий поток или строгие исключения.
  • Правила расположены от частных исключений к общим маршрутам.
  • Каждый шаблон проверен в Preview на положительном и отрицательном файле.
  • Политика одинаковых имён не заменяет документы без подтверждённой необходимости.
  • Распознавание PDF используется для классификации, а поисковый слой создаёт отдельный OCR-инструмент.
  • Пароль задан только в специализированном правиле и проверен на копии документа.
  • Внешние пути, сценарии, Shortcuts и серверные учётные данные доступны фоновому процессу.
  • Для циклических сценариев есть тег состояния, отдельная выходная папка или Date Last Matched.
  • Корзина не очищается раньше срока, необходимого для проверки архива и отката.
  • Все нераспознанные PDF попадают в заметную папку ручной проверки.

После запуска наблюдайте Rule Status и журнал до тех пор, пока через поток не пройдут все типовые документы. Затем проверяйте очередь исключений по расписанию и обновляйте таблицы соответствий при появлении новых проектов и отправителей. Хорошо настроенная схема не скрывает неизвестный файл и не пытается угадать любой формат: она автоматически обрабатывает подтверждённые случаи, а сомнительные сохраняет без потери данных и с понятной причиной остановки.