甚至可以执行地址(物理,而不是电子邮件)验证吗?似乎地址格式的绝对数量,即使仅在美国,也会使这项任务变得相当困难。另一方面,这似乎是满足多个业务需求所必需的任务。
20 回答
这是一种免费且“开箱即用”的方式。不是 100% 完美,但它应该拒绝公然不存在的地址。
将整个地址提交给Google 的地理编码网络服务。该服务尝试返回您提供给它的位置的确切坐标,即纬度和经度。
根据我的经验,如果地址无效,您将从服务中获得 602 的结果。肯定存在误报或误报的可能性,但与其他一致性检查结合使用可能会很有用。
(另一方面, Yahoo 的地理编码网络服务将返回该镇中心的坐标,如果该镇存在,但地址的其余部分是虚假的。只要您密切注意结果)。
这里有许多很好的答案,但其中大多数都假设用户想要一个“API”解决方案,他们必须编写代码来连接到第 3 方服务和/或屏幕抓取 USPS。这一切都很好,但应该考虑到与实施相关的业务需求和成本,然后权衡所需的收益。
根据业务需求和系统接收数据的方式,实时地址处理解决方案可能是最佳选择。如果需要实时解决方案,您需要考虑 Google Maps/Bing/Yahoo API 的许可协议和技术限制。他们通常会限制您每天可以拨打的电话数量。USPS 网络工具 API 是相同的,另外它们限制了您如何/为什么可以使用他们的系统,以及之后您如何被允许使用数据。
同时,有少数优秀的服务提供商可以轻松处理静态地址列表。本质上,您给服务提供商一个 CSV 文件或 Excel 文件,他们将其清理并取回给您。这是一次性的交易,通常没有长期承诺或义务。
全面披露:我是 SmartyStreets 的创始人。我们对美国境内的地址进行地址验证。我们可以轻松地对列表进行 CASS 认证,并且我们还提供地址验证 Web 服务 API。我们没有隐藏的费用、合同或任何东西。您使用我们的服务,直到您不再需要它并且您可以离开。(与需要合同的手机公司不同。)
USPS 有一个在线地址清理器,有人将它的屏幕抓取到一个穷人的网络服务中。但是,如果您经常这样做,最好申请一个USPS 帐户并调用他们自己的webservice。
我将向您推荐我的博客文章-地址存储课程,我将介绍地址验证过程中使用的一些技术和算法。我的主要想法是“地址存储不要偷懒,以后只会让你头疼!”
此外,还有另一个 StackOverflow 问题,它提出了题为“国际地理地址应如何存储在关系数据库中”的问题。
在我曾经工作过的一家德国公司开发内部地址验证服务的过程中,我遇到了许多解决这个问题的方法。我将尽我所能在下面总结我的发现:
免费的开源软件
显然,任何人都会采用的第一种方法是开源的(例如openstreetmap.org),这绝不是一个坏主意。但是,您能否真正将其用于良好和可靠的使用,很大程度上取决于您需要在多大程度上依赖结果。
地址是一个非常多变的东西。验证美国地址不是一件容易的事,但可以忍受,但是一旦你去欧洲,尤其是拥有广泛邮政编码系统的英国,开源方法将根本缺乏数据。
网络服务/API
企业级软件
很明显,钱可以解决问题。但并不是每个企业或开发人员每次地址查找都可以花费约 0.15 美元(即 1,000 个 API 请求需要 150 美元)——这是一种非常昂贵的商业模式,绝大多数地址验证 API 都已实施。
我最终集成的内容:streetlayer API
由于我不愿意采用手动验证地址数据的编程方法,我最终得出结论,我需要一个价格标签不会让我的老板想要解雇我并且仍然提供可靠可靠的 API国际验证结果。
长话短说,我最终集成了一个由 apilayer 构建的 API,称为“streetlayer API”。简单的 JSON 集成、令人惊讶的准确验证结果及其对开发人员友好的定价让我很容易信服。此外,每月 100 个请求完全免费。
希望这可以帮助!
我使用过http://www.melissadata.com的服务, 他们的“地址对象”运行良好。它的价格昂贵,是的。但是,当您考虑编写自己的解决方案的成本、应用程序中脏数据的成本、退回的邮件(销售损失等)时,这些成本是合理的。
您还可以尝试 SAP 的数据质量解决方案,该解决方案可在服务器平台处理大量请求时使用,如果您想在应用程序的进程中运行它,也可以作为可嵌入的 SDK 使用。我们在我们的应用程序中使用它,它非常健壮且可扩展。
正如在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);
Fixaddress.com 服务可提供以下服务,
1) 地址验证。
2)地址更正。
3) 地址拼写纠正。
4) 纠正拼音错误。
Fixaddress.com 使用 USPS 和 Tiger 数据作为参考数据。
有关更多详细信息,请访问以下链接,
您可以尝试 Pitney Bowes “IdentifyAddress” Api,网址为 - https://identify.pitneybowes.com/
该服务分析输入地址并将其与世界各地的已知地址数据库进行比较,以输出标准化的详细信息。它更正地址,添加丢失的邮政信息,并使用适用邮政当局首选的格式对其进行格式化。我还使用了额外的地址数据库,因此它可以提供增强的详细信息,包括地址质量、地址类型、音译(例如从中文汉字到拉丁字符)以及地址是否已验证到场所/门牌号、街道或城市级别的参考信息。
你会在网站上找到很多可用的示例和 sdk,我发现它非常容易集成。
必须可靠地执行地址查找的一个领域是 VOIP E911 服务。我知道公司为此可靠地使用以下服务:
Bandwidth.com 9-1-1 访问 API MSAG 地址验证
MSAG = 主街地址指南
https://www.bandwidth.com/9-1-1/
SmartyStreet美国街道地址 API
对于基于我们的地址数据,我的公司使用了 GeoStan。它具有 C 和 Java 的绑定(我们创建了一个 Perl 绑定)。请注意,它是一种商业产品,并不便宜。虽然它非常快(每秒约 300 个地址),并提供 CASS 认证(USPS 批量邮件折扣)、DPV(投递点验证)标记和 LON/LAT 地理编码等功能。
有一个 Perl 模块Geo::PostalAddress,但它使用启发式方法并且没有为 GeoStan 提到的其他功能。
编辑:有些人提到“自己做”,如果你决定这样做,一个很好的信息来源是美国人口普查老虎数据集,其中包含很多关于美国的信息,包括地址信息。
有提供这种服务的公司。处理群发邮件的服务机构将清理整个邮件列表以确保其格式正确,从而导致邮资折扣。USPS 销售可用于开发定制解决方案的地址信息数据库。他们还有提供此类软件和服务的经批准的供应商名单。
有一些(但不是很多)包具有用于将地址验证挂钩到您的软件的 API。
但是,您说得对,这是一个非常讨厌的问题。
如前所述,那里有许多服务,如果您希望真正验证整个地址,那么我强烈建议您使用 Web 服务类型的服务,以确保您的应用程序可以快速识别更改。
除了上面列出的服务之外,webservice.net 还有这个美国地址验证服务。http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=24
我们在Perfect Address方面取得了成功。
他们的数据库包含所有美国街道名称和街道号码范围。如果您有幸拥有这种数据,它还可以作为自由格式地址字段的相当不错的解析器。
验证它是一个有效的地址是一回事。
但是,如果您要验证给定的人住在给定的地址,那么您唯一几乎可以保证的就是发送到该地址的测试邮件,即使这样也不确定该人是否有组织或认识该地址的某人。
否则人们可以指定一个他们知道存在的任意随机地址,这对你来说毫无意义。
为了立即获得结果,您可以做的最好的事情是要求用户发送他们银行对账单或其他一些近期居住证明的照片/扫描副本,因为至少他们必须更加努力地忘记它,并且锻造说的事情很容易通过基本的图像取证分析显示出来。
没有全球解决方案。对于任何给定的国家来说,这充其量是相当棘手的。
在英国,邮局控制邮政地址,并且可以(有偿)提供地址信息以进行验证。
政府机构还保留一份广泛的地址列表,这些地址集中整理在 NLPG(国家土地和财产地名录)中。
实际上验证这些列表是非常困难的。大多数人甚至不知道他们的地址是如何被邮局保存的。有些企业甚至不知道他们在特定街道上的号码。
你最好的选择是联系一家专门从事这类事情的公司。
雅虎也有Placemaker API。它仅适用于位置,但它具有适用于所有世界位置的通用 ID。
看起来ISO 列表中没有标准。
NAICS.com 推出了一个 API,它将添加包括街道地址在内的各种关键业务数据。这将在处理您网站的表单时即时发生。https://www.naics.com/business-intelligence-api/
对于美国地址,您可以要求有效状态,并验证 zip 是否有效。您甚至可以检查邮政编码是否处于正确状态,但除此之外,我认为您可以运行的许多测试不会提供很多假阴性。
你想做什么——防止简单的错误或执行某种身份检查?