Evaluation examples

Showcase cases

Use this page to review representative parser behavior without exposing internal implementation details. The homepage and feature pages show the most attractive supported-country examples; this page keeps the deeper edge cases available for technical evaluators.

Supported countries

Representative outputs for currently showcased dedicated parsers. These examples are suitable for product evaluation and quick understanding.

US

United States — civic address, New York

House number precedes street, ZIP at end, 2-letter state. Gazetteer confirms NEW YORK via OurAirports municipality (P2); sub-division resolved to US-NY.

Input

350 Fifth Avenue, New York, NY 10118

Pro review summary
{
  "country": "US",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
UK

United Kingdom — 10 Downing Street

Postcode at end (SW1A 2AA). Core detects GB from the postcode pattern; Pro validates LONDON against the gazetteer.

Input

10 Downing Street, London SW1A 2AA

Pro review summary
{
  "country": "GB",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
DE

Germany — house number after street

German convention: street name before house number, 5-digit postcode before city.

Input

Unter den Linden 6, 10117 Berlin

Pro review summary
{
  "country": "DE",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
FR

France — street type before name

'Rue' street type precedes the name; BAN postcode data confirms 75001 → PARIS.

Input

75 Rue de Rivoli, 75001 Paris

Pro review summary
{
  "country": "FR",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
AU

Australia — state abbreviation + G-NAF postcode

Level/unit prefix, state abbreviation NSW before a 4-digit postcode; G-NAF data confirms the postcode/locality pair.

Input

Level 3, 80 Pacific Highway, North Sydney NSW 2060

Pro review summary
{
  "country": "AU",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.93,
    "final": 0.93
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
CA-EN

Canada (English) — multiple unit tokens

Two unit tokens (Unit 100, Suite 1002) ahead of the civic address; alternating letter-digit postal code.

Input

Unit 100, Suite 1002, 123 Bay Street, Toronto, ON M5H 2N2

Pro review summary
{
  "country": "CA",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
CA-FR

Canada (Québec French) — street-type-first

French layout ('3700, rue Saint-Denis'); Québec French detection is included in Core.

Input

3700, rue Saint-Denis, Montreal, QC H2X 3L7

Pro review summary
{
  "country": "CA",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.93,
    "final": 0.93
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
HK

Hong Kong — Pro-only parser

Flat/floor/building tokens, no postal code. HK parsing is a Pro-tier parser — see the Core output for what the free tier does with it.

Input

Flat 25, 12/F, Acacia Building, 150 Kennedy Road, Wan Chai, Hong Kong

Pro review summary
{
  "country": "HK",
  "confidence": {
    "parse": 0.82,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}

Edge cases

Selected real-world edge cases that show review signals, field confidence, compliance flags, and parser behavior when input is incomplete or unusual.

Found an address that should parse differently? Send us the anonymized input and expected behavior.

Edge

PO Box — FINTRAC non-compliant (CA)

Canadian FINTRAC rules for cross-border EFT require a civic street address. A PO Box without a street line sets fintracPoBoxInvalid=true.

Input

PO Box 9000, Victoria, BC V8W 9V6

Pro review summary
{
  "country": "CA",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.75,
    "final": 0.75
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166",
  "fintracPoBoxInvalid": true
}
Edge

City + country only — HYBRID pacs.008 shape

No street name is present, so PostalAddress.resolveType() falls through to HYBRID. TwnNm and Ctry are emitted as structured elements; nothing goes into AdrLine.

Input

London, United Kingdom

Pro review summary
{
  "country": "GB",
  "confidence": {
    "parse": 0.63,
    "gazetteer": 0,
    "final": 0
  },
  "needsReview": true,
  "inputStructure": "UNSTRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Country name variant — normalised to ISO code

PostalAddress.Builder.normalizeCountry() converts 'United States of America'-> 'US'. countryCodeStatus = KNOWN_ALIAS_NORMALIZED (not VALID_ISO3166) so needsReview may be set.

Input

1600 Pennsylvania Avenue NW, Washington DC 20500, United States of America

Pro review summary
{
  "country": "US",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

City typo — still resolved by gazetteer

'Tronoto' is not in OurAirports directly. The gazetteer falls through its priority levels; if no fuzzy match fires, confidence drops to P8 (0.55) and needsReview=true.

Input

123 Bay Street, Tronoto, ON M5J 2T3

Pro review summary
{
  "country": "CA",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.55,
    "final": 0.45000000000000007
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Apartment suffix on house number

Some US addresses encode the unit in the civic number field ('1234A'). The parser emits a HOUSE_NO token with the full value; it should not be split.

Input

1234A Main Street, Springfield, IL 62701

Pro review summary
{
  "country": "US",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Multi-line MT103 — split across 3 lines

MT103 field 70 delivers addresses as 35-char lines. parseLines preserves line boundaries so parsers can use positional logic across lines.

Input

10 Downing Street London SW1A 2AA United Kingdom

Pro review summary
{
  "country": "GB",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.75,
    "final": 0.75
  },
  "needsReview": false,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Long street name — StrtNm capped at 70 chars

pacs.008 limits StrtNm to 70 characters. Any excess is silently truncated by PostalAddress.Builder.streetName(). The raw street name is preserved in iso20022Result.

Input

1 Extraordinarily Long Boulevard Name That Exceeds The Seventy Character Limit Street, New York, NY 10001

Pro review summary
{
  "country": "FR",
  "confidence": {
    "parse": 0.82,
    "gazetteer": 0.55,
    "final": 0.55
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

No country signal — UNSTRUCTURED fallback

When no country is detected and no postal code pattern fires, CountryDetector returns UNKNOWN. Without a valid Ctry, PostalAddress resolveType() returns UNSTRUCTURED, and the serializer emits a WARNING comment in the XML output.

Input

somewhere on a street in a place

Pro review summary
{
  "country": "GB",
  "confidence": {
    "parse": 0.63,
    "gazetteer": 0,
    "final": 0
  },
  "needsReview": true,
  "inputStructure": "UNSTRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

No-comma suburb + multi-locality postcode confidence (AU)

"Hong Kong" appears twice as an unrelated organization/building name, tied on length with the trailing "AUSTRALIA" declaration — CountryDetector's tie-break resolves to the trailing one. The suburb ("SYDNEY") has no comma separating it from the street, so AuAddressParser reads it from the text after the street type instead. Postcode 2000 maps to several named localities (Sydney, Barangaroo, Darling Harbour, ...); the parsed city is checked against all of them, not just one arbitrary pick, so it resolves at high confidence instead of a false CROSS_CITY_MISMATCH penalty.

Input

Hong Kong Tourism Board - Sydney Office Level 4 Hong Kong House 80 Druitt Street SYDNEY NSW 2000 ,NEW SOUTH WALES, AUSTRALIA

Pro review summary
{
  "country": "AU",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Floor.unit suite numbering with a dot (AU)

AU commercial buildings commonly number suites as <level>.<unit> ("Suite 14.02" = suite 02 on level 14). The UNIT value must retain the dot rather than truncating at it.

Input

Suite 14.02, Level 14, 31 Market Street, Sydney, NSW 2009

Pro review summary
{
  "country": "AU",
  "confidence": {
    "parse": 0.95,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "VALID_ISO3166"
}
Edge

Native-script Chinese address (HK)

No Latin characters at all — CountryDetector recognises this via its CJK-character branch (unrelated to the COUNTRY_NAME_HINT text-scan used for Latin-script addresses), and HkChineseAddressHealer.translateToEnglish() runs before SWIFT normalisation to convert region (香港 -> Hong Kong), district (灣仔 -> Wan Chai), street (堅尼地道 -> Kennedy Road), house number, floor (楼 -> /F), and unit (室 -> Unit) into the Latin-script line order HkAddressParser expects.

Input

香港灣仔堅尼地道105號雅佳大廈12樓25室

Pro review summary
{
  "country": "HK",
  "confidence": {
    "parse": 0.68,
    "gazetteer": 0.97,
    "final": 0.97
  },
  "needsReview": false,
  "inputStructure": "HYBRID",
  "countryCodeStatus": "VALID_ISO3166"
}

Hostile input

Small examples used to show that the Core parser handles blank, punctuation-only, and ambiguous inputs without crashing.

Core

Garbage input

Punctuation-only input: nothing survives normalisation; country UNKNOWN.

Input

!!!???

Core output summary
{
  "country": null,
  "tokens": [
    {
      "type": "STREET_NAME",
      "value": "???"
    }
  ]
}
Core

Empty input

Blank address returns an empty parse rather than an error.

Input

(empty string)

Core output summary
{
  "country": null,
  "tokens": []
}
Core

Postcode only

A bare UK postcode is enough for Core to detect GB.

Input

SW1A 2AA

Core output summary
{
  "country": "GB",
  "tokens": [
    {
      "type": "POSTAL_CODE",
      "value": "SW1A 2AA"
    },
    {
      "type": "COUNTRY_CODE",
      "value": "GB"
    }
  ]
}
Core

Québec French diacritics

Diacritics (Gauchetière, Montréal) are normalised to SWIFT-safe ASCII.

Input

1000 rue de la Gauchetière Ouest, Bureau 2500, Montréal, QC H3B 4W5

Core output summary
{
  "country": "CA",
  "tokens": [
    {
      "type": "POSTAL_CODE",
      "value": "H3B 4W5"
    },
    {
      "type": "STATE_CODE",
      "value": "QC"
    },
    {
      "type": "CITY",
      "value": "BUREAU 2500 MONTREAL"
    },
    {
      "type": "HOUSE_NO",
      "value": "1000"
    },
    {
      "type": "STREET_TYPE",
      "value": "RUE"
    },
    {
      "type": "STREET_NAME",
      "value": "DE LA GAUCHETIERE"
    }
  ]
}
Core

5-digit postcode collision (FR input)

'75001 Paris' with no street context: the 5-digit pattern is ambiguous between DE and FR — Core picks DE. Honest limitation: postcode alone cannot disambiguate.

Input

75001 Paris

Core output summary
{
  "country": "DE",
  "tokens": [
    {
      "type": "POSTAL_CODE",
      "value": "75001"
    },
    {
      "type": "CITY",
      "value": "PARIS"
    },
    {
      "type": "COUNTRY_CODE",
      "value": "DE"
    }
  ]
}
Core

5-digit postcode collision (DE input)

'10117 Berlin' — same ambiguity, and here DE happens to be correct.

Input

10117 Berlin

Core output summary
{
  "country": "DE",
  "tokens": [
    {
      "type": "POSTAL_CODE",
      "value": "10117"
    },
    {
      "type": "CITY",
      "value": "BERLIN"
    },
    {
      "type": "COUNTRY_CODE",
      "value": "DE"
    }
  ]
}

Out of scope

Examples outside current dedicated parser coverage. These are intentionally shown as limitations so users know when review or custom parser work may be needed.

If one of these fallback-style cases matters to your workflow, submit the case you expected us to handle.

Review

China (romanised)

Country detected from the trailing name, but no CN parser exists: the district lands in the city field and confidence drops to the P8 floor (0.55), needsReview=true.

Input

1 Zhongshan East 1st Road, Huangpu District, Shanghai 200002, China

Pro review summary
{
  "country": "CN",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.55,
    "final": 0.55
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "UNSUPPORTED"
}
Review

China (native script)

Core has no CJK handling — SWIFT normalisation strips the script entirely, leaving '1'. Pro returns UNKNOWN with confidence 0.0. Fully out of scope.

Input

上海市黄浦区中山东一路1号

Pro review summary
{
  "country": "UNKNOWN",
  "confidence": {
    "parse": 0.53,
    "gazetteer": 0,
    "final": 0
  },
  "needsReview": true,
  "inputStructure": "UNSTRUCTURED",
  "countryCodeStatus": "KNOWN_ALIAS_NORMALIZED"
}
Review

India

The 6-digit PINCODE pattern is recognised for country detection, but with no IN parser the street ('12 MG Road') is misread as the city. Confidence 0.25, needsReview=true.

Input

Flat 4B, 12 MG Road, Bengaluru, Karnataka 560001, India

Pro review summary
{
  "country": "IN",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.55,
    "final": 0.55
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "UNSUPPORTED"
}
Review

South Korea

Country detected from the name; the district (Jung-gu) is misread as the city. Confidence 0.35, needsReview=true.

Input

166 Sejong-daero, Jung-gu, Seoul 04520, South Korea

Pro review summary
{
  "country": "KR",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.55,
    "final": 0.55
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "UNSUPPORTED"
}
Review

Mexico

The gazetteer resolves CUAUHTEMOC (0.93) because it is a real municipality — but it is the borough, not the town, and needsReview is still raised. Plausible-looking output still needs a dedicated MX parser.

Input

Av. Paseo de la Reforma 483, Cuauhtémoc, 06500 Ciudad de México, CDMX, Mexico

Pro review summary
{
  "country": "MX",
  "confidence": {
    "parse": 0.9,
    "gazetteer": 0.93,
    "final": 0.93
  },
  "needsReview": true,
  "inputStructure": "STRUCTURED",
  "countryCodeStatus": "UNSUPPORTED"
}

Known limitations

Address Tokenizer is designed for parsing, tokenization, normalization, confidence analysis, and data harmonization. It is not a geocoder, postal deliverability checker, or official government address verification service.

No geocoding

The library does not return latitude/longitude or route-planning results.

No deliverability guarantee

A successful parse does not mean the address can receive mail.

Dedicated parsers matter

Countries without dedicated parsers use fallback behavior and should be treated as reviewable when confidence is low.

Unsupported scripts may degrade

Native-script addresses outside supported parsers may normalize poorly and can require custom parser work.