Перейти к основному содержимому
SubtitleMatrix

Удалить HTML-теги из субтитров

Текст и оформлениеУдаление разметки и тегов
Или вставьте текст субтитров

Параметры

Одно поле, семь вариантов, и у каждого варианта своя страница. Курсив, жирный, подчёркивание и цвет удаляют один вид диапазона и оставляют остальное оформление строки. «Всё оформление» удаляет все диапазоны, которые моделирует инструмент, — эти четыре плюс караоке, — не трогая остальной текст. «Всё оформление + угловая разметка» делает то же самое и затем вычищает угловые разметки, оставшиеся в тексте, потому что инструмент их не моделирует: теги говорящего VTT вроде <v Bob> и <c.className>. «Всё оформление + блоки {...}» делает то же для блоков переопределения, очищая коды {...}, не распознанные при разборе, например {\fad(500,500)}. Эта страница заполняет поле вариантом, названным в её заголовке, и других не предлагает.

В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.

Страница удаляет разметку из текста субтитров: все диапазоны оформления, которые несёт файл, плюс угловые теги, оставшиеся в самом тексте. На выходе — простой читаемый диалог: слова, тайминги и больше ничего. Это тот запуск, который нужен файлу, где в середине строки остались тег говорящего, тег класса или лишний закрывающий тег. Сметание намеренно узкое: удаляется только то, что похоже на тег, — буква или косая черта сразу после «<». Сравнение «5 < 10» и смайлик «<3» остаются нетронутыми, потому что более широкое правило удалило бы слова между скобками и ничего не оставило бы в выводе. Файл, который уже является простым текстом, возвращается байт в байт.

Примеры

Файл WebVTT с тегом говорящего и тегом класса

Вход

WEBVTT

00:00:01.000 --> 00:00:02.000
<v Bob><c.yellow>Hello there</c>

00:00:03.000 --> 00:00:04.000
<i>She left</i> <ruby>東京<rt>とうきょう</rt></ruby>.

Выход

WEBVTT

00:00:01.000 --> 00:00:02.000
Hello there

00:00:03.000 --> 00:00:04.000
She left 東京とうきょう.

Тег говорящего, тег класса, курсив и ruby-аннотация уходят, остаются слова. Обратите внимание на второй субтитр: чтение внутри «<rt>» было текстом, а не разметкой, поэтому оно остаётся — в выводе рядом с иероглифами стоит кана, которую плеер и так показал бы.

Файл SRT с лишним закрывающим тегом

Вход

1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> there</i> again.

2
00:00:03,000 --> 00:00:04,000
<b>And</b> one more.

Выход

1
00:00:01,000 --> 00:00:02,000
Hello there again.

2
00:00:03,000 --> 00:00:04,000
And one more.

Пара вокруг «Hello» была прочитана как диапазон и удалена целиком; одинокий «</i>» после «there» читатель оставил в тексте, и здесь он сметается. Оба в итоге не попадают в вывод — в этом и смысл двух работ за один запуск: именно такие несовпадающие теги остаются после OCR или ручной правки.

Сравнения и символы — не теги

Вход

1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1

2
00:00:03,000 --> 00:00:04,000
<3 you

Выход

1
00:00:01,000 --> 00:00:02,000
5 < 10 and 3 > 1

2
00:00:03,000 --> 00:00:04,000
<3 you

Ничего не удаляется, и это самая важная половина страницы. Сметание касается только того, что похоже на тег, — буквы или косой черты сразу после угловой скобки; математическое сравнение и сердечко из знака «меньше» остаются нетронутыми, как и всё, что написано между двумя скобками.

Частые вопросы

Чем эта страница отличается от удаления всего оформления?

Она делает ту же работу и идёт дальше. Удаление оформления снимает диапазоны, которые моделирует инструмент: курсив, жирный, подчёркивание, цвет и караоке. Эта страница убирает и их, а затем сметает угловые теги, оставшиеся в самом тексте: теги говорящего, теги класса, ruby-разметку и одинокие или несовпадающие закрывающие теги. Если такой разметки в файле нет, обе страницы дают одинаковый результат.

Какие теги удаляются, а какие остаются?

Удаляется всё, что похоже на тег: открывающая угловая скобка, сразу за которой идёт буква или косая черта, до следующей закрывающей скобки. Не трогается скобка, за которой стоит что-то другое, поэтому сравнение «5 < 10 and 3 > 1» и символ «<3» проходят без изменений. Эта узость намеренная: более широкое правило удалило бы диалог между двумя скобками и не оставило бы в выводе следа.

Удаляются ли слова, которые были внутри удалённого тега?

Зависит от того, что было внутри. Атрибуты самого тега уходят вместе с ним, и то же происходит со всем, что вложено в удаляемый тег. А вот чтение внутри ruby-аннотации — это текст, и оно остаётся в строке, пока разметка вокруг исчезает. Чего не происходит никогда — удаления текста, который стоит между двумя скобками в обычном диалоге, потому что он не похож на тег.

Будет ли вывод корректен в моём плеере после удаления разметки?

Да, и надёжнее, чем раньше. WebVTT допускает одинокий закрывающий тег без жалоб, но тег говорящего без закрывающей скобки в некоторых плеерах проглатывает остаток строки, а разные плееры расходятся в трактовке незнакомых тегов. У простого текста такой двусмысленности нет, поэтому файлу для платформы, которая сама задаёт оформление, часто лучше быть очищенным, чем оформленным.

Можно ли удалить только остатки разметки и сохранить курсив?

На этой странице нельзя: сначала уходят диапазоны оформления, и только потом работает сметание, поэтому файл с курсивом вернётся без него. Такой порядок не случаен: удаление разметки сокращает текст, и каждый диапазон после этого пришлось бы пересчитывать, чтобы он указывал на нужные символы. Две работы за один запуск дают точный результат, поэтому промежуточного режима здесь нет.

Почему запуск ничего не сообщил, хотя разметка в файле явно была?

Вероятная причина в том, что разметка не похожа на тег: скобка, за которой стоит пробел, цифра или символ, остаётся на месте намеренно, поэтому ничего не удалилось и файл вернулся байт в байт. Если в файле есть что-то вроде «<v Bob>», а результат не изменился, проверьте, тот ли это файл: страница читает файл тем форматом, которым он на самом деле является, а не тем, что написано в расширении.

Похожие инструменты