Как вы выполняете проверку адреса? [закрыто]

89

Можно ли вообще выполнить проверку адреса (физического, а не электронного)? Кажется, что огромное количество форматов адресов даже в одних только США сделало бы эту задачу довольно сложной. С другой стороны, это похоже на задачу, которая необходима для нескольких бизнес-требований.

Кевин Панг
источник
23
что бы вы ни делали, если адрес кажется недействительным, позвольте пользователю выбрать, что он действительно действителен, а не просто отклонять его, потому что валидатор говорит, что он недействителен.
Pim Jager
Вы имеете в виду "автозаполнение адреса" или "проверку адреса"? Я имею в виду, что ни один сервис никогда не узнает обо всех изменениях, происходящих в реальном мире. Каждую минуту появляются миллионы новых адресов и сносятся старые. И я сейчас говорю локально, в масштабе планеты.
Евгений Афанасьев

Ответы:

27

Вот бесплатный и своего рода "нестандартный" способ сделать это. Не на 100% идеально, но он должен отклонять явно несуществующие адреса.

Отправьте весь адрес в веб-службу геокодирования Google . Эта служба пытается вернуть точные координаты местоположения, которое вы ей вводите, т. Е. Широту и долготу.

По моему опыту, если адрес недействителен, вы получите результат 602 от службы. Определенно существует возможность ложных срабатываний или ложных отрицательных результатов, но при использовании в сочетании с другими проверками согласованности это может быть полезно.

( Веб-служба геокодирования Yahoo , с другой стороны, вернет координаты центра города, если город существует, но остальная часть адреса является подделкой. Это может быть полезно, если вы уделяете пристальное внимание полю «точность» в результат).

Тим Фарли
источник
4
Есть ли кто-нибудь, кто действительно использовал этот метод на живой системе?
Aston
27
Условия использования Google и Yahoo запрещают использование их службы геокодирования, кроме как в сочетании с использованием карты, отображаемой пользователю. Найдите что-нибудь более похожее на то, что предложил Джонатан Оливер. См .: code.google.com/apis/maps/terms.html
Мэтт,
1
Я не получаю указанные результаты 602, когда ввожу неправильный адрес.
HK1,
9
Это НЕ ДОЛЖНО быть выбранным ответом. Он нарушает TOS Google и на самом деле не проверяет адреса. Google использует большой интеллект, чтобы «угадать», какой адрес вам нужен, даже если информация немного не соответствует действительности. Google также вернет геокод, если вы скажете, что введите 55 Main St, и Google знает, что есть 50 Main st и 60 Main St., он вернет обратно успешный геокод, усредняющий расстояние, даже если 55 Main St на самом деле не существовать. Вам необходимо использовать настоящую службу проверки, например USPS, предпочтительно Experian или SmartyStreets.
jacurtis
1
Из этого получилось бы замечательное приложение Blockchain, в котором каждый вносит свой вклад в узел, сохраняя кусочки огромной постоянно меняющейся базы данных ...
decoder7283
20

Здесь есть несколько хороших ответов, но большинство из них предполагают, что пользователю нужно решение «API», в котором он должен писать код для подключения к сторонней службе и / или очистки экрана от USPS. Это все хорошо, но следует учитывать бизнес-требования и затраты, связанные с внедрением, а затем соотносить их с желаемыми выгодами.

В зависимости от бизнес-требований и способа получения данных в систему решение для обработки адресов в реальном времени может быть лучшим выбором. Если требуется решение, работающее в режиме реального времени, вы захотите принять во внимание лицензионное соглашение и технические ограничения API Google Maps / Bing / Yahoo. Обычно они ограничивают количество звонков, которые вы можете делать каждый день. API веб-инструментов USPS такой же, кроме того, они ограничивают, как и почему вы можете использовать их систему и как вам разрешено использовать данные после этого.

В то же время есть несколько отличных поставщиков услуг, которые могут легко обрабатывать статический список адресов. По сути, вы даете поставщику услуг файл CSV или Excel, они очищают его и возвращают вам. Это разовая сделка без долгосрочных обязательств или обязательств - обычно.

