Для больших онлайн-библиотек актуальна проблема поиска дублей PDF и DjVu книг.
То есть, это когда один и тот же DjVu-файл (к примеру) имеется под разными именами в собственной коллекции книг.
Наиболее часто такое бывает, когда набираешь из разных источников электронные книги.
Возникает вопрос: как отыскать дубли (чтобы убрать дублирующие файлы)? Можно попробовать поискать по контрольной сумме (MD5). Или по содержимому OCR-слоя. Но, вообще-то, OCR-слоя может и не быть в общем случае.
Самый тяжелый случай - отыскать не абсолютные дубли - а похожие. Например, случай, когда в одной DjVu-книге нет OCR-слоя - а в другой есть. У таких двух DjVu-книг уже будет разный MD5. Или когда есть 2 книги: одна (исходная) в плохом качестве - и она же, но переделанная с улучшением.
Я сегодня случайно наткнулся на программу по поиску дублей картинок. Причём она ищет не просто полные дубли - а умеет искать ПОХОЖИЕ картинки (!) - используя для сравнения некий математический алгоритм.
Вот статья по этой программе:
http://www.codeproject.com/KB/graphics/cbir.aspxЯ скомпилировал эту программу (в MS VC++ 6.0):
http://www.djvu-soft.narod.ru/soft/cbir.rar (499 КБ)
Она работает с JPEG-файлами и на базе библиотеки CxImage. Но это не проблема - можно прикрутить туда взамен FreeImage и поддержку любых форматов.
Программа на пробу сработала верно - и нашла полный дубль картинки.
Причём, как сказано в статье, это ещё самая простейшая программа из этой области (поиск дублей картинок). Но даже и такой простейшей программой уже можно реально пользоваться.
Я мог бы добавить в эту программу поддержку DjVu. И тогда ею можно было бы искать дубли DjVu. Аналогично - и с PDF (но потрудней, конечно).