Skip to content

Capabilities — Overview

Each page below is a self-contained guide for one kind of identifier Paxman can canonicalize. Read the one that matches your data, copy the notebook snippet, and adapt the contract flags to your needs.

All capabilities share the same call shape — only the import, the factory, and the domain vocabulary change:

import paxman
from paxman.capabilities import X # Email, Country, ...
paxman.register_all_shipped() # once, before first use
contract = X.create_contract(...) # domain flags here
result = paxman.canonicalize(text, contract)

For the shared concepts behind these pages see Contracts, Pipeline, Execution Result, and the API Reference.


Your data looks like…Read
user@example.com, user at example dot comEmail
2026-01-15, 01/02/2026, 2026/01/15Date
US, United States, AlemaniaCountry
4111 1111 1111 1111, 3782 822463 10005, PAN: 4716-2210-5188-5662CreditCard
USD, $, euro, ¥ (identifiers without amounts)Currency
192.168.1.1, 2001:db8::1IP
9780306406157, 0306406152ISBN
0317-8471, 0378-5955ISSN
US0378331005, GB0002634946ISIN
0000 0001 2103 2683, 0000000121032683, urn:isni:…ISNI
5493000IBP32UQZ0KL24, LEI: 213800KUD8LAJWSQ9D15LEI
en, en-US, zh-Hans-CN, GermanLanguage
USD 500, $500, 1.000,50 EUR (currency with amount)Money
+1 555 123 4567, (555) 234-5678, tel:+15551234567Phone
kg, m/s², megahertz, kPaSI Unit
https://example.com, http://münchen.deURL
DEUTDEFF, DEUTDEFF500BIC
00614141999996, GTIN: 00196618007309, 6 14141 99999 6GTIN
48.8566, 2.3522, geo:48.8566,2.3522Coordinates
Fe, iron, element 26ChemicalElement
DE89370400440532013000IBAN
00:1A:2B:3C:4D:5EMacAddress
0000-0002-1825-0097ORCID
America/New_York, US/EasternTimezone
UTC+5, +05:30, ZUtcOffset
6ba7b810-9dad-11d1-80b4-00c04fd430c8, {…}, urn:uuid:…UUID
10.1038/nature12345, https://doi.org/10.1038/…, doi:10.1038/…DOI
example.com, münchen.de, XN--MNCHEN-3YA.deDomain
UNSPSC 44103103, 441217, UNSPSC000.44103103UNSPSC
1995 XA, J95X00A, (433), 2040 P-LMinorPlanet

The set above reflects the current release. New capabilities are added in minor releases — check paxman.capabilities or the latest release notes if you don’t see what you need.


Every capability page answers the same questions in the same order:

  1. What it canonicalizes and what it explicitly does not.
  2. Recognized forms — what patterns match, with what grammars.
  3. Canonical output & output_format — default and offered renderings.
  4. Contract flags — which knobs change recognition and validation.
  5. Statuses — concrete SUCCESS / MISSING / INVALID / AMBIGUOUS examples.
  6. Notebook snippet — runnable cleaning loop for a column.
  7. Provenance — which specifications vouch for the answer.

Start with the capability that matches your column; if you need more than one, register both and loop per cell (see the Segmentation Recipe for text that mixes kinds).


Paxman resolves one presumed entity per canonicalize() call (see Pipeline). Text that contains two different entities with different canonical values raises MultipleMentionsError rather than returning a merged answer — split first, then loop. To extract every mention in a longer text instead, use the batch API paxman.scan(), which returns per-capability Mention records (see API reference).

from paxman.core.errors import MultipleMentionsError
try:
result = paxman.canonicalize("alice@example.com, bob@example.org", contract)
except MultipleMentionsError:
# split the input and canonicalize each piece — see the segmentation recipe
...