Полное раскрытие информации: я основатель SmartyStreets. Мы проверяем адреса для адресов в США. Мы легко можем сертифицировать список CASS, а также предлагаем API веб-службы проверки адреса . У нас нет скрытых комиссий, контрактов и прочего. Вы пользуетесь нашим сервисом до тех пор, пока он вам больше не понадобится и вы не сможете уйти. (В отличие от компаний сотовой связи, которые требуют заключения контракта.)

Джонатан Оливер
источник
1
Отлично, именно то, что я искал. И позвольте мне сказать, что у вас есть стиль, сэр. Красивый сайт.
Кори Мохортер
2
Мы используем SmartyStreets, и это здорово.
JerSchneid
17
Стоимость 1000 поисков SmartyStreet составляет 30 долларов. Сэкономил вам клик.
Уильям Энтрикен,
1000 просмотров = 66 $ за
Роберт Синклер
На самом деле у USPS есть интерфейс REST для этого ... однако, и это ОГРОМНО ... если вы нажмете на эту штуку скриптом для проверки базы данных, полной адресов, они вас забанят. Вам разрешено проверять ввод данных пользователя с его помощью, поэтому его можно использовать в веб-форме, где обращения API будут случайным образом рассчитаны. Просто убедитесь, что ваша форма защищена от ботов, иначе вы в короткие сроки получите DoS-доступ к API. Также это подходит только для адресов в США.
Нил Дэвис
15

У USPS есть онлайн-сервис для чистки адресов , который кто-то нацарапал на экране в веб- сервисе бедняка. Однако, если вы делаете это достаточно часто, было бы лучше подать заявку на учетную запись USPS и позвонить в их собственный веб-сервис .

Марк Брэкетт
источник
17
Чтобы спасти кого-либо от изжоги и получения письма с отказом через три дня, почти никому не разрешается использовать собственный валидатор адресов USPS. Вот почему экран парня поскреб его в первую очередь. Это строго ограничено некоммерческими организациями.
Николас Пясецкий,
5
USPS не разрешает использовать эти данные для чего-либо, кроме отправки письма или пакета. Другими словами, вы должны отправить письмо по адресу, который вы ищете.
16
USPS позволит использовать IFF в коммерческих целях, если вы не перепродаете или не очищаете свои базы данных. Мы получили учетную запись и используем ее для проверки / исправления ВСЕХ адресов, которые поступают через наши веб-формы.
marklark
2
Или собираетесь отправить письмо в какой-то момент времени. Моей компании изначально было отказано в доступе к USPS API, но после разъяснения нашего предполагаемого использования (и заявления о том, что мы не будем использовать API для исправления старых данных), мы были одобрены.
marklark
4
Вы можете использовать API USPS только в том случае, если вы проверяете адрес для выполнения почтовой рассылки или отправки: secure.shippingapis.com/registration - если вы не отправляете рассылки или не отправляете через USPS, тогда найдите альтернативный API, который не имеет лицензионных ограничений.
Мэтт
9

Я отсылаю вас к своему сообщению в блоге - Урок по хранению адресов , я расскажу о некоторых методах и алгоритмах, используемых в процессе проверки адресов. Моя ключевая мысль: «Не ленитесь с адресным хранилищем, это в будущем не вызовет у вас ничего, кроме головной боли!»

Кроме того, есть еще один вопрос StackOverflow, который задает этот вопрос. Заголовок Как следует хранить международные географические адреса в реляционной базе данных .

БенАлабастер
источник
8

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

Бесплатное программное обеспечение с открытым исходным кодом

Ясно, что первый подход, который может выбрать любой, - это подход с открытым исходным кодом (например, openstreetmap.org ), что никогда не бывает плохой идеей. Но то, действительно ли вы действительно сможете найти хорошее и надежное применение, во многом зависит от того, насколько вам нужно полагаться на результаты.

Адреса - вещь невероятно разнообразная. Проверка адресов в США - непростая задача, но сносная, но как только вы отправитесь в Европу, особенно в Великобританию с их обширной системой почтовых индексов, в подходе с открытым исходным кодом просто не будет данных.

Веб-сервисы / API

Программное обеспечение корпоративного класса

