¿Cómo se realiza la validación de direcciones? [cerrado]


89

¿Es posible realizar la validación de la dirección (física, no de correo electrónico)? Parece que la gran cantidad de formatos de dirección, incluso solo en los EE. UU., Haría que esta sea una tarea bastante difícil. Por otro lado, parece una tarea que sería necesaria para varios requisitos comerciales.


23
hagas lo que hagas, si la dirección parece inválida, deja que el usuario seleccione que realmente es válida, no la rechaces simplemente porque el validador dice que no es válida.
Pim Jager

¿Quiere decir "autocompletar dirección" o "validación de dirección"? Quiero decir que ningún servicio conocerá jamás todos los cambios que ocurren en el mundo real. Cada minuto aparecen millones de nuevas direcciones y las antiguas son demolidas. Y estoy hablando localmente ahora, en el ámbito de un planeta.
Yevgeniy Afanasyev

Respuestas:


27

Aquí hay una forma gratuita y una especie de "original" de hacerlo. No es 100% perfecto, pero debería rechazar direcciones descaradamente inexistentes.

Envíe la dirección completa al servicio web de codificación geográfica de Google . Este servicio intenta devolver las coordenadas exactas de la ubicación donde lo alimenta, es decir, latitud y longitud.

En mi experiencia, si la dirección no es válida, obtendrá un resultado de 602 del servicio. Definitivamente existe la posibilidad de falsos positivos o falsos negativos, pero si se usa junto con otras verificaciones de coherencia, podría ser útil.

( El servicio web de codificación geográfica de Yahoo , por otro lado, devolverá las coordenadas del centro de la ciudad si la ciudad existe pero el resto de la dirección es falsa. Potencialmente útil siempre que preste mucha atención al campo "precisión" en el resultado).


4
¿Hay alguien que realmente haya usado este método en un sistema en vivo?
Aston

27
Los TOS de Google y Yahoo prohíben el uso de su servicio de codificación geográfica, excepto junto con el uso de un mapa que se muestra al usuario. Encuentre algo más parecido a lo que sugirió Jonathan Oliver. Ver: code.google.com/apis/maps/terms.html
Matt

1
No obtengo los resultados 602 mencionados cuando ingreso una dirección incorrecta.
HK1

9
Esta realmente NO debería ser la respuesta seleccionada. Viola los TOS de Google y, en realidad, no está validando direcciones. Google utiliza mucha inteligencia para "adivinar" qué dirección deseaba incluso cuando la información está un poco fuera de lugar. Google también devolverá un código geográfico si dice que ingrese 55 Main St y Google sabe que hay una calle principal 50 y una calle principal 60, devolverá un código geográfico exitoso promediando la distancia, incluso si una calle principal 55 no lo hace realmente existe. Necesita utilizar un servicio de validación real como USPS preferiblemente o Experian o SmartyStreets.
jacurtis

1
Esto haría una maravillosa aplicación Blockchain donde contribuye a todos con un nodo mediante el almacenamiento de partes y piezas de una inmensa base de datos en constante cambio ...
decoder7283

20

Hay una serie de buenas respuestas aquí, pero la mayoría de ellas asumen que el usuario quiere una solución "API" en la que debe escribir código para conectarse a un servicio de terceros y / o hacer un rastreo de pantalla del USPS. Todo esto está muy bien, pero debe tenerse en cuenta en los requisitos comerciales y los costos asociados con la implementación y luego sopesar los beneficios deseados.

Según los requisitos comerciales y la forma en que se reciben los datos en el sistema, una solución de procesamiento de direcciones en tiempo real puede ser la mejor opción. Si se requiere una solución en tiempo real, deberá considerar el acuerdo de licencia y las limitaciones técnicas de las API de Google Maps / Bing / Yahoo. Por lo general, limitan la cantidad de llamadas que puede realizar cada día. La API de herramientas web de USPS es la misma, además, restringen cómo / por qué puede usar su sistema y cómo se le permite usar los datos a partir de entonces.

