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 paxmanfrom paxman.capabilities import X # Email, Country, ...
paxman.register_all_shipped() # once, before first usecontract = X.create_contract(...) # domain flags hereresult = paxman.canonicalize(text, contract)For the shared concepts behind these pages see Contracts, Pipeline, Execution Result, and the API Reference.
Choose by what you have
Section titled “Choose by what you have”| Your data looks like… | Read |
|---|---|
user@example.com, user at example dot com | |
2026-01-15, 01/02/2026, 2026/01/15 | Date |
US, United States, Alemania | Country |
4111 1111 1111 1111, 3782 822463 10005, PAN: 4716-2210-5188-5662 | CreditCard |
USD, $, euro, ¥ (identifiers without amounts) | Currency |
192.168.1.1, 2001:db8::1 | IP |
9780306406157, 0306406152 | ISBN |
0317-8471, 0378-5955 | ISSN |
US0378331005, GB0002634946 | ISIN |
0000 0001 2103 2683, 0000000121032683, urn:isni:… | ISNI |
5493000IBP32UQZ0KL24, LEI: 213800KUD8LAJWSQ9D15 | LEI |
en, en-US, zh-Hans-CN, German | Language |
USD 500, $500, 1.000,50 EUR (currency with amount) | Money |
+1 555 123 4567, (555) 234-5678, tel:+15551234567 | Phone |
kg, m/s², megahertz, kPa | SI Unit |
https://example.com, http://münchen.de | URL |
DEUTDEFF, DEUTDEFF500 | BIC |
00614141999996, GTIN: 00196618007309, 6 14141 99999 6 | GTIN |
48.8566, 2.3522, geo:48.8566,2.3522 | Coordinates |
Fe, iron, element 26 | ChemicalElement |
DE89370400440532013000 | IBAN |
00:1A:2B:3C:4D:5E | MacAddress |
0000-0002-1825-0097 | ORCID |
America/New_York, US/Eastern | Timezone |
UTC+5, +05:30, Z | UtcOffset |
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.de | Domain |
UNSPSC 44103103, 441217, UNSPSC000.44103103 | UNSPSC |
1995 XA, J95X00A, (433), 2040 P-L | MinorPlanet |
The set above reflects the current release. New capabilities are added in minor releases — check
paxman.capabilitiesor the latest release notes if you don’t see what you need.
What each page covers
Section titled “What each page covers”Every capability page answers the same questions in the same order:
- What it canonicalizes and what it explicitly does not.
- Recognized forms — what patterns match, with what grammars.
- Canonical output &
output_format— default and offered renderings. - Contract flags — which knobs change recognition and validation.
- Statuses — concrete
SUCCESS/MISSING/INVALID/AMBIGUOUSexamples. - Notebook snippet — runnable cleaning loop for a column.
- 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).
One mention per call
Section titled “One mention per call”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 ...