Очевидно, деньги делают это. Но не каждый бизнес или разработчик может потратить ~ 0,15 доллара на поиск адреса (это 150 долларов за 1000 запросов API) - очень дорогая бизнес-модель, которую реализовало подавляющее большинство API проверки адресов.

В итоге я интегрировал: streetlayer API.

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

Короче говоря, я закончил интеграцию API, созданного apilayer, под названием «streetlayer API». Меня легко убедили простая интеграция JSON, удивительно точные результаты проверки и удобная для разработчиков цена. Кроме того, 100 запросов в месяц полностью бесплатны.

Надеюсь это поможет!

Фрэнк
источник
хороший ответ, к сожалению, streetlayer API закрывается на следующей неделе (03.07.2017). какие-либо альтернативы менее чем за 15 процентов за запрос?
Крис
1

Я пользовался услугами http://www.melissadata.com Их «адресный объект» работает очень хорошо. Да, дорого. Но если учесть затраты на написание собственных решений, стоимость «грязных» данных в вашем приложении, возвращенные почтовые программы, потерю продаж и т. Д. - затраты могут быть оправданы.

Taptronic
источник
1

Вы также можете попробовать решения SAP Data Quality, которые доступны как на серверной платформе, обрабатывающей большое количество запросов, так и в виде встраиваемого SDK, если вы хотите запускать его в процессе с вашим приложением. Мы используем его в нашем приложении, и он очень надежный и масштабируемый.

Джеймс Ченг
источник
1

Как видно на Reddit :

$address = urlencode('1600 Pennsylvania Avenue, Washington, DC');
$json = json_decode(file_get_contents("http://where.yahooapis.com/geocode?q=$address&flags=J"));
print_r($json);
Xeoncross
источник
1

Вы можете попробовать Pitney Bowes «IdentifyAddress» Api, доступный по адресу - https://identify.pitneybowes.com/

Служба анализирует и сравнивает входные адреса с известными адресными базами по всему миру, чтобы вывести стандартизированные детали. Он исправляет адреса, добавляет недостающую почтовую информацию и форматирует ее, используя формат, предпочитаемый соответствующим почтовым органом. Я также использую дополнительные базы данных адресов, чтобы они могли предоставить расширенные сведения, включая качество адреса, тип адреса, транслитерацию (например, от китайских иероглифов к латинским символам), а также подтверждение адреса на уровне помещения / дома, улицы или города справочной информации.

Вы найдете множество примеров и SDK, доступных на сайте, и мне показалось, что их очень легко интегрировать.

Параг Миттал
источник
1

Одна из областей, где поиск адресов должен выполняться надежно, - это услуги VOIP E911. Я знаю компании, которые надежно используют для этого следующие услуги:

Bandwidth.com 9-1-1 Доступ к API MSAG Проверка адреса

MSAG = Руководство по основным уличным адресам

https://www.bandwidth.com/9-1-1/

SmartyStreet US Street Address API

https://smartystreets.com/docs/cloud/us-street-api

Grokify
источник
0

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

Есть некоторые (но не многие) пакеты, в которых есть API для подключения проверки адреса к вашему программному обеспечению.

Однако вы правы, что это довольно неприятная проблема.

http://www.usps.com/ncsc/ziplookup/vendorslicensees.htm

Джейсон
источник
0

Как уже упоминалось, существует множество сервисов, и если вы хотите по-настоящему проверить весь адрес, я настоятельно рекомендую использовать сервис типа Web Service, чтобы ваше приложение могло быстро распознать изменения.

В дополнение к перечисленным выше услугам на webservice.net есть служба проверки адресов в США. http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=24

Митчел Селлерс
источник
0

Мы добились успеха с Perfect Address .

В их базе данных есть все названия улиц и диапазоны номеров улиц США. Также действует как довольно приличный парсер для полей адресов произвольной формы, если вам посчастливилось иметь такие данные.

Джейсон ДеФонтес
источник
Очень интересно ... их древний веб-сайт заставляет меня задуматься, продолжают ли они бизнес или надежны?
Энтони Григгс
Я давно не работал в компании, где мы это использовали. Не похоже, что они сильно изменились, но они все еще утверждают, что у них есть текущие данные.
Джейсон ДеФонтес
0