Al mismo tiempo, hay un puñado de excelentes proveedores de servicios que pueden procesar fácilmente una lista estática de direcciones. Básicamente, le das al proveedor de servicios un archivo CSV o un archivo Excel, ellos lo limpian y te lo devuelven. Es un trato único sin compromiso u obligación a largo plazo, por lo general.

Divulgación completa: soy el fundador de SmartyStreets. Realizamos la verificación de direcciones para direcciones dentro de los Estados Unidos. Podemos certificar fácilmente una lista con CASS y también ofrecemos una API de servicio web de verificación de direcciones . No tenemos tarifas ocultas, contratos ni nada. Utiliza nuestro servicio hasta que ya no lo necesita y puede marcharse. (A diferencia de las compañías de telefonía celular que requieren un contrato).


1
Perfecto, justo lo que buscaba. Y déjeme decirle que tiene estilo, señor. Bonito sitio.
Cory Mawhorter

2
Usamos SmartyStreets y es increíble.
JerSchneid

17
El costo de SmartyStreet por 1,000 búsquedas es de $ 30. Te ahorré un clic.
William Entriken

1,000 búsquedas = 66 $ para internacional
Robert Sinclair

En realidad, el USPS tiene una interfaz REST para esto ... sin embargo, y esto es ENORME sin embargo ... si golpea esto con un script para validar una base de datos llena de direcciones, lo prohibirán. Puede validar la entrada de datos del usuario con él, por lo que está bien para su uso en un formulario web donde las visitas de la API se programarán aleatoriamente. Solo asegúrese de que su formulario tenga protección contra bot o obtendrá su acceso API DoS en poco tiempo. Además, esto solo es válido para direcciones de EE. UU.
Neil Davis

15

USPS tiene un limpiador de direcciones en línea , que alguien ha insertado en el servicio web de un pobre. Sin embargo, si lo hace con la suficiente frecuencia, sería una mejor idea solicitar una cuenta de USPS y llamar a su propio servicio web .


17
Para evitar que alguien sufra de acidez estomacal y que reciba una carta de rechazo tres días después, casi nadie puede usar el validador de direcciones de USPS. Es por eso que la pantalla del tipo lo raspó en primer lugar. Está estrictamente limitado a organizaciones sin fines de lucro.
Nicholas Piasecki

5
El USPS no permite que estos datos se utilicen para nada más que enviar una carta o un paquete. En otras palabras, debe enviar un correo a la dirección que busca.

16
El USPS permitirá el uso comercial de IFF que no esté vendiendo ni limpiando sus bases de datos. Calificamos para una cuenta y la usamos para verificar / corregir TODAS las direcciones que ingresan a través de nuestros formularios web.
marklark

2
O tiene la intención de enviar un correo electrónico en algún momento. Inicialmente, a mi empresa se le negó el acceso a la API de USPS pero, después de aclarar nuestro uso previsto (y afirmar que no usaríamos la API para corregir datos antiguos), fuimos aprobados.
marklark

4
Solo puede usar la API de USPS si está verificando una dirección para realizar un envío por correo o hacer envíos: secure.shippingapis.com/registration - si no realiza envíos por correo o envía a través de USPS, busque una API alternativa que no tiene las restricciones de licencia.
Matt

9

Lo referiré a la publicación de mi blog: una lección sobre el almacenamiento de direcciones , entro en algunas de las técnicas y algoritmos utilizados en el proceso de validación de direcciones. Mi pensamiento clave es "No seas vago con el almacenamiento de direcciones, ¡no te causará nada más que dolores de cabeza en el futuro!"

Además, hay otra pregunta de StackOverflow que hace esta pregunta. Titulado ¿Cómo se deben almacenar las direcciones geográficas internacionales en una base de datos relacional ?


8

Durante el desarrollo de un servicio interno de verificación de direcciones en una empresa alemana para la que solía trabajar, me encontré con varias formas de abordar este problema. Haré todo lo posible para resumir mis hallazgos a continuación:

Software gratuito de código abierto

Claramente, el primer enfoque que cualquiera tomaría es uno de código abierto (como openstreetmap.org ), lo cual nunca es una mala idea. Pero si realmente puedes darle un uso bueno y confiable a esto, depende mucho de cuánto necesites confiar en los resultados.

