Как отличить PDF-файл, созданный в цифровом виде, от PDF-файла с возможностью поиска?

Aug 19 2020

В настоящее время я анализирую набор файлов PDF. Я хочу знать, сколько файлов PDF попадает в эти 3 категории:

  • Цифровой PDF-файл: текст присутствует (копируется), и он гарантированно правильный, поскольку он был создан непосредственно, например, из Word
  • PDF только с изображениями: отсканированный документ.
  • PDF с возможностью поиска: отсканированный документ, но был использован механизм распознавания текста. Система оптического распознавания текста помещает текст «под» изображением, чтобы вы могли искать / копировать контент. Поскольку распознавание текста довольно хорошее, в большинстве случаев это верно. Но не гарантируется, что это будет правильно.

В моем домене легко определить PDF-файлы, содержащие только изображения, поскольку каждый PDF-файл содержит текст. Если я не могу извлечь какой-либо текст, это только изображение. Но как мне узнать, является ли это «просто» PDF-файл с возможностью поиска или это PDF-файл, созданный цифровым способом?

Между прочим, это не так просто, как просто посмотреть на производителя, поскольку я видел отсканированные документы, где в поле «Производитель» было написано «Microsoft Word».

Примечание: для человека это легко. Я просто увеличиваю текст. Если я вижу пиксели, это "просто" для поиска.

Вот 3 примера PDF-файлов для тестирования решений:

  • Цифровой PDF-файл
  • Отсканированный PDF-файл : Ну .. не совсем; Я использовал сценарий для создания изображений, а затем объединял их в PDF. Но это означает лишь то, что качество очень хорошее. Это должно быть очень похоже на сканирование.
  • PDF с возможностью поиска

Что я пробовал / думал о чем

  • Использование создателя / производителя : я вижу "Microsoft Word" в отсканированных документах. Также это было бы утомительно.
  • Встроенные шрифты : вы можете извлекать встроенные шрифты . Идея заключалась в том, что отсканированный документ не будет иметь встроенных шрифтов, а просто будет использовать стандартные шрифты. Идея была ошибочной, как видно на примере.

Ответы

2 JorjMcKie Aug 20 2020 at 14:47

С PyMuPDF вы можете легко удалить весь текст, как требуется для предложения @ypnos.

В качестве альтернативы с помощью PyMuPDF вы также можете проверить, скрыт ли текст в PDF-файле. В соответствующем «мини-языке» PDF это запускается командой 3 Tr(«режим визуализации текста», например, см. Стр. 402 вhttps://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf). Таким образом, если весь текст находится под воздействием этой команды, он не будет отображаться, что позволяет сделать вывод «это страница с оптическим распознаванием текста».