Подтвердить, что это действительный адрес, - это одно.

Но если вы пытаетесь подтвердить, что данный человек живет по заданному адресу, вашей единственной почти гарантией будет тестовое письмо на этот адрес, и даже в этом случае неясно, организован ли этот человек или знает кого-то по этому адресу.

В противном случае люди могли бы просто указать произвольный случайный адрес, который, как им известно, существует, и это ничего не значило бы для вас.

Лучшее, что вы можете сделать для немедленных результатов, - это попросить пользователя прислать сфотографированную / отсканированную копию выписки из банковского счета или другое подтверждение недавнего проживания, потому что, по крайней мере, тогда им придется приложить больше усилий, чтобы это забыть, и Подделка сказанного легко обнаруживается на базовом уровне судебно-медицинской экспертизы.

Кент Фредрик
источник
0

Глобального решения нет. Для любой страны это в лучшем случае довольно сложно.

В Великобритании PostOffice контролирует почтовые адреса и может предоставить (за плату) адресную информацию для целей проверки.

Государственные учреждения также ведут обширный список адресов, которые централизованно собираются в NLPG (Национальном справочнике земель и собственности).

На самом деле проверка по этим спискам очень сложна. Большинство людей даже не знают точно, какой у них адрес, поскольку он хранится в PostOffice. Некоторые компании даже не знают, какой у них номер на той или иной улице.

Лучше всего обратиться в компанию, которая специализируется на подобных вещах.

Крами
источник
0

Для получения адресных данных в США моя компания использовала GeoStan . У него есть привязки для C и Java (и мы создали привязку Perl). Обратите внимание, что это коммерческий продукт и не дешевый. Тем не менее, это довольно быстро (~ 300 адресов в секунду) и предлагает такие функции, как сертификация CASS (скидка на массовую рассылку USPS), отметку DPV (проверка точки доставки) и геокодирование LON / LAT.

Существует модуль Perl Geo :: PostalAddress , но он использует эвристику и не имеет других функций, упомянутых для GeoStan.

Изменить: некоторые упомянули «делать это самостоятельно», если вы все же решите сделать это, хорошим источником информации для начала является набор данных переписи тигра в США , который содержит много информации о США, включая адресную информацию.

Кайл Бертон
источник
0

Yahoo также имеет API Placemaker. Он хорош только для локаций, но имеет универсальный идентификатор для всех локаций мира.

Похоже, что в списке ISO нет стандарта .

Эльзо Валуги
источник
0

NAICS.com выпускает API, который будет добавлять все виды ключевых бизнес-данных, включая почтовый адрес. Это будет происходить на лету по мере обработки форм вашего сайта. https://www.naics.com/business-intelligence-api/

Джиллиан Бейкер
источник
0

Доступен сервис Fixaddress.com, который предоставляет следующие услуги:

1) Проверка адреса.

2) Коррекция адреса.

3) Исправление адресной орфографии.

4) Исправьте фонетические ошибки.

Fixaddress.com использует данные USPS и Tiger в качестве справочных.

Для получения более подробной информации перейдите по ссылке ниже,

http://www.fixaddress.com/

Ракеш Чаудхари
источник
-1

Для адресов в США вы можете потребовать действительный штат и убедиться, что почтовый индекс действителен. Вы даже можете проверить, находится ли почтовый индекс в правильном состоянии, но помимо этого, я не думаю, что есть много тестов, которые вы могли бы запустить, которые не дали бы много ложных отрицательных результатов.

Что вы пытаетесь сделать - предотвратить простые ошибки или провести проверку личности?

Роб Уокер
источник
Вы должны использовать сторонние платные услуги.
mmcdole
Вам не нужно использовать сторонние инструменты. У USPS есть веб-службы, которые это делают.
brian d foy
На самом деле, если вы выполняете задачу «убедиться, что этот адрес приемлем для местных почтовых служб», то в США USPS можно рассматривать как вторую сторону (но тогда это делает клиента, отправившего адрес, своего рода третье лицо).
Tripleee