Извлечение оглавления из PDF-файлов

Вопрос или проблема

У меня есть довольно большая личная библиотека с книгами в различных форматах. Я пытался организовать их метаданные, включая текстовое поле, содержащее оглавления. В настоящее время я использую функцию «Выбор области текста» в своем читалке документов, чтобы копировать текст. Делая это для DJVU с помощью djview, я получаю хорошо отформатированные оглавления, такие как это:

ОГЛАВЛЕНИЕ
1. ЭКСПЕРИМЕНТЫ
1.1. Определение эксперимента ..... 1
1.2. Алгебры событий как булевы алгебры .... 6
1.3. Операции с экспериментами ...... 9
1.4. Каноническое представление многочленов событий . . 12
....

Я подчеркиваю, что все, что я сделал, это провел мышью по странице и нажал «Копировать текст». Если я пробую это с PDF, структура полностью теряется, и я должен потратить некоторое время на очистку выделенного текста, перемещая номера страниц и разделов. Я могу получить что-то вроде этого:

Оглавление
I
 Введение
1
 Введение
1.1
 Оглавление
1.2
 Благодарности
1
3
3
6
II
....

Я ищу PDF-читалку, которая могла бы аналогично копировать текст, но с сохранением «структуры». То, что читатели DJVU имеют эту возможность, говорит мне, что это должно быть возможно.

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

Я ищу PDF-читалку, которая могла бы аналогично копировать текст, но с сохранением «структуры». То, что читатели DJVU имеют эту возможность, говорит мне, что это должно быть возможно.

Но вы ошибаетесь, в общем: документы DJVU содержат больше оригинальных метаданных; особенно, если у вас есть DJVU книги, велика вероятность, что это напрямую сгенерировано из TeX или ROFF источника, из которого была составлена эта книга, и сохраняет эту структурную информацию.

PDF, с другой стороны, часто просто «вы ставите эту букву сюда, а следующую букву именно там, а следующую букву именно там…», так что PDF-просмотрщику приходится делать больше «предположений» о том, как текла текст, когда вы выбираете, копируете и вставляете. И, очень типично, PDF-просмотрщики просто выбирают все глифы в порядке производства PDF (подумайте о PDF как о чем-то, что производит видимый вывод, а не о простом тексте с информациями о форматировании) между первым символом, который вы пересекли, когда начали выделение, и последним символом, когда вы остановились. Если ваше оглавление фактически хранится по столбцам, то это может удивительно поставить все из первого столбца, в вашем примере, «I», «1», … сначала, а затем второй столбец.

Например, когда вы берете эту страницу (из 802.11-2012.pdf),

Оригинал

и выбираете от первого «1.» до где-то за «Определения…», вы получаете следующее в atril:

выделение atril

и следующее в okular:

выделение okular

Так что структура, на которую вы надеетесь, просто отсутствует в документе, и два разных просмотрщика уже по-разному интерпретируют ваше намерение при выборе содержимого. И оба неверно.

okular имеет выбор “прямоугольник”, который по сути делает то же самое, что и обычный текстовый выбор, но исключает любые символы, которые не должны были быть в прямоугольнике. Так что, хотя он включает только правильные вещи, он не дает вам правильный порядок.

Теперь это не значит, что нет одного просмотрщика, который был бы лучше других, в общем. Но мой опыт показывает, что на самом деле существует столько же различных попыток сделать правильное дело, сколько разных PDF-движков, и с тем количеством вариаций, которые вы получаете, нет явного победителя. В то время как выше atril был «менее неправ» по сравнению с okular, тот же эксперимент с оглавлением CCSDS 131.0-B-3 «голубой книги» дает довольно нелепое:

atril делает вещи неправильно

где область выбора okular работает несколько лучше

Единственный просмотрщик, который сработает чаще всего, но раздражает использовать, потому что не позволяет начинать выделение внутри чего-либо, что является гиперссылкой в PDF (и большинство записей оглавления, по своей сути, являются гиперссылками) — это (к сожалению?) встроенный PDF-просмотрщик браузера chromium. Так что, может быть, попробуйте это!

Ищу в системе Ubuntu 24.04.1 LTS инструменты командной строки для извлечения текста из файла PDF.

Использовал USB Type-C Spec R2.4 - October 2024.pdf, для которого GNOME Document Viewer 46.3.1 отображает содержимое как:

Содержимое USB Type-C Spec R2.4

pdf2txt

pdf2txt версия v20221105 выводит необработанный текст на оглавлении:

^LВыпуск 2.4 
Октябрь 2024 

- 3 - 

Спецификация кабеля и 
разъема USB Type-C® 

1.1 
1.2 
1.3 
1.4 

