Сравнить два текста
2 различия: строка «b» удалена, строка «d» добавлена — так выглядит результат сравнения. Вставьте две версии текста: инструмент найдёт удалённые и добавленные строки и посчитает процент совпадения.
Инструмент
Как сравнить два текста
Инструмент делит оба текста на строки и ищет наибольшую общую подпоследовательность (LCS) — самый длинный набор строк, идущих в одном порядке в обеих версиях. Всё, что в неё не вошло, и есть отличия: строки первого текста помечаются «−» (удалены), строки второго — «+» (добавлены). Такой же принцип лежит в основе команды git diff и режима сравнения в редакторах кода.
L[i][j] = L[i+1][j+1] + 1, если a[i] = b[j]
L[i][j] = max(L[i+1][j], L[i][j+1]), если a[i] ≠ b[j]
отличий = (строк в A − LCS) + (строк в B − LCS)
Пример вручную. Первый текст: «a», «b», «c»; второй: «a», «c», «d». Общая подпоследовательность — «a», «c», длина 2. В первом тексте лишняя строка «b» (3 − 2 = 1 удалена), во втором лишняя «d» (3 − 2 = 1 добавлена). Итог — 2 различия, совпадение 2 из 3 строк, то есть 66,67 %. Результат в unified-формате:
a
- b
c
+ d
Перед основным расчётом отбрасываются одинаковые начало и конец: если в договоре на 800 строк поменяли один пункт, алгоритм сравнивает только несколько строк вокруг правки, поэтому большие документы обрабатываются мгновенно.
Что такое сравнение текстов (diff)
Сравнение текстов (diff) — это поиск отличий между двумя версиями: какие строки добавлены, удалены или изменены. Алгоритм находит наибольшую общую подпоследовательность строк и подсвечивает всё, что в неё не вошло.
Как читать результат
| Пометка | Значение | Считается в |
|---|---|---|
| два пробела | строка есть в обоих текстах | «Без изменений» |
| − | строка есть только в первом тексте | «Удалено» |
| + | строка есть только во втором тексте | «Добавлено» |
«Совпадение» — доля неизменённых строк от длины большего текста: 5 999 общих строк из 6 000 дают 99,98 %. Изменённая строка всегда даёт пару «−» и «+»: старое значение и новое, так что 1 правка = 2 различия.
Где применяется сравнение текстов
Юристы сверяют редакции договора: контрагент прислал «ту же» версию, а в пункте 4.2 срок оплаты стал 45 дней вместо 30. Редакторы и переводчики проверяют, что вернул автор после правок. Бухгалтеры сравнивают выгрузки из 1С — список контрагентов за март и за апрель, чтобы увидеть, кто добавился. SEO-специалисты сопоставляют семантические ядра и robots.txt до и после изменений, программисты — конфиги и SQL-дампы, когда под рукой нет Git. Студенты и преподаватели сверяют две версии курсовой, чтобы убедиться, что замечания учтены.
Настройки и ограничения
Флажок «Не учитывать регистр» полезен для списков e-mail и артикулов, где «ABC-123» и «abc-123» — один товар. «Не учитывать пробелы» спасает при сравнении текста из PDF, где переносы и двойные пробелы расставлены случайно. Объём — до 1 000 000 знаков в каждом поле и до 5 000 отличающихся строк; для сравнения одного длинного абзаца без переносов разбейте его на предложения, иначе весь абзац будет считаться одной строкой.
Пример расчёта
- Исходные данные: Не учитывать регистр (Москва = москва) — нет; Не учитывать пробелы и табуляции — нет.
- Результат: Результат сравнения — Тексты одинаковы (Добавлено — 0 строк; Удалено — 0 строк; Без изменений — 0 строк; Совпадение — 100 %).
Вопросы и ответы
Как сравнить два документа Word или PDF?
Откройте каждый документ, выделите всё (Ctrl+A), скопируйте и вставьте в первое и второе поле. Форматирование при этом теряется, сравниваются только слова и строки. В самом Word есть команда «Рецензирование → Сравнить», но она работает с файлами .docx, а онлайн-инструмент принимает текст из любого источника — PDF, письма, мессенджера.
Что означают знаки «−» и «+» в результате?
Строка со знаком «−» есть только в первом тексте — она удалена во второй версии. Строка с «+» есть только во втором тексте — она добавлена. Строки с двумя пробелами в начале совпадают в обеих версиях. Это формат unified diff, который используют Git и большинство редакторов кода.
Почему исправленная строка показана как удалённая и добавленная?
Сравнение идёт построчно: строка либо совпадает целиком, либо нет. Если в «Цена 1 000 ₽» изменили одну цифру, старая строка помечается «−», новая — «+». Так видно и старое, и новое значение. Посимвольное выделение внутри строки не делается намеренно — для длинных абзацев оно превращается в пёструю мозаику.
Учитываются ли пустые строки и пробелы?
По умолчанию да: лишний перенос строки считается добавленной строкой, а «Москва » с пробелом в конце отличается от «Москва». Включите «Не учитывать пробелы» — и пробелы, табуляции, двойные пробелы внутри строки перестанут считаться отличием. Флажок «Не учитывать регистр» приравнивает «МОСКВА» к «москва».
Сколько строк можно сравнить за раз?
До 1 000 000 знаков в каждом поле. Совпадающие начало и конец текстов отбрасываются сразу, а построчный LCS-алгоритм работает с оставшейся серединой — до 5 000 отличающихся строк в каждом тексте. Договор на 40 страниц или список из 10 000 ключевых слов с сотней правок сравниваются за доли секунды; если отличается больше 5 000 строк, инструмент попросит разбить тексты на части.
Обновлено: