belun.app Блог
EN

Почему скопированный текст разваливается на куски и как это чинить

Откуда берутся жёсткие переносы строк в PDF и письмах, что означают CR и LF и как быстрее всего вернуть тексту нормальный связный вид.

Руки печатают на ноутбуке с открытым документом — очистка текста от переносов строк

Вы копируете абзац из PDF, вставляете в письмо — и получаете рваный столбик из обрывков предложений. Каждая строка заканчивается там, где её оборвала страница PDF, а не там, где кончается мысль. Инструмент «Удаление переносов строк» чинит это за одну вставку, но полезно понимать, откуда берётся проблема: она же вылезает в письмах, субтитрах, результатах OCR и логах терминала, и лечится каждый раз чуть по-разному.

Откуда берутся переносы

PDF не хранит абзацы. Он хранит строки текста с точными координатами на странице — именно поэтому документ выглядит одинаково на любом устройстве. Когда вы выделяете и копируете текст, программа просмотра проходит по этим строкам и после каждой вставляет жёсткий перенос. Ваш абзац превращается в двенадцать отдельных строк, и Word старательно сохраняет каждую.

Старая электронная почта делает то же самое намеренно. Стандарт формата интернет-сообщений рекомендует переносить текст письма на 78 символах, и многие почтовые клиенты до сих пор жёстко заворачивают исходящие письма в простом тексте. Перешлите сообщение пару раз — и строки будут обрезаны на 78, потом на 76, потом на 74 символах, а спереди вырастет частокол из знаков >.

У OCR своя версия: программа распознавания выдаёт по строке текста на каждую строку скана, честно воспроизводя ширину колонки бумажного оригинала.

CR, LF и почему важно, что именно у вас

Перенос строки — исторически не один символ, а два. На печатной машинке возврат каретки (CR) возвращал каретку к левому краю, а перевод строки (LF) прокручивал бумагу на строку вверх. Компьютеры унаследовали оба: Windows заканчивает строки парой CR+LF (\r\n), Linux и современные macOS — одиночным LF (\n), а Mac до OS X использовал одиночный CR.

Чаще всего вам всё равно. Но когда файл переезжает между системами — например, CSV выгружен в Windows, а обрабатывается на сервере с Linux, — внутри данных могут остаться одинокие символы \r: в большинстве редакторов они невидимы, зато отлично ломают скрипты. Инструмент приводит все три варианта к одному виду перед склейкой, поэтому файл из Windows и файл из Linux дают одинаковый результат.

Убрать всё или сохранить абзацы

Склеить текст в одну строку — правильный ход для некоторых задач: разорванный переносом URL, кусок кода из чата, столбик адресов, который нужен через запятую. Выберите «ничего» или «запятая + пробел» — и колонка превратится в список.

Для обычной прозы полное сплющивание обычно не годится: хочется склеить строки внутри абзаца, но сами абзацы не трогать. Это и делает режим «Сохранить абзацы»: пустая строка считается границей абзаца и остаётся на месте, а переносы внутри абзаца заменяются пробелом. Глава из PDF на три страницы выходит тремя аккуратными абзацами, а не одной строкой на 4000 символов.

Мелочь, которая бережёт нервы: каждая строка обрезается перед склейкой. PDF часто дописывает в конец строк пробелы, и без обрезки на месте каждого бывшего переноса появлялся бы двойной пробел.

Где это нужно каждую неделю

  • Вставить цитату из PDF-отчёта в документ Word или CMS
  • Почистить результат OCR перед переводчиком
  • Превратить столбик значений из таблицы в список через запятую — для письма или SQL-условия IN (...)
  • Поправить текст субтитров из файла .srt, где каждая реплика разбита на две короткие строки

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

Вставьте разорванный текст в «Удаление переносов строк» — и заберите обратно чистый связный текст за пару секунд. Бесплатно и без регистрации.

Попробуйте инструмент

Удаление переносов строк →