Как отличить PDF-файл, созданный в цифровом виде, от PDF-файла с возможностью поиска?
В настоящее время я анализирую набор файлов PDF. Я хочу знать, сколько файлов PDF попадает в эти 3 категории:
- Цифровой PDF-файл: текст присутствует (копируется), и он гарантированно правильный, поскольку он был создан непосредственно, например, из Word
- PDF только с изображениями: отсканированный документ.
- PDF с возможностью поиска: отсканированный документ, но был использован механизм распознавания текста. Система оптического распознавания текста помещает текст «под» изображением, чтобы вы могли искать / копировать контент. Поскольку распознавание текста довольно хорошее, в большинстве случаев это верно. Но не гарантируется, что это будет правильно.
В моем домене легко определить PDF-файлы, содержащие только изображения, поскольку каждый PDF-файл содержит текст. Если я не могу извлечь какой-либо текст, это только изображение. Но как мне узнать, является ли это «просто» PDF-файл с возможностью поиска или это PDF-файл, созданный цифровым способом?
Между прочим, это не так просто, как просто посмотреть на производителя, поскольку я видел отсканированные документы, где в поле «Производитель» было написано «Microsoft Word».
Примечание: для человека это легко. Я просто увеличиваю текст. Если я вижу пиксели, это "просто" для поиска.
Вот 3 примера PDF-файлов для тестирования решений:
- Цифровой PDF-файл
- Отсканированный PDF-файл : Ну .. не совсем; Я использовал сценарий для создания изображений, а затем объединял их в PDF. Но это означает лишь то, что качество очень хорошее. Это должно быть очень похоже на сканирование.
- PDF с возможностью поиска
Что я пробовал / думал о чем
- Использование создателя / производителя : я вижу "Microsoft Word" в отсканированных документах. Также это было бы утомительно.
- Встроенные шрифты : вы можете извлекать встроенные шрифты . Идея заключалась в том, что отсканированный документ не будет иметь встроенных шрифтов, а просто будет использовать стандартные шрифты. Идея была ошибочной, как видно на примере.
Ответы
С PyMuPDF вы можете легко удалить весь текст, как требуется для предложения @ypnos.
В качестве альтернативы с помощью PyMuPDF вы также можете проверить, скрыт ли текст в PDF-файле. В соответствующем «мини-языке» PDF это запускается командой 3 Tr
(«режим визуализации текста», например, см. Стр. 402 вhttps://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf). Таким образом, если весь текст находится под воздействием этой команды, он не будет отображаться, что позволяет сделать вывод «это страница с оптическим распознаванием текста».