Сравнение двух PDF-документов, которые являются цифровыми факсами - PullRequest
1 голос
/ 03 декабря 2009

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

Мы получаем большое количество входящих факсов (более 500 страниц в день) в виде отдельных документов (около 100+ документов в день). Довольно часто отправитель (будучи в больнице) отправляет один и тот же документ через пару часов после первой попытки. Я хотел бы пометить вторую передачу как «потенциальный клон», чтобы ее можно было соответствующим образом маршрутизировать и помечать.

Я хочу знать, как я могу вычислить и пометить с помощью какого-либо хэша или идентификатора для каждого прибывающего факса (PDF / TIFF), а затем быстро выполнить сканирование в нашей базе данных документов, чтобы определить, является ли он уникальным или нет.

Очевидно, что нет никакого способа не выглядеть уверенным на 100%, но мне кажется, что один факс будет таким же, как другой, если:

  • То же количество страниц
  • Отправлено в течение 24 часов после оригинала
  • Хеш-код похож (в пределах порога)

Но я немного застрял в сравнении изображений. Я ищу пороговый хэш-код или какой-то способ сказать, что «изображения на p4 каждого факса с вероятностью 95% будут одинаковыми». Например, возможно, что p4 исходного факса было искажено, но p4 вновь отправленного факса является прямым. Я думал о том, чтобы сначала пропустить все страницы факса через что-то вроде ClearImage Repair от Inlite Research, чтобы выровнять, повернуть и откалибровать все страницы.

Кто-нибудь делал что-то подобное?

Ответы [ 4 ]

2 голосов
/ 03 декабря 2009

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

2 голосов
/ 03 декабря 2009

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

Измерение сходства (правдоподобного дубликата) между документами, вероятно, потребует либо их оптического распознавания, либо иного сравнения (если нечетко) их содержания изображения (т.е. после распаковки).

Редактировать: Предложения по HASH-коду для обнаружения дубликатов

Очень условно следующие атрибуты документа могут быть объединены в какое-то хеш-значение, способное обеспечить хорошее указание на вероятное дублирование:

Эти атрибуты должны быть получены для каждой отдельной страницы , причина в том, что страницы являются однозначными пределами, поэтому, будучи «жесткими» в этих пределах, мы можем позволить более мягкие (нечеткие) измерения в содержимом страницы.
Не все следующие атрибуты будут необходимы. Они обычно перечислены от более простых, чтобы добраться до тех, которые требуют больше программирования.

  • характеристика объектов на уровне PDF
    (для каждой страницы!)
    • размер, т.е. число октетов
    • размерность (ширина и высота; даже если используется один и тот же формат «буква», фактическое сканирование приводит к разному размеру изображения
  • текст OCR
  • Характеристики изображения (соотношение черного / белого, ...)

Что касается «хэша», он должен быть максимально широким, в идеале хеш переменной длины, сделанный из добавления, скажем, 32-битных или 64-битных хэшей, по одному на страницу.

1 голос
/ 03 декабря 2009

Если документы в основном текстовые, распознавание их является хорошей идеей. Сравнивать текст просто.

Можно сделать вычисление «расстояния», я полагаю, но что, если факс отправляется в обратном порядке во второй раз? Или они увеличили его, чтобы сделать его более разборчивым?

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

0 голосов
/ 03 декабря 2009

Я думаю, что библиотека OpenCV - это то, что вы ищете. Если я правильно помню, у него есть инструменты сходства изображений. Либо с помощью распознавания наземных ориентиров и методов частотной области. Приблизительное хэширование в частотной области возможно без особых проблем с небольшими различиями изображений.

...