它甚至可以執行地址(物理,而不是電子郵件)驗證?即使僅在美國,地址格式的數量似乎也會變得很艱鉅。另一方面,這似乎是一項任務,對於幾項業務需求來說是必要的。你如何進行地址驗證?
回答
這是一個免費的「外部」方式來做到這一點。不是100%完美,但它應該拒絕公然不存在的地址。
將整個地址提交到Google's geocoding web service。此服務會嘗試返回您輸入的位置的精確座標,即經緯度。
根據我的經驗,如果地址無效,您將從服務中獲得602的結果。肯定存在誤報或漏報的可能性,但與其他一致性檢查一起使用可能有用。
(Yahoo's geocoding web service,另一方面,如果城鎮存在但地址的其餘部分是假的,將返回城鎮中心的座標。只要您密切關注「精確」字段在結果中)。
對於美國的地址,你可以需要一個有效的狀態,並驗證拉鍊是有效的。你甚至可以檢查郵政編碼是否處於正確的狀態,但除此之外,我不認爲有很多測試可以運行,不會提供很多的錯誤否定。
什麼是你想怎麼辦 - 防止簡單的錯誤或執行某種身份檢查的?
您必須使用第三方付費服務。 – mmcdole 2008-09-30 15:19:47
您不必使用第三方工具。 USPS具有這樣的網絡服務。 – 2008-11-11 05:28:37
大聲笑 - 美國郵政網絡服務* IS *第三方! – 2009-07-16 22:35:23
對於我們基於地址的數據我的公司已經使用GeoStan。它具有C和Java的綁定(並且我們創建了一個Perl綁定)。請注意,這是一種商業產品,並不便宜。儘管(每秒約300個地址)速度相當快,並提供了CASS認證(USPS批量郵件折扣),DPV(交付點驗證)標記和LON/LAT地理編碼等功能。
有一個Perl模塊Geo::PostalAddress,但它使用啓發式和不具有GeoStan提到的其他功能。
編輯:有些人提到了「自己動手」,如果你決定這樣做,一開始的一個很好的信息來源是US Census Tiger Data Set,其中包含許多關於美國的信息,包括地址信息。
有些公司提供此服務。處理羣發郵件的服務機構將清理整個郵寄清單,以確保郵件格式正確,從而降低郵資折扣。 USPS銷售可用於開發定製解決方案的地址信息數據庫。他們還擁有提供此類軟件和服務的獲准供應商名單。
有一些(但不是很多)包含API用於將地址驗證掛鉤到您的軟件中。
但是,你是對的,它的一個非常討厭的問題。
如前所述還有許多服務,在那裏,如果你正在尋找真正驗證整個地址,然後我強烈建議與Web Service類型的服務將確保變更能夠迅速通過您的應用程序識別。
除了上面列出的服務,webservice.net有這個美國地址驗證服務。 http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=24
我們已通過Perfect Address成功。
他們的數據庫包含所有美國街道名稱和街道號碼範圍。如果您足夠幸運擁有這種數據,那麼它也可以作爲自由格式地址字段的相當不錯的解析器。
驗證它是一個有效的地址是一回事。
但是,如果你想驗證給定的人住在一個給定的地址,你唯一的保證將是一個測試郵件的地址,即使這是不確定的人是否組織或知道有人在那個地址。
否則,人們可能只是指定一個他們知道存在的任意隨機地址,這對您來說沒有任何意義。
爲了立竿見影的效果,您可以做的最好的方式是請求用戶發送銀行對賬單或其他近期居住證明的頭部的拍照/掃描副本,因爲至少他們必須更努力地工作忘記它,並鍛造說事情很容易顯示與基本級別的圖像取證分析。
我已經使用了http://www.melissadata.com的服務他們的「地址對象」工作得很好。它昂貴,是的。但是,如果考慮編寫自己的解決方案的成本,應用程序中髒數據的成本,退回的郵件程序 - 銷售損失等等,則成本可能是合理的。
沒有全局解決方案。對於任何一個特定的國家來說,它至多是相當棘手的。
在英國,PostOffice控制郵政地址,並且可以提供(按成本)地址信息用於驗證目的。
政府機構也有廣泛的地址列表,這些地址集中在NLPG(國家土地和財產地名錄)中。
實際上對這些列表進行驗證非常困難。大多數人甚至不知道他們的地址是如何由PostOffice掌握的。一些企業甚至不知道他們在特定街道上的數量。
最好的辦法是找一家專門從事這種事情的公司。
USPS有一個地址清理器online,有人有screen scraped成窮人的web服務。但是,如果您經常這樣做,最好申請USPS account並致電他們自己的webservice。
我會參考你的博客文章 - A lesson in address storage,我介紹一些地址驗證過程中使用的技術和算法。我的關鍵思想是「不要懶惰地址存儲,它會在未來導致你頭痛!」
此外,還有另一個StackOverflow問題,問這個問題。標題爲How should international geographic addresses be stored in a relational database。
雅虎也有一個Placemaker API.它只適用於地理位置,但它具有所有世界地點的通用身份證。
它看起來有在ISO list沒有標準。
您也可以嘗試SAP的數據質量解決方案,是在這兩個服務器平臺提供正在處理大量的請求或者如果你想在程序與應用程序運行一個可嵌入SDK。我們在我們的應用程序中使用它,它非常強大和可擴展。
這裏有很多很好的答案,但大多數都假設用戶需要一個「API」解決方案,他們必須編寫代碼連接到第三方服務和/或屏幕刮取USPS。這一切都很好,但應該考慮到與實施相關的業務需求和成本,然後與期望的收益進行權衡。
取決於該數據被接收到系統中的業務需求和方式,實時地址處理解決方案可能是最好的選擇。如果需要實時解決方案,您需要考慮Google Maps/Bing/Yahoo API的許可協議和技術限制。它們通常會限制您每天可以撥打的電話數量。美國郵政網絡工具API是相同的額外限制他們如何/爲什麼可以使用他們的系統,以及如何允許您以後使用這些數據。
與此同時,也有很大的服務提供商可以輕鬆地處理地址的靜態列表屈指可數。實質上,您向服務提供商提供一個CSV文件或Excel文件,他們將其清理並將其還給您。這是一次性交易,通常沒有長期承諾或義務—。
全面披露:我SmartyStreets的創始人。我們確實處理了美國境內地址的驗證。我們可以輕易地CASS certify a list,我們還提供了一個address verification web service API。我們沒有任何隱藏的費用,合同或任何東西。你使用我們的服務,直到你不再需要它,你可以走開。 (不同於手機公司需要一個合同。)
由於看到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);
NAICS.com中走出來,將增加各類關鍵業務數據,包括街道地址的API。這將在您的網站表單處理時即時發生。 https://www.naics.com/business-intelligence-api/
在我曾經工作過的德國公司開發室內地址驗證服務的過程中,我遇到了很多解決此問題的方法。我會盡我所能來總結我的發現如下:
免費,開源軟件
顯然,第一種方法的人會採取是一個開源的一個(像openstreetmap.org),這是從來沒有一個壞主意。但是,你是否真的可以把這個做好,可靠地使用,很大程度上取決於你需要依賴結果的程度。
地址是一個令人難以置信的變數。驗證美國地址並不是一件容易的事情,但是可以承受,但是一旦你去了歐洲,尤其是英國,他們擁有廣泛的郵政編碼系統,開放源代碼方法就會缺乏數據。
Web服務/ API的
企業級軟件
錢得到它完成,效果顯着。但並非每個企業或開發人員都可以在每個地址查找中花費大約0.15美元(對於1,000個API請求,這就是150美元) - 絕大多數地址驗證API已實施的非常昂貴的商業模式。
我最終什麼了整合:streetlayer API
由於我沒有願意承擔覈實地址數據的編程方式手動我終於得出了結論,我是需要一個API的一個價格標籤不會讓我的老闆想要解僱我,並且仍然提供穩定可靠的國際驗證結果。長話短說,我最終整合了一個由apilayer構建的API,叫做「streetlayer API」。我很容易通過簡單的JSON集成,令人驚訝的準確驗證結果和他們對開發人員友好的定價信服。此外,每月100個請求完全免費。
希望這會有所幫助!
Fixaddress.com服務提供以下服務,
1)地址驗證。
2)地址更正。
3)地址拼寫糾正。
4)正確解決語音錯誤。
Fixaddress.com使用USPS和Tiger數據作爲參考數據。
對於下面的鏈接更詳細的訪問,
你可以嘗試Pitney Bowes公司在「IdentifyAddress」提供的API - https://identify.pitneybowes.com/
服務分析和輸入地址與已知地址數據庫進行比較在世界各地輸出標準化的細節。它會更正地址,添加缺少的郵政信息並使用適用的郵政機構所偏好的格式對其進行格式化。我還使用其他地址數據庫,以便提供更加詳細的信息,包括地址質量,地址類型,音譯(例如從中文漢字拉丁字符)以及是否驗證了地址/房屋號碼,街道或城市級別的參考信息。
您會在網站上找到很多樣品和sdk,我發現它非常易於集成。
地址查找必須可靠執行的一個領域是VOIP E911服務。我知道公司可靠地使用以下服務:
帶寬。COM 9-1-1訪問API MSAG地址驗證
MSAG =主街道地址指南
https://www.bandwidth.com/9-1-1/
SmartyStreet美國街道地址API
- 1. 使用Google地圖進行地址驗證 - 檢查地址
- 2. 地址驗證
- 3. 地址驗證
- 4. 地址驗證
- 5. 在java中使用地理編碼(GoogleMapAPI)進行地址驗證
- 6. 使用Google地圖進行簡單地址驗證
- 7. 地點進行驗證
- 8. 驗證地址 - PHP
- 9. IP地址驗證
- 10. 你在webapp(後端)中進行驗證?
- 11. 如何禁用後綴地址驗證
- 12. 如何在C#中驗證IP地址
- 13. 如何獲取驗證地址?
- 14. 如何驗證電子郵件地址
- 15. 電子郵件地址驗證,如何?
- 16. NSIS:如何驗證IP地址框
- 17. 如何驗證電子郵件地址
- 18. 如何驗證Java中的Gmail地址
- 19. 如何進行驗證rails
- 20. 你如何在C++中進行整數驗證?
- 21. 你如何在FileHelpers上進行自定義驗證?
- 22. 使用Javascript進行街道地址驗證
- 23. 使用corona sdk進行電子郵件地址驗證
- 24. 在javascript中對電子郵件地址進行TLD驗證
- 25. 使用IP地址對用戶進行身份驗證
- 26. 僅使用Zipcode進行UPS地址驗證
- 27. 使用電子郵件地址進行Asp.Net身份驗證
- 28. 你如何進行java測驗?
- 29. 如何結合兩個正則表達式進行地址表單驗證?
- 30. 何處進行外部驗證驗證?
不管你做什麼,如果地址無效,讓用戶選擇它實際上是有效的,不要只是拒絕它,因爲驗證器說它是無效的。 – 2009-07-23 16:19:36
舊的問題,並且因爲它已關閉而暫時未更新。但是一個優秀和便宜的服務是地址驗證API,地址是http://matchbox.io/#address-validation-api – Joel 2015-12-17 19:09:27