Как сравнить есть ли уже такой файл в базе или нет?
Вести базу MD5 и SHA1 хешей для всех файлов, при добавлении нового файла высчитываем для него эти хеши и смотрим по базе, нет ли у нас файла. у которого оба хеша совпали, если есть - значит такой файл уже загружен и можно его повторно не загружать.
с точностью совпадения, допустим в 99%.
Вот посмотрите Как сравнить два текста в JS? .  https://stackoverflow.com/questions/5042873/javasc...

Проверку на хеш в вашем случае тоже можно делать, т.к. pdf довольно редко редактируют и все передают одну и ту же книгу.

Есть несколько сотен тысяч PDF файлов. 
Это реальная проблема или просто от нечего делать придумали? Слишком мало информации по самим документам. в некоторых сферах, где много типовых отчетов это обычное дело когда документ на 95% похож на другой, поменяться может например только одна цифра в дате, и такой документ нельзя будет отбраковывать. И из пдфа вы не всегда можете извлечь текст для сравнения. В общем довольно много подводных камней. Поэтому стоит более конкретно определиться с задачей.

upd: в общем есть еще такая особенность, что нужно правильно выбрать средство для извлечения текста, т.к. многие средства извлекают не всегда весь текст. Ну и еще интересно как быстро вы сравните 1 pdf со 200-300к других pdf, как по мне затраты на этот процесс будут слишком большими. Можно конечно сравнить только часть текста. Да кстати, извлечение текста из pdf медленный процесс, текст из некоторых страниц может извлекаться больше секунды на обычных процах (тестил на документах в 600-700 страниц), я пользовался только некоммерческими решениями, возможно вы найдете что-то быстрее, но парсить pdf вам придется явно не на ноде, т.к. это слишком медленно будет.