Чистка pdftotext проблемы шрифта

Я использую pdftotext сделать версию ASCII документа в формате PDF (сделанной с ЛАТЕКСОМ), потому что сотрудники предпочитают простой документ в MS Word.

Версия простого текста я вижу хорошие взгляды, но после более близкого контроля f символ, кажется, часто неправильный преобразовывается в зависимости от того, за чем следуют символы. Например, fi и fl часто, кажется, становятся одним специальным символом, который я попытаюсь вставить здесь: fi и fl.

Что лучший способ состоит в том, чтобы очистить вывод pdftotext? Я думаю sed мог бы быть правильный инструмент, но я не уверен, как обнаружить эти специальные символы.

3
задан 05.04.2017, 06:50

2 ответа

По умолчанию, pdftotext выводы unicode (UTF-8) данные. Если Ваш терминальный или текстовый редактор не будет поддерживать UTF-8, лигатуры, такие как "fi" и "fl" (который может быть представлен как отдельный символ в unicode), то появится странно, как Вы заметили.

Простая фиксация должна сказать pdftotext производить ASCII вместо unicode:

pdftotext -enc ASCII7 input.pdf output.txt

Это должно произвести чистый вывод ASCII, устранив Вашу необходимость очистить его вручную впоследствии.

3
ответ дан 08.12.2019, 00:33

Принятие Вас находится в некоторой Основанной на Unix системе, Вы могли выполнить это на выводе pdftotext:

sed -i -e 's/ffi/ffi/g' -e 's/fi/fi/g' -e 's/ff/ff/g' -e 's/fl/fl/g' -e 's/ffl/ffl/g' output.txt

Это должно заменить лигатуры отдельными буквами, в которые они врываются. (См. мои комментарии выше для того, какие лигатуры имеют отношение к этому.)

Я протестировал это на текстовом файле, сгенерированном через pdftotext от сгенерированного ЛАТЕКСОМ PDF. И это хорошо работало. Но если ЛАТЕКС использовал нестандартное кодирование или шрифт с дополнительными лигатурами может быть больше, чтобы сделать.

Вы, вероятно, захотите удостовериться шрифт, который Вы используете в своем терминале, имеет символы для f-серийных лигатур. DejaVu Sans Mono является хорошим выбором.

1
ответ дан 08.12.2019, 00:33

Теги

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