Las direcciones son algo increíblemente variable. Verificar las direcciones de EE. UU. No es una tarea fácil, pero soportable, pero una vez que vaya a Europa, especialmente al Reino Unido con su extenso sistema de código postal, el enfoque de código abierto simplemente carecerá de datos.

Servicios web / API

Software de clase empresarial

El dinero lo hace, obviamente. Pero no todas las empresas o desarrolladores pueden gastar ~ $ 0.15 por búsqueda de dirección (eso es $ 150 por 1,000 solicitudes de API), un modelo comercial muy costoso que la gran mayoría de las API de validación de direcciones han implementado.

Lo que terminé integrando: streetlayer API

Como no estaba dispuesto a adoptar el enfoque programático de verificar los datos de la dirección manualmente, finalmente llegué a la conclusión de que necesitaba una API con una etiqueta de precio que no haría que mi jefe quisiera despedirme y aún así entregarme de manera sólida y confiable. resultados de verificación internacional.

Para resumir, terminé integrando una API construida por una capa, llamada "API streetlayer". Me convenció fácilmente con una integración JSON simple, resultados de validación sorprendentemente precisos y su precio amigable para el desarrollador. Además, 100 solicitudes / mes son totalmente gratuitas.

¡Espero que esto ayude!


buena respuesta, desafortunadamente la API de streetlayer se cerrará la próxima semana (el 2017-07-03). ¿Existen alternativas por menos del 15% por solicitud?
Chris

1

He utilizado los servicios de http://www.melissadata.com Su "objeto de dirección" funciona muy bien. Es caro, sí. Pero cuando considera los costos de escribir sus propias soluciones, el costo de los datos sucios en su aplicación, los remitentes de correo devueltos, las ventas perdidas y similares, los costos pueden justificarse.


1

También puede probar las soluciones de calidad de datos de SAP, que están disponibles tanto en una plataforma de servidor que procesa una gran cantidad de solicitudes como en un SDK integrable si desea ejecutarlo en proceso con su aplicación. Lo usamos en nuestra aplicación y es muy robusto y escalable.


1

Como se ve en 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);

1

Puede probar la API "IdentifyAddress" de Pitney Bowes disponible en: https://identify.pitneybowes.com/

El servicio analiza y compara las direcciones de entrada con las bases de datos de direcciones conocidas en todo el mundo para generar un detalle estandarizado. Corrige direcciones, agrega información postal faltante y la formatea utilizando el formato preferido por la autoridad postal correspondiente. También utilizo bases de datos de direcciones adicionales para que pueda proporcionar detalles mejorados, incluida la calidad de la dirección, el tipo de dirección, la transliteración (por ejemplo, del kanji chino a los caracteres latinos) y si una dirección está validada para el local / número de casa, calle o ciudad. de información de referencia.

Encontrará una gran cantidad de muestras y sdk disponibles en el sitio y me pareció extremadamente fácil de integrar.



0

Hay empresas que prestan este servicio. Las oficinas de servicio que se ocupan del envío masivo de correos limpiarán una lista de correo completa para que esté en el formato adecuado, lo que resulta en un descuento en el envío. El USPS vende bases de datos con información de direcciones que se pueden utilizar para desarrollar soluciones personalizadas. También tienen listas de proveedores aprobados que brindan este tipo de software y servicio.

Hay algunos (pero no muchos) paquetes que tienen API para conectar la validación de direcciones en su software.

Sin embargo, tienes razón en que es un problema bastante desagradable.

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


0

Como se mencionó, existen muchos servicios, si está buscando validar realmente la dirección completa, le recomiendo encarecidamente que elija un servicio de tipo Servicio web para asegurarse de que su aplicación pueda reconocer rápidamente los cambios.

Además de los servicios enumerados anteriormente, webservice.net tiene este servicio de validación de direcciones de EE. UU. http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=24


0

Hemos tenido éxito con Perfect Address .

