Вопрос или проблема
У меня есть довольно большая личная библиотека с книгами в различных форматах. Я пытался организовать их метаданные, включая текстовое поле, содержащее оглавления. В настоящее время я использую функцию «Выбор области текста» в своем читалке документов, чтобы копировать текст. Делая это для 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
:
и следующее в okular
:
Так что структура, на которую вы надеетесь, просто отсутствует в документе, и два разных просмотрщика уже по-разному интерпретируют ваше намерение при выборе содержимого. И оба неверно.
okular
имеет выбор “прямоугольник”, который по сути делает то же самое, что и обычный текстовый выбор, но исключает любые символы, которые не должны были быть в прямоугольнике. Так что, хотя он включает только правильные вещи, он не дает вам правильный порядок.
Теперь это не значит, что нет одного просмотрщика, который был бы лучше других, в общем. Но мой опыт показывает, что на самом деле существует столько же различных попыток сделать правильное дело, сколько разных PDF-движков, и с тем количеством вариаций, которые вы получаете, нет явного победителя. В то время как выше atril
был «менее неправ» по сравнению с okular
, тот же эксперимент с оглавлением CCSDS 131.0-B-3 «голубой книги» дает довольно нелепое:
где область выбора 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 отображает содержимое как:
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-документов, а также повысить вашу продуктивность в работе с документами.