Pdftotext без разрывов абзацев

Хотя обычно для создания списков, подобных этому, можно использовать раскрытие фигурных скобок, это может быть достаточно большим, чтобы вызвать проблемы. Несмотря на то, что это всего лишь ~17 миллионов слов, Bash 4.4 не удается построить список на виртуальной машине с 2 ГБ памяти, и происходит сбой через 1,5 минуты без каких-либо результатов.

Возможно, что-то вроде Perl было бы лучше:

perl -le 'foreach $i ("AAA".."ZZZ") { foreach $j ("000".."999") { print "$i-$j" }} ; ' > plates

Список создается примерно за 5 секунд.

Если вам нужно сделать это в Bash, разделите задание на более мелкие циклы.

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

0
20.08.2019, 10:25
1 ответ

PDF-файлы — странные вещи, и текст в них не обязательно находится в каком-либо нормальном порядке.

Попробуйте вариант -layoutpdftotext.

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

--

Я считаю, что самый простой способ преобразовать текст из нескольких столбцов -в один столбец -— отредактировать текст с помощью vim, вставить TAB между столбцами и написать сценарий perl для объединения столбцов в один столбец на каждая страница (страницы разделены формой -символов подачи,^L). Это может занять много времени -и утомительно.

Мои первые попытки написать perl-скрипт для этого пытались идентифицировать столбцы по количеству пробелов между столбцами, но, к сожалению, это варьируется от 1 или 2 пробелов до 5 или более (и есть также тот факт, что некоторые столбцы выравниваются дополнительными пробелами ), поэтому нет автоматического способа различить нормальный интервал между словами и интервал между столбцами. И он совершенно не работает с таблицами в выводе pdftotext.

Гораздо проще вручную редактировать и вставлять символы TAB и разделять столбцы на них, а vi/vim делает повторяющиеся задачи редактирования, подобные этой, довольно простыми :найдите удобное место для курсора, чтобы вставить TAB, нажмите Ctrl-Vи переместите курсор вниз к нижней части страницы или раздела, который вы редактируете, затем нажмите rTAB, чтобы заменить выбранный столбец vim -символами табуляции.


Наконец, в своих комментариях вы упомянули, что видели символ Unicode «ПРАВАЯ ОДНА КАВАТА» (U+2019 )в выводимом тексте. Это совершенно нормально, многие (большинство? )PDF-файлы содержат символы Юникода (, например. для умных -кавычек и em -тире и многоточия и т. д. ), встроенных в них, поскольку они не ограничены только символами ASCII

0
28.01.2020, 03:21

Теги

Похожие вопросы