Извлечение верхних и нижних колонтитулов (текст повторяется на каждой странице) из документов

#python #algorithm

#python #алгоритм

Вопрос:

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

Я знаю о difflib.SequenceMatcher class и подобных инструментах, но в основном это работает с парой строк. Но я хочу использовать тот факт, что в документе много страниц, а не просто выполнять парные сравнения.

Меня интересует как эффективный алгоритм, так и возможные инструменты python, если таковые имеются. Спасибо за любую подсказку.

Ответ №1:

Существует библиотека python PyMuPDF , которая может помочь вам с вашей проблемой. Прежде всего, он ничего не знает о верхних и нижних колонтитулах, но вы можете извлечь из него большой словарь метаданных и проанализировать его. У меня была такая же проблема, когда я хотел извлечь только заголовки файла PDF для каждой страницы. Я использовал эти метаданные, которые содержали информацию о тексте, такую как размер шрифта и название шрифта. В моем случае размер шрифта каждого заголовка был больше по сравнению с другими текстами на той же странице, поэтому я использовал эту информацию для извлечения.

Комментарии:

1. Спасибо, @Sharmiko, иногда это может быть полезно, но я в основном говорю о отсканированных документах, которые содержат только изображения и текстовый слой ocr-ed (невидимый). Информация о шрифте может зависеть от качества распознавания и конфигурации, но я бы не стал слишком полагаться на ti. И меня действительно интересует алгоритм, который на 100 страницах находит «наиболее часто повторяющиеся фрагменты». Однако для «цифровых» PDF-файлов ваше предложение будет определенно полезным.