У меня есть большое количество PDF-файлов в разных форматах.Помимо прочего, мне нужно извлечь их заголовки (не название документа, а заголовок в тексте).Из-за разнообразия форматов заголовки не находятся в тех же местах в PDF-файлах.Кроме того, некоторые PDF-файлы на самом деле являются отсканированными изображениями (мне нужно использовать OCR / оптическое распознавание символов на них).Заголовки иногда бывают одной строкой, иногда 2. Они не имеют одинакового набора слов.В диапазоне физических местоположений заголовки обычно отображаются, часто есть другие слова (то есть, если документ 1 имеет заголовок 1 в x1, y1, документ 2 может иметь заголовок 2 в x2, y2, но иметь другой текст без заголовка в x1 y1).Кроме того, в некоторых очень редких случаях PDF-файлы не имеют заголовка.
До сих пор я мог использовать pdftotext для извлечения текста из заданного ограничивающего прямоугольника и преобразования его в текстовый файл.Если есть заголовок, это позволяет мне захватить заголовок, но часто с другими посторонними словами.Это также работает только в PDF-файлах без изображений.Мне интересно, если а) есть хороший способ идентифицировать заголовок среди всех слов, которые я извлекаю для документа (потому что часто встречаются посторонние слова), в идеале с хорошим способом определить, что заголовок не существует, и б) еслиЕсть любые инструменты, эквивалентные pdftotext, которые также будут работать с отсканированными изображениями (у меня действительно работает скрипт ocr, но он работает над всем изображением, а не над его частью).
Один из методов, который несколько решает дилемму заголовка, состоит в том, чтобы извлечь слова в ограничивающей рамке, использовать оставшуюся часть документа, чтобы определить, какие из слов ограничивающей рамки являются ключевыми словами для документа, и построить заголовок изключевые слова.Это не извлечет фактический заголовок, но может дать слова, которые могли бы создать разумную альтернативу.Я уже извлекаю ключевые слова для других частей проекта, но я бы определенно предпочел извлечь фактическое название, так как люди могут использовать дословное название для целей поиска.
Еще одно замечание, если неясно - я пытаюсь сделать это программно с помощью инструментов с открытым исходным кодом / бесплатно, в идеале на Python, и у меня будет большое количество документов (более 10000).