Come esegui la convalida dell'indirizzo? [chiuso]


89

È anche possibile eseguire la convalida dell'indirizzo (fisico, non e-mail)? Sembra che l'enorme numero di formati di indirizzi, anche solo negli Stati Uniti, renderebbe questo compito abbastanza difficile. D'altra parte, sembra un'attività necessaria per diversi requisiti aziendali.


23
qualunque cosa tu faccia, se l'indirizzo sembra non valido, lascia che l'utente selezioni che è effettivamente valido, non rifiutarlo semplicemente perché il validatore dice che non è valido.
Pim Jager

Intendi "completamento automatico dell'indirizzo" o "convalida dell'indirizzo"? Voglio dire che nessun servizio saprà mai tutti i cambiamenti che avvengono nel mondo reale. Ogni minuto appaiono milioni di nuovi indirizzi e quelli vecchi vengono demoliti. E sto parlando a livello locale ora, nell'ambito di un pianeta.
Yevgeniy Afanasyev

Risposte:


27

Ecco un modo gratuito e una sorta di "fuori dagli schemi" per farlo. Non perfetto al 100%, ma dovrebbe rifiutare indirizzi palesemente inesistenti.

Invia l'intero indirizzo al servizio web di geocodifica di Google . Questo servizio tenta di restituire le coordinate esatte della posizione che gli dai, cioè latitudine e longitudine.

Nella mia esperienza, se l'indirizzo non è valido, otterrai un risultato di 602 dal servizio. C'è sicuramente la possibilità di falsi positivi o falsi negativi, ma usato in combinazione con altri controlli di coerenza potrebbe essere utile.

( Il servizio web di geocodifica di Yahoo , d'altra parte, restituirà le coordinate del centro della città se la città esiste ma il resto dell'indirizzo è fasullo. Potenzialmente utile purché presti molta attenzione al campo "precisione" in il risultato).


4
C'è qualcuno che ha effettivamente utilizzato questo metodo su un sistema live?
Aston

27
Google e i TOS di Yahoo vietano l'utilizzo del loro servizio di geocodifica se non in combinazione con l'uso di una mappa visualizzata all'utente. Trova qualcosa di più simile a quello che ha suggerito Jonathan Oliver. Vedi: code.google.com/apis/maps/terms.html
Matt

1
Non ottengo i suddetti risultati 602 quando inserisco un indirizzo errato.
HK1

9
Questa in realtà NON dovrebbe essere la risposta selezionata. Viola i termini di servizio di Google e in realtà non convalida gli indirizzi. Google utilizza molta intelligenza per "indovinare" quale indirizzo volevi anche quando le informazioni sono leggermente scarse. Google restituirà anche un geocodice se dici di inserire 55 Main St e Google sa che c'è un 50 Main Street e un 60 Main Street restituirà un geocoding riuscito calcolando la media della distanza, anche se un 55 Main Street non lo fa esistere. È necessario utilizzare un vero servizio di convalida come USPS preferibilmente o Experian o SmartyStreets.
jacurtis

1
Ciò renderebbe una meravigliosa applicazione Blockchain in cui tutti contribuiscono con un nodo memorizzando bit e pezzi di un immenso database in continua evoluzione ...
decoder7283

21

Ci sono un certo numero di buone risposte qui, ma la maggior parte di esse presuppone che l'utente desideri una soluzione "API" in cui deve scrivere codice per connettersi a un servizio di terze parti e / o eseguire lo screen scraping dell'USPS. Tutto ciò è positivo, ma dovrebbe essere preso in considerazione nei requisiti aziendali e nei costi associati all'implementazione e quindi valutato rispetto ai vantaggi desiderati.

A seconda dei requisiti aziendali e del modo in cui i dati vengono ricevuti nel sistema, una soluzione di elaborazione degli indirizzi in tempo reale può essere la soluzione migliore. Se è necessaria una soluzione in tempo reale, ti consigliamo di considerare il contratto di licenza e le limitazioni tecniche delle API di Google Maps / Bing / Yahoo. In genere limitano il numero di chiamate che puoi effettuare ogni giorno. L'API degli strumenti web di USPS è la stessa in quanto limita come / perché puoi usare il loro sistema e come puoi usare i dati in seguito.