Оглавление 
Редактор спецификации ...................................................................................................................................................................................... 18 
Участники рабочей группы спецификации .............................................................................................................................................. 18 
Компании, проверяющие заранее выпущенные проекты, которые предоставили отзывы ..................................................................... 26 
История изменений ............................................................................................................................................................................................. 27 
Введение .......................................................................................................................................................................................... 28 
1 
Цель ........................................................................................................................................................
................................ 28 
Объем ............................................................................................................................................................................................. 28 
Связанные документы ................................................................................................................................................................. 28 
Конвенции ................................................................................................................................................................................ 29 
1.4.1  Приоритет ............................................................................................................................................................................ 29 
1.4.2  Ключевые слова ............................................................................................................................................................................... 29 
1.4.3  Нумерация............................................................................................................................................................................. 30 
Термины и сокращения ..................................................................................................................................................... 30 
Обзор ................................................................................................................................................................................................ 36 
Введение ............................................................................................................................................................................... 36 
Разъемы, вилки и кабели USB Type-C .................................................................................................................. 37 
Процесс конфигурации ............................................................................................................................................................ 38 
2.3.1  Детекция подключения/отключения от источника к приему ......................................................................................................... 39 
2.3.2  Определение ориентации вилки/поворота кабеля .................................................................................................................. 39 
2.3.3 

Затем в извлеченном тексте номера разделов и названия и номера страниц не всегда совпадают. Т.е. pdf2txt не помогает.

pdftotext

pdftotext версия 24.02.0 производит следующий текст:

-3-

Спецификация кабеля и
разъема USB Type-C®

Оглавление
Редактор спецификации ......................................................................................................................................................................................18
Участники рабочей группы спецификации ..............................................................................................................................................18
Компании, проверяющие заранее выпущенные проекты, которые предоставили отзывы .....................................................................26
История изменений .............................................................................................................................................................................................27
1

Введение ..........................................................................................................................................................................................28
1.1

Цель ........................................................................................................................................................................................28

1.2

Объем .............................................................................................................................................................................................28

1.3

Связанные документы .................................................................................................................................................................28

1.4

Конвенции ................................................................................................................................................................................29

1.4.1

Приоритет ............................................................................................................................................................................29

1.4.2

Ключевые слова ...............................................................................................................................................................................29

1.4.3

Нумерация.............................................................................................................................................................................30

pdftotext кажется лучше справляется с упорядочиванием номеров разделов и названий и номеров страниц, чем pdf2txt, но, возможно, все равно требует некоторой ручной последующей обработки.

Другой ответ уже объяснил, что формат PDF-документа не предназначен для возврата к исходному тексту в согласованном порядке, что объясняет ограничения таких инструментов.

Ответ или решение

Извлечение содержания из PDF-документов: полное руководство

Извлечение содержания (Содержание) из PDF-файлов может показаться простой задачей, но на практике она может подвести пользователя к серьезным трудностям. Во многих случаях структура текста теряется, что приводит к путанице с номерами страниц и заголовками разделов. В этой статье мы рассмотрим, как извлечь содержание из PDF-документов, какие инструменты использовать и какие проблемы могут возникнуть в процессе.

1. Проблемы с форматированием

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

2. Сравнение инструментов

Несколько инструментов могут помочь в извлечении содержания из PDF-документов. Мы рассмотрим два самых популярных: pdftotext и pdf2txt.

2.1. pdftotext

pdftotext — это часть пакета Poppler и предоставляет среду командной строки для извлечения текста из PDF. При тестировании на документе USB Type-C Spec R2.4 - October 2024.pdf, результаты были довольно неплохими, однако, все равно требовали некоторой ручной доработки:

Contents
Specification Editor .......................................................... 18
Specification Work Group Contributors .............................. 18
Revision History ................................................................. 27
...

Несмотря на явный порядок, при извлечении текста остаются ошибки с расположением заголовков и номеров страниц.

2.2. pdf2txt

pdf2txt — инструмент, входящий в состав библиотеки pdfminer. Его работа с тем же документом показала более "сырой" характер:

^LRelease 2.4
October 2024 

Contents 
Specification Editor .................................................................. 18
...

Вывод носил менее структурированный вид, и пользователю, вероятно, придется проводить дополнительные корректировки.

3. Поиск идеального PDF-читалки

Для пользователей, предпочитающих графические интерфейсы, PDF-читалки могут предложить более удобный опыт. Например, браузерные PDF-ридеры, такие как встроенный в Chromium, могут извлечь содержание с меньшими проблемами в размещении:

  • Ключевая особенность: Обычные PDF-ридеры формируются на основе концепции отображения и могут игнорировать внутреннюю структуру документа.

Сравнительно с более традиционными инструменты, эти ридеры могут иногда показать лучшую структуру текста при выделении.

4. Заключение

Извлечение содержания из PDF-документов — задача, требующая терпения и экспериментов с разными инструментами. pdftotext и pdf2txt могут быть полезными, хотя они не всегда дают идеальные результаты. Браузерные PDF-читалки тоже представляют интерес как удобные решения.

Если ваша работа требует регулярного извлечения содержания, возможно, стоит рассмотреть возможность использования обоих подходов и комбинировать результаты. Помните, что даже если вы получите не совсем идеальный вывод, результаты так или иначе могут быть скорректированы от руки.

SEO-элементы

  • Ключевые слова: извлечение содержания, PDF-документы, pdftotext, pdf2txt, PDF-читалки.
  • Заголовки структурированы для легкой навигации и SEO-оптимизации.

Данная статья поможет вам выбрать правильный инструмент для извлечения содержания из PDF-документов, а также повысить вашу продуктивность в работе с документами.

Оцените материал
Добавить комментарий

Капча загружается...