Мне нужно получить тысячи фрагментов текста из PDF-файлов в электронную таблицу. Они короткие, редко больше, чем 2-3 строки, но каждый разрыв строки создает новую ячейку, и мне приходится ремонтировать ее вручную, что стоит много времени.
Поскольку у меня их так много, использование обходного пути «вставь в Word и найди и замени» просто слишком трата времени для меня. Есть ли способ, чтобы разрыв строки исчез при копировании? Может быть, есть зритель, который предлагает специальный режим копирования для этого, или имеет плагин?
Документы являются научными статьями. Расположение текста довольно линейное. Вы можете предположить, что текст, который я копирую, не находится внутри таблицы или с плавающей точкой, и не вращается или что-то еще. (Если такое случится, я думаю, я справлюсь с этим вручную). Текст часто задается в двух столбцах, но у меня нет проблем с выделением нужного текста из его столбца. Мне не нужно сохранять какое-либо специальное форматирование. Я готов попробовать решение, которое удаляет все непечатаемые символы, например. Тексты на английском языке, это нормально, если решение работает только в ASCII / удаляет все не алфавитно-цифровые ASCII скопированного текста.
У меня есть очень сильное предпочтение для решения, которое будет работать на Linux, возможно, какой-то плагин Okular. Но если будет решение для Windows, я тоже хочу услышать об этом. У меня есть лицензия на несколько последних версий Acrobat Pro на компьютере с Windows.
источник
Ответы:
У меня была похожая проблема, когда я работал над сценарием преобразования текста в речь некоторое время назад. Мой сценарий попытался бы разбить ввод текста на куски, ища строки. С PDF-файлами это может привести к путанице из-за того, что каждая строка заканчивается новой строкой.
Так что я сделал , было сочинить несколько
sed
иtr
команды , чтобы рассматривать только новые строки , заканчивающиеся полную остановку как фактические разрывы строк. Это было не очень красиво, но это сработало.Используя этот фрагмент, я написал для вас небольшой скрипт, который, надеюсь, поможет:
Использует скрипт
xsel
для анализа текущего выделенного текста , а затем изменяет его с помощьюsed
иtr
командной строки я уже упоминал выше. Обработанный текст затем передается обратно в буфер обмена с помощьюxsel -bi
.Вот как вы можете использовать скрипт в вашем сценарии:
xsel
установили (sudo apt-get install xsel
на (K) Ubuntu)copy_without_linebreaks
или что-то похожее и сделать его исполняемымисточник
Это беспокоило меня годами, поэтому я нашел общее (Windows) решение с помощью Autohotkey . Autohotkey - это легкое бесплатное программное обеспечение с открытым исходным кодом для Windows, позволяющее создавать горячие клавиши практически для всего, что только можно себе представить.
При нажатии Ctrl+ cкод срабатывает только в том случае, если активным окном является программа чтения PDF, в противном случае он просто копирует заданный выбор, как обычно. В случае чтения PDF, он копирует выделение, удаляет разрывы строк и двойные пробелы и помещает результат в буфер обмена. Если ничего не выбрано, буфер обмена практически не тронут.
Единственной задачей перед применением этого кода является имя класса окна (
ahk_class
) вашего читателя. Я использую один PDF Reader для всех случаев (и я предполагаю, что большинство людей делают это), FoxitReader, иahk_class
это такclassFoxitReader
. Вы можете легко определить класс для своего собственного программного обеспечения с помощьюWinGetClass
команды (например,AcrobatSDIWindow
для Acrobat Reader).Если вы предпочитаете читать PDF-файлы в своем браузере, это не ваше решение. Или вы можете просто удалить
#IfWinActive ahk_class classFoxitReader
строку, чтобы код всегда срабатывал, но в этом случае результат всегда будет лишен переносов и пробелов.источник
Еще одна вещь, которая сработала для меня, это сохранение файла PDF в формате HTML. Параграфы в HTML остаются без изменений, готовые для копирования и вставки. Работают и другие форматы файлов, такие как txt или rtf ... Это также должно работать в системах Linux.
источник
Третий подход с использованием макросов показан здесь , но я не пробовал. Я вставил здесь макросы для дальнейшего использования, макрос 2 - автор источника - «Дебора Савадра» - и макрос 1 - ее читатель «Бенджамин»:
макрос 1:
макрос 2:
источник
Существует решение для Windows показано здесь . Нужно скачать файл «PDF Copy-Paster.exe» и запустить его перед копированием и вставкой. Я попробовал это, и он работает просто отлично, за исключением того, что он удаляет все переводы строки. Поэтому, если вы скопируете несколько абзацев, у вас будет только один.
Есть вопрос по SU с небольшим объяснением, он может быть интересен для кого-то ...
источник
:-)
)Я знаю, что это старый вопрос, однако я чувствовал, что было бы полезно ответить на него, потому что ни одно другое решение не было так легко использовать, как это.
Используйте приложение Linux с именем Okular, чтобы открыть файл PDF. Затем Инструменты-> Инструмент выбора таблицы. Затем выделите текст, который был в форме таблицы. Затем Ctrl + C, и вы готовы к работе.
источник
Актуальный вопрос: /ubuntu/1167026/detect-clipboard-copy-paste-event-and-modify-clipboard-contents
Кредит идет к Кенну .
По сценарию Глутанимате.
Источник: https://github.com/SidMan2001/Scripts/tree/master/PDF-Copy-without-Linebreaks-Linux
Удалить разрывы строк при копировании текста из PDF (Linux):
Этот скрипт bash удаляет разрывы строк при копировании текста из PDF. Он работает как для основного выбора, так и для буфера обмена Linux.
Зависимости:
sudo apt-get install xsel
Вы можете использовать предварительно скомпилированный clipnotify, предоставленный в репозитории, или скомпилировать себя.
Чтобы скомпилировать клипнотизировать себя:
sudo apt install git build-essential libx11-dev libxtst-dev
git clone https://github.com/cdown/clipnotify.git
cd clipnotify
sudo make
Использовать :
chmod +x "copy_without_linebreaks.sh"
.\copy_without_linebreaks.sh
источник
Если у вас есть Acrobat, нажмите на курсор, чтобы курсор мигал в тексте. (Это не сработает, если вы этого не сделаете.) Перейдите в раздел «Дополнительно», «Доступность», «Добавить теги». Это займет несколько минут, если у вас большой документ, но намного быстрее, чем удаление разрывов вручную. Вуаля!
источник
Простое решение с этой страницы; http://www.iom3.org/news/how-instantly-remove-unwanted-line-breaks-when-copying-pdf
Немного капризный, но как только вы получаете ярлыки под пальцами, это намного быстрее
источник
pdftotext
а затем использует любой текстовый редактор, который им нравится (со стандартным регулярным выражением).