Allo stesso tempo, ci sono una manciata di ottimi fornitori di servizi che possono facilmente elaborare un elenco statico di indirizzi. In sostanza, dai al fornitore di servizi un file CSV o un file Excel, lo puliscono e te lo restituiscono. Di solito è un contratto una tantum senza impegno o obbligo a lungo termine.

Divulgazione completa: sono il fondatore di SmartyStreets. Effettuiamo la verifica degli indirizzi per gli indirizzi negli Stati Uniti. Siamo facilmente in grado di certificare CASS un elenco e offriamo anche un'API del servizio web di verifica degli indirizzi . Non abbiamo costi nascosti, contratti o altro. Usi il nostro servizio finché non ne hai più bisogno e puoi andartene. (A differenza delle società di telefonia cellulare che richiedono un contratto.)


1
Perfetto, proprio quello che stavo cercando. E lasciami dire che hai stile, signore. Sito dall'aspetto piacevole.
Cory Mawhorter

2
Usiamo SmartyStreets ed è fantastico.
JerSchneid

17
Il costo di SmartyStreet per 1.000 ricerche è di $ 30. Ti ha salvato un clic.
William Entriken

1.000 ricerche = 66 $ per internazionali
Robert Sinclair

In realtà l'USPS ha un'interfaccia REST per questo ... tuttavia, e questa è ENORME però ... se colpisci questa cosa con uno script per convalidare un database pieno di indirizzi, ti banneranno. Puoi convalidare l'immissione dei dati dell'utente con esso, quindi va bene per l'uso su un modulo Web in cui gli hit API saranno temporizzati in modo casuale. Assicurati solo che il tuo modulo abbia la protezione del bot o otterrai l'accesso all'API DoS in breve tempo. Anche questo è valido solo per gli indirizzi statunitensi.
Neil Davis

15

USPS ha un servizio di pulizia degli indirizzi online , che qualcuno ha inserito sullo schermo nel servizio web di un uomo povero. Tuttavia, se lo fai abbastanza spesso, sarebbe un'idea migliore richiedere un account USPS e chiamare il proprio servizio web .


17
Per salvare chiunque il bruciore di stomaco dal farlo e ricevere una lettera di rifiuto tre giorni dopo, quasi nessuno è autorizzato a utilizzare il validatore di indirizzi di USPS. Ecco perché lo schermo del ragazzo l'ha raschiato in primo luogo. È strettamente limitato alle organizzazioni senza scopo di lucro.
Nicholas Piasecki

5
L'USPS non consente l'utilizzo di questi dati per scopi diversi dall'invio di una lettera o di un pacco. In altre parole, devi inviare la posta all'indirizzo che cerchi.

16
L'USPS consentirà l'uso commerciale IFF non stai rivendendo o pulendo i tuoi database. Ci siamo qualificati per un account e lo utilizziamo per verificare / correggere TUTTI gli indirizzi che arrivano tramite i nostri moduli web.
marklark