Su base de datos tiene todos los nombres de calles de EE. UU. Y rangos de números de calles. También actúa como un analizador bastante decente para los campos de direcciones de forma libre, si tiene la suerte de tener ese tipo de datos.


Muy interesante ... su sitio web de aspecto antiguo me hace preguntarme si todavía están en el negocio o si son confiables.
Anthony Griggs

Ha pasado un tiempo desde que estuve en la empresa donde usamos eso. No parece que hayan cambiado mucho, pero aún afirman tener datos actualizados.
Jason DeFontes

0

Validar que es una dirección válida es una cosa.

Pero si está tratando de validar que una persona determinada vive en una dirección determinada, su única casi garantía sería un correo de prueba a la dirección, e incluso eso no es seguro si la persona está organizada o conoce a alguien en esa dirección.

De lo contrario, las personas podrían especificar una dirección aleatoria arbitraria que saben que existe y no significaría nada para usted.

Lo mejor que puede hacer para obtener resultados inmediatos es solicitar al usuario que envíe una copia fotografiada / escaneada del encabezado de su extracto bancario o alguna otra prueba de residencia reciente, porque al menos entonces tienen que esforzarse más para olvidarlo, y falsificar dichas cosas se muestran fácilmente con un nivel básico de análisis forense de imágenes.


0

No existe una solución global. Para cualquier país, en el mejor de los casos, es bastante complicado.

En el Reino Unido, la Oficina de Correos controla las direcciones postales y puede proporcionar (a un costo) información de dirección para fines de validación.

Las agencias gubernamentales también mantienen una lista extensa de direcciones, que se recopilan de manera centralizada en el NLPG (NLPG).

Realmente validar contra estas listas es muy difícil. La mayoría de la gente ni siquiera sabe exactamente cómo es su dirección, ya que está en la oficina de correos. Algunas empresas ni siquiera saben qué número se encuentran en una calle en particular.

Su mejor opción es acercarse a una empresa que se especialice en este tipo de cosas.


0

Para los datos de direcciones basados ​​en nosotros, mi empresa ha utilizado GeoStan . Tiene enlaces para C y Java (y creamos un enlace Perl). Tenga en cuenta que es un producto comercial y no es barato. Sin embargo, es bastante rápido (~ 300 direcciones por segundo) y ofrece características como certificación CASS (descuento por correo masivo de USPS), marcación DPV (verificación del punto de entrega) y codificación geográfica LON / LAT.

Hay un módulo de Perl Geo :: PostalAddress , pero usa heurística y no tiene las otras características mencionadas para GeoStan.

Editar: algunos han mencionado 'hacerlo usted mismo', si decide hacerlo, una buena fuente de información para comenzar es el Conjunto de datos del tigre del censo de EE. UU. , Que contiene mucha información sobre los EE. UU., Incluida la información de la dirección.




0

El servicio Fixaddress.com está disponible y proporciona los siguientes servicios,

1) Validación de direcciones.

2) Corrección de dirección.

3) Abordar la corrección ortográfica.

4) Corregir direcciones de errores fonéticos.

Fixaddress.com utiliza datos de USPS y Tiger como datos de referencia.

Para obtener más detalles, visite el enlace a continuación,

http://www.fixaddress.com/


-1

Para direcciones de EE. UU., Puede solicitar un estado válido y verificar que el código postal sea válido. Incluso podría verificar que el código postal esté en el estado correcto, pero más allá de eso, no creo que haya muchas pruebas que pueda ejecutar que no proporcionen muchos falsos negativos.

¿Qué está intentando hacer? ¿Evitar errores simples o hacer cumplir algún tipo de verificación de identidad?


Tienes que utilizar servicios de pago de terceros.
mmcdole

No es necesario que utilice herramientas de terceros. El USPS tiene servicios web que hacen esto.
Brian D Foy

En realidad, si la tarea que está realizando es "asegurarse de que esta dirección sea aceptable para los servicios postales locales", entonces, en los Estados Unidos, el USPS podría considerarse la segunda parte (pero eso hace que el cliente que envió la dirección sea una especie de tercero).
tripleee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.