
Как Перцептивное Хеширование Находит Дублирующиеся Комиксы Даже После Переименования
1 июня 2026 г.
Как перцептивное хеширование находит дублирующиеся комиксы даже после переименования
Вы переименовали файл. Перекомпрессировали архив. Скачали тот же том из другого источника. По любым стандартным меркам это теперь "разные" файлы — разные имена, разные контрольные суммы, разные размеры.
Тем не менее комикс внутри тот же. Каждая страница та же. И если вы пытаетесь навести порядок в своей цифровой библиотеке, именно эти почти идентичные дубликаты ускользают от стандартных инструментов поиска.
Именно эту проблему решает перцептивное хеширование — и это техника, лежащая в основе Comic Duplicate Scanner.
Почему стандартное сравнение файлов не справляется
Большинство инструментов для поиска дубликатов вычисляют контрольную сумму каждого файла и отмечают файлы с одинаковыми суммами. Это работает идеально для точных копий.
Но для архивов комиксов этот подход пропускает самые распространённые дубликаты в реальной жизни:
| Сценарий | Одинаковые суммы? | На самом деле дубликат? |
|---|---|---|
| Копия с другим именем | Нет | Да |
| Перекомпрессирован с другим качеством | Нет | Да |
| Переупакован с другой структурой | Нет | Вероятно, да |
| Скачан из двух разных источников | Нет | Часто да |
| Точная побайтовая копия | Да | Да |
Что вместо этого делает перцептивное хеширование
Перцептивный хеш — короткий отпечаток, вычисленный на основе визуального содержимого изображения, а не байтов файла. Наиболее широко используемый алгоритм, pHash, работает примерно так:
- Уменьшает изображение до небольшого фиксированного размера (например, 32×32 пикселя)
- Преобразует в оттенки серого
- Применяет дискретное косинусное преобразование (ДКП)
- Сохраняет низкочастотную часть — она фиксирует общую структуру
- Сравнивает каждое значение с медианой, получая битовую строку
Два изображения с похожим визуальным содержимым дают хеши с малым расстоянием Хэмминга.
Два важных свойства следуют непосредственно из этих шагов:
- Разрешение не имеет значения. Шаг 1 изменяет размер каждого изображения до одной и той же фиксированной сетки перед любыми вычислениями. Скан на 1200px и скан на 3000px одной и той же страницы оба превращаются в одинаковую миниатюру 32×32 и дают одинаковый хэш.
- Цветовой режим не имеет значения. Шаг 2 конвертирует в оттенки серого перед сравнением. Цветной скан и скан в оттенках серого одной и той же страницы дают почти идентичные хэши, потому что алгоритм анализирует только яркостную структуру, а не значения цвета.
Два важных свойства следуют непосредственно из этих шагов:
- Разрешение не имеет значения. Шаг 1 изменяет размер каждого изображения до одной и той же фиксированной сетки перед любыми вычислениями. Скан на 1200px и скан на 3000px одной и той же страницы оба превращаются в одинаковую миниатюру 32×32 и дают одинаковый хэш.
- Цветовой режим не имеет значения. Шаг 2 конвертирует в оттенки серого перед сравнением. Цветной скан и скан в оттенках серого одной и той же страницы дают почти идентичные хэши, потому что алгоритм анализирует только яркостную структуру, а не значения цвета.
Как Comic Duplicate Scanner применяет это
Comic Duplicate Scanner применяет перцептивное хеширование на уровне архива:
- Извлечение — открывает каждый CBZ или CBR и читает внутренние изображения
- Хеширование каждой страницы — каждая страница получает перцептивный хеш
- Сравнение — строит индекс схожести и находит архивы с высокой долей совпадающих страниц
- Оценка — присваивает степень достоверности совпадения
Когда 90% страниц двух архивов совпадают, вероятность ложного срабатывания падает почти до нуля.
Практические случаи
Случай 1: Скачаны HxH_v12_en.cbz с одного сайта и Hunter_X_Hunter_Volume_12.cbz с другого. Сравнение сумм: нет совпадения. Перцептивное хеширование: практически идентичные страницы → отмечен как дубликат.
Случай 2: CBZ пропущен через компрессор, каждый JPEG сжат до 80% качества. Контрольные суммы изменились. Перцептивное хеширование: визуально идентичны → обнаружен.
Случай 3: Страницы переименованы внутри (001.jpg против page_001.jpg). Перцептивное хеширование не смотрит на внутренние имена → всё равно обнаружен.
Случай 5: Цветной скан против чёрно-белого скана У вас есть две копии одного и того же тома манги: одна — цветной скан из ранней цифровой издания, другая — скан в оттенках серого из более позднего переиздания. Разные размеры файлов, разная глубина цвета, разный визуальный вид. Но поскольку dHash конвертирует в оттенки серого перед хэшированием, обе копии сводятся к одному и тому же отпечатку яркости → помечаются как дубликаты. Это случай, который почти все остальные детекторы дубликатов полностью упускают.
Случай 5: Цветной скан против чёрно-белого скана У вас есть две копии одного и того же тома манги: одна — цветной скан из ранней цифровой издания, другая — скан в оттенках серого из более позднего переиздания. Разные размеры файлов, разная глубина цвета, разный визуальный вид. Но поскольку dHash конвертирует в оттенки серого перед хэшированием, обе копии сводятся к одному и тому же отпечатку яркости → помечаются как дубликаты. Это случай, который почти все остальные детекторы дубликатов полностью упускают.
Ограничения перцептивного хеширования
Значительные визуальные изменения нарушат совпадение. Лёгкие водяные знаки или незначительная обрезка обычно не влияют.
Изображения очень низкого разрешения ненадёжны.
Манга с похожим стилем рисунка. Возможны редкие ложные срабатывания — интерфейс проверки позволяет просматривать миниатюры перед удалением.
Использование Comic Duplicate Scanner
Comic Duplicate Scanner — нативное приложение для Mac, которое перемещает выбранные дубликаты в Корзину (не постоянное удаление).
После очистки библиотеки используйте BiblioFuse на iPhone для единого источника чтения.