2
O intendi spedire a un certo punto nel tempo. Inizialmente alla mia azienda è stato negato l'accesso all'API USPS ma, dopo aver chiarito il nostro uso previsto (e aver affermato che non avremmo utilizzato l'API per correggere i vecchi dati), siamo stati approvati.
marklark

4
Puoi utilizzare l'API di USPS solo se stai verificando un indirizzo per eseguire una spedizione o effettuare spedizioni: secure.shippingapis.com/registration - se non effettui spedizioni o spedisci tramite USPS, trova un'API alternativa che non ha le limitazioni di licenza.
Matt

9

Ti rimando al mio post sul blog - Una lezione sull'archiviazione degli indirizzi , approfondisco alcune delle tecniche e degli algoritmi utilizzati nel processo di convalida degli indirizzi. Il mio pensiero chiave è "Non essere pigro con l'archiviazione degli indirizzi, non ti causerà altro che mal di testa in futuro!"

Inoltre, c'è un'altra domanda StackOverflow che pone questa domanda. Intitolato Come devono essere archiviati gli indirizzi geografici internazionali in un database relazionale .


8

Durante lo sviluppo di un servizio interno di verifica dell'indirizzo presso un'azienda tedesca per cui lavoravo, mi sono imbattuto in diversi modi per affrontare questo problema. Farò del mio meglio per riassumere i miei risultati di seguito:

Software open source gratuito

Chiaramente, il primo approccio che chiunque dovrebbe adottare è uno open-source (come openstreetmap.org ), che non è mai una cattiva idea. Ma il fatto che tu possa davvero utilizzarlo in modo efficace e affidabile dipende molto da quanto devi fare affidamento sui risultati.

Gli indirizzi sono una cosa incredibilmente variabile. Verificare gli indirizzi degli Stati Uniti non è un compito facile, ma sopportabile, ma una volta che andrai in Europa, in particolare nel Regno Unito con il loro vasto sistema di codici postali, l'approccio open source sarà semplicemente privo di dati.

Servizi Web / API

Software di classe enterprise

Il denaro lo fa, ovviamente. Ma non tutte le aziende o gli sviluppatori possono spendere ~ $ 0,15 per ricerca indirizzo (ovvero $ 150 per 1.000 richieste API): un modello di business molto costoso implementato dalla stragrande maggioranza delle API di convalida degli indirizzi.

Quello che ho finito per integrare: API streetlayer

Dal momento che non ero disposto ad assumere l'approccio programmatico della verifica manuale dei dati degli indirizzi, sono finalmente giunto alla conclusione che avevo bisogno di un'API con un prezzo che non avrebbe indotto il mio capo a volermi licenziare e fornire comunque solido e affidabile risultati della verifica internazionale.

Per farla breve, ho finito per integrare un'API costruita da apilayer, chiamata "streetlayer API". Sono stato facilmente convinto da una semplice integrazione JSON, risultati di convalida sorprendentemente accurati e il loro prezzo intuitivo per gli sviluppatori. Inoltre, 100 richieste / mese sono completamente gratuite.

Spero che sia di aiuto!


buona risposta, purtroppo l'API di streetlayer verrà chiusa la prossima settimana (il 03/07/2017). esistono alternative disponibili per meno del 15 cent per richiesta?
Chris

1

Ho utilizzato i servizi di http://www.melissadata.com Il loro "oggetto indirizzo" funziona molto bene. È costoso, sì. Ma se si considerano i costi di scrittura delle proprie soluzioni, il costo dei dati sporchi nella propria applicazione, i mailer restituiti - vendite perse e simili - i costi possono essere giustificati.


1

Puoi anche provare le soluzioni SAP per la qualità dei dati, disponibili sia su una piattaforma server che sta elaborando un gran numero di richieste, sia come SDK incorporabile se desideri eseguirlo in corso con la tua applicazione. Lo usiamo nella nostra applicazione ed è molto robusto e scalabile.


1

Come visto su 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

Puoi provare l'api "IdentifyAddress" di Pitney Bowes disponibile su - https://identify.pitneybowes.com/

Il servizio analizza e confronta gli indirizzi di input con i database di indirizzi noti in tutto il mondo per produrre un dettaglio standardizzato. Corregge gli indirizzi, aggiunge le informazioni postali mancanti e le formatta utilizzando il formato preferito dall'autorità postale applicabile. Utilizzo anche database di indirizzi aggiuntivi in ​​modo che possa fornire dettagli avanzati, tra cui la qualità dell'indirizzo, il tipo di indirizzo, la traslitterazione (ad esempio dal kanji cinese ai caratteri latini) e se un indirizzo è convalidato a livello di sede / numero civico, via o città di informazioni di riferimento.

Troverai molti campioni e sdk disponibili sul sito e l'ho trovato estremamente facile da integrare.



0

Ci sono aziende che forniscono questo servizio. Gli uffici di servizio che si occupano di mailing di massa ripuliranno un'intera mailing list in modo che sia nel formato corretto, il che si traduce in uno sconto sulle spese di spedizione. L'USPS vende database di informazioni sugli indirizzi che possono essere utilizzati per sviluppare soluzioni personalizzate. Hanno anche elenchi di fornitori approvati che forniscono questo tipo di software e servizi.

Ci sono alcuni (ma non molti) pacchetti che dispongono di API per l'hooking della convalida degli indirizzi nel software.

Tuttavia, hai ragione che è un problema piuttosto brutto.

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


0

Come accennato, ci sono molti servizi là fuori, se stai cercando di convalidare veramente l'intero indirizzo, ti consiglio vivamente di andare con un servizio di tipo Web Service per assicurarti che le modifiche possano essere rapidamente riconosciute dalla tua applicazione.

Oltre ai servizi sopra elencati, webservice.net dispone di questo servizio di convalida degli indirizzi negli Stati Uniti. http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=24


0

Abbiamo avuto successo con Perfect Address .

Il loro database contiene tutti i nomi delle strade e gli intervalli di numeri civici degli Stati Uniti. Agisce anche come un parser abbastanza decente per i campi degli indirizzi in formato libero, se sei abbastanza fortunato da avere quel tipo di dati.


Molto interessante ... il loro sito Web dall'aspetto antico mi fa chiedere se sono ancora in attività o affidabili però?
Anthony Griggs

È passato un po 'di tempo dall'ultima volta che lavoravo nell'azienda in cui lo usavamo. Non sembra che siano cambiati molto, ma affermano ancora di avere dati aggiornati.
Jason DeFontes

0

Convalidare che sia un indirizzo valido è una cosa.

Ma se stai cercando di convalidare una data persona vive a un dato indirizzo, la tua unica quasi garanzia sarebbe una mail di prova all'indirizzo, e anche questo non è certo se la persona è organizzata o conosce qualcuno a quell'indirizzo.

Altrimenti le persone potrebbero semplicemente specificare un indirizzo casuale arbitrario che sanno che esiste e non significherebbe nulla per te.

Il meglio che puoi fare per ottenere risultati immediati è chiedere all'utente di inviare una copia fotografata / scannerizzata dell'intestazione dell'estratto conto bancario o di qualche altra prova di recente residenza, perché almeno allora deve lavorare di più per dimenticarlo, e la falsificazione di queste cose si rivela facilmente con un livello base di analisi forense delle immagini.


0

Non esiste una soluzione globale. Per ogni dato paese è nel migliore dei casi piuttosto complicato.

Nel Regno Unito, PostOffice controlla gli indirizzi postali e può fornire (a pagamento) informazioni sull'indirizzo a scopo di convalida.

Anche le agenzie governative mantengono un ampio elenco di indirizzi, che sono raccolti centralmente nel NLPG (National Land and Property Gazetteer).

Effettivamente la convalida rispetto a questi elenchi è molto difficile. La maggior parte delle persone non sa nemmeno esattamente come viene tenuto il proprio indirizzo da PostOffice. Alcune aziende non sanno nemmeno che numero si trovano in una determinata strada.

La soluzione migliore è rivolgersi a un'azienda specializzata in questo genere di cose.


0

Per i dati degli indirizzi basati negli Stati Uniti la mia azienda ha utilizzato GeoStan . Ha collegamenti per C e Java (e abbiamo creato un collegamento Perl). Nota che è un prodotto commerciale e non è economico. È abbastanza veloce (~ 300 indirizzi al secondo) e offre funzionalità come la certificazione CASS (sconto per posta all'ingrosso USPS), il contrassegno DPV (verifica del punto di consegna) e la geocodifica LON / LAT.

C'è un modulo Perl Geo :: PostalAddress , ma usa l'euristica e non ha le altre caratteristiche menzionate per GeoStan.

Modifica: alcuni hanno menzionato il "fai da te", se decidi di farlo, una buona fonte di informazioni con cui iniziare è il set di dati del censimento degli Stati Uniti , che contiene molte informazioni sugli Stati Uniti, comprese le informazioni sull'indirizzo.




0

È disponibile il servizio Fixaddress.com che fornisce i seguenti servizi,

1) Convalida dell'indirizzo.

2) Correzione dell'indirizzo.

3) Correzione ortografica dell'indirizzo.

4) Correggi indirizzi errori fonetici.

Fixaddress.com utilizza i dati USPS e Tiger come dati di riferimento.

Per maggiori dettagli visita il link sottostante,

http://www.fixaddress.com/


-1

Per gli indirizzi statunitensi è possibile richiedere uno stato valido e verificare che il codice postale sia valido. Potresti anche controllare che il codice postale sia nello stato corretto, ma oltre a ciò non penso che ci siano molti test che potresti eseguire che non fornirebbero molti falsi negativi.

Cosa stai cercando di fare: prevenire semplici errori o applicare una sorta di controllo dell'identità?


Devi utilizzare servizi a pagamento di terze parti.
mmcdole

Non è necessario utilizzare strumenti di terze parti. L'USPS dispone di servizi web che lo fanno.
brian d foy

In realtà, se l'attività che stai eseguendo è "assicurati che questo indirizzo sia accettabile per i servizi postali locali", negli Stati Uniti, l'USPS potrebbe essere considerato come la seconda parte (ma ciò rende il cliente che ha inviato l'indirizzo come un terzo).
tripleee
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.