Экстрактор телефонов из текста с нормализацией номеров
Собирает телефоны из любого текста, приводит к одной маске и убирает дубли по номеру, а не по написанию. Работает прямо в браузере.
Список телефонов почти никогда не приходит в одном виде. В выгрузке из формы одни номера с плюсом, другие с восьмёркой, третьи со скобками и пробелами. Сверху ложится почтовая переписка и таблица от партнёра. А CRM или сервис рассылки ждёт один формат и ругается на всё остальное.
Эту кашу разбирает экстрактор телефонов из текста в поле выше. Вставляете текст как есть, выбираете маску, забираете готовый столбик. Разбор идёт у вас в браузере, введённый текст никуда не уходит.
Когда это выручает
- Заявки пришли из разных форм и лендингов, а слить их надо в одну базу, где номер выглядит одинаково.
- Перед рассылкой по SMS или в мессенджерах нужен единый формат.
- Чистите старую базу и считаете уникальные контакты.
- Вытаскиваете контакты из письма или прайса, где номера вперемешку с текстом.
Как пользоваться экстрактором телефонов
Сначала отметьте согласие над формой. До этого поле неактивно. Галочка нигде не запоминается: перезагрузили страницу, ставьте заново.
Дальше вставьте текст в «Исходный текст», и счётчики начнут пересчитываться на лету, пока вы печатаете или правите вставленное.
В «Маске вывода» четыре варианта: +7XXXXXXXXXX, 8XXXXXXXXXX, читаемый +7 (XXX) XXX-XX-XX и «Только цифры». Последний отдаёт те же одиннадцать цифр с семёркой впереди, просто без плюса и разделителей: так номер обычно и просят в импорте. Маску можно переключать, текст заново вставлять не нужно. Готовый список забирайте кнопкой «Скопировать» или сохраните файлом через «Скачать .txt».
Было и стало
Вставляем три строки как есть:
- Иванов, моб. 8 (916) 123-45-67
- Петрова +7 916 123 45 67, отдел закупок
- склад: 8-495-185-60-65
Получаем два номера: +79161234567 и +74951856065. Первые две строки схлопнулись в один контакт, хотя написаны по-разному. Счётчики покажут «Найдено 3» и «Уникальных после дедупликации 2», и вот эта разница и есть то, ради чего сюда приходят.
Что делать с результатом
Над результатом три числа. «Найдено» считает все номера в тексте вместе с повторами. «Уникальных после дедупликации» показывает, сколько контактов реально останется в базе. «Иностранные номера» считает те, что под российский формат не подошли.
Дубли отсеиваются по нормализованному значению, а не по написанию. Запись 8 916 123-45-67 и запись +7 (916) 123-45-67 для инструмента один и тот же контакт. Обычная чистка по строке такую пару пропустит, и в CRM потом заедут два лида на одного человека. Готовый столбик уходит дальше: в импорт CRM, в рассылку, в аудиторию рекламного кабинета.
Дальше по маршруту обычно идут два соседа. Экстрактор email из текста соберёт из той же выгрузки адреса. Пересечение и разность списков вычтет тех, кто уже есть в базе, и покажет только новых.
Про чужую базу и закон
Телефон живого человека это персональные данные, и правила к нему те же, что к паспортным. Отсюда простое следствие: чужую базу нельзя загружать в незнакомый онлайн-сервис, потому что вы не знаете, что он с ней сделает.
Здесь этот риск закрыт устройством инструмента. Текст остаётся во вкладке браузера, на сервер не уходит ни одна строка, в логах не оседает ничего. Как мы обращаемся с данными на самом сайте, написано в политике конфиденциальности.
О чём помнить
- Одиннадцать цифр с 7 или 8 в начале: первая считается кодом страны и отбрасывается. Оставшиеся десять должны начинаться с 3, 4, 8 или 9, иначе номер уедет в иностранные.
- Десять цифр без кода тоже считаются российским номером, и правило то же: первая цифра 3, 4, 8 или 9. ИНН вида 7707083893 под него не подходит и уходит в иностранные. А вот артикул из десяти цифр, начинающийся с девятки, инструмент всё ещё примет за телефон, так что по результату стоит пробежаться глазами.
- Плюс это ваше слово о стране. Номер с плюсом и кодом не +7 остаётся иностранным и в российскую маску не переписывается. Немецкий +49 30 901820 так и попадёт в отдельный блок.
- Казахстанские номера уходят к иностранным. Код страны у них тоже семёрка, но дальше идёт ещё одна, а российских кодов на 7 не бывает.
- Городской номер без кода города в российские не попадёт. Семь цифр вида 123-45-67 уедут в блок иностранных, потому что под шаблон в десять или одиннадцать цифр они не подходят.
- Добавочные теряются. Из записи «8 (495) 123-45-67 доб. 101» останется только основной номер, добавочный не сохранится нигде.
- Разделяйте номера запятой или переводом строки. Столбик по номеру в строке разбирается правильно. А вот два номера подряд через один пробел инструмент может слепить в одну длинную цифру и отправить её в иностранные.
- Иностранные не схлопываются по коду страны. Запись с плюсом и та же запись без плюса посчитаются за два разных контакта, а без плюса номер и вовсе может уехать в российский список.
- Заголовок блока иностранных копируется вместе со списком. Строка-разделитель попадёт и в буфер обмена, и в файл. Перед импортом снесите её и пустую строку над ней.
- Инструмент ищет номера по написанию и не проверяет, живые они или нет. Опечатка останется опечаткой и в результате.
- Записи вида 192.168.0.1 отсекаются: IP-адреса в список не попадут.
Сколько текста выдержит
Ограничения нет, и упереться в него трудно. Выгрузка на десять мегабайт с двумястами тысячами номеров разбирается примерно за полсекунды. Десять тысяч строк не заметит вообще никто.
Вставьте кусок своей выгрузки в поле и посмотрите, сколько уникальных номеров там на самом деле.
Частые вопросы
Что будет с номерами не из России?
Они не приводятся к российской маске, а сохраняются в исходном виде и выводятся отдельным блоком «возможно, иностранные номера». Российским номер считается в двух случаях: одиннадцать цифр с 7 или 8 в начале либо десять цифр без кода, и значащая часть при этом начинается с 3, 4, 8 или 9. Остальное уходит в иностранные: и британский +44 20 7946 0958, и немецкий +49 30 901820, и казахстанские номера, у которых после кода страны идёт вторая семёрка.
Как обрабатывается 11-значный номер, начинающийся с 8?
Первая цифра, 7 или 8, считается кодом страны и отбрасывается. Оставшиеся десять это значащий номер, он и приводится к выбранной маске. Проверка одна: значащая часть должна начинаться с 3, 4, 8 или 9, других кодов в России нет. Поэтому 8 916 123-45-67 и +7 (916) 123-45-67 схлопнутся в один контакт, а не останутся двумя строками.
Сохраняются ли добавочные номера?
Нет. Из записи «8 (495) 123-45-67 доб. 101» в результат уйдёт только основной номер, добавочный потеряется. Если добавочные вам нужны, держите исходный текст под рукой или заранее разнесите номер и добавочный по разным колонкам.
Может ли ИНН или артикул попасть в список телефонов?
Может, но уже реже. Десять цифр подряд считаются телефоном, только если первая из них 3, 4, 8 или 9, поэтому ИНН вида 7707083893 уходит в блок иностранных. А вот артикул, начинающийся с девятки, инструмент всё ещё примет за номер: отличить телефон от счёта по одному написанию нельзя. Если в исходном тексте такие числа есть, пробегитесь по результату глазами перед импортом.
Сколько текста можно вставить за раз?
Ограничения в инструменте нет, и достичь его трудно. Выгрузка на десять мегабайт с двумястами тысячами номеров разбирается примерно за полсекунды, десять тысяч строк не заметны совсем. Так что кладите выгрузку целиком, резать её на части не нужно.
Передаются ли номера куда-то при обработке?
Нет, весь разбор и нормализация идут прямо в браузере на JavaScript, без обращения к серверу. Ни одна строка не уходит на сторону и не попадает в логи, поэтому чужую базу телефонов можно вставлять без риска.
Похожие инструменты
Экстрактор email из текста онлайн — с дедупликацией
Собирает почтовые адреса из текста и HTML, схлопывает повторы и отдаёт список строками или через запятую. Ничего не уходит на сервер.
Пересечение и разность списков онлайн — сравнить два или три списка
Показывает, чем два или три списка отличаются: общее, уникальное и объединение без повторов. Кнопку нажимать не нужно.
Конвертер столбец ↔ строка онлайн — список в строку через разделитель
Минус-слова для Директа, значения для SQL IN(), правка чужого перечня: столбец превращается в строку и обратно прямо в браузере.