2.2.363

every-app/open-seo2.2.363Jun 28, 2026by github-actions[bot]

AI Summary

This release introduces new PII recognizers for German, Swedish, Canadian, and UK data, along with updates to dependencies and the NLP engine. Significant effort was put into hardening supply-chain security and improving Docker configurations.

Key Highlights

  • Added German PII recognizers (DE_*)
  • Added Swedish personal ID and organisation recognizers
  • Added Canadian SIN recognizer
  • Added UK driving licence number recognizer
  • Slimmed down the NLP Engine for better performance

New Features

  • German PII recognizers (DE_*)
  • Swedish personal ID code pattern recognizer
  • Swedish Recognizer for Organisationsnummer
  • Canadian SIN recognizer
  • UK driving licence number recognizer
  • merge_entities_with_whitespace parameter for anonymize()

Full Release Notes

## What's Changed
* feat(analyzer): add German PII recognizers (DE_*) by @MvdB in https://github.com/data-privacy-stack/presidio/pull/1909
* build(deps): bump azure/login from 2.3.0 to 3.0.0 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1915
* build(deps): bump github/codeql-action from 4.32.6 to 4.34.1 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1914
* build(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1913
* Fix: config path resolution for PyPI installs (langextract recognizer) by @RonShakutai in https://github.com/data-privacy-stack/presidio/pull/1917
* build(deps): bump github/codeql-action from 4.34.1 to 4.35.1 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1920
* fix(ci): skip coverage PR comment step when not in a PR context by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/1921
* Swedish personal ID code pattern recognizer by @goveebee in https://github.com/data-privacy-stack/presidio/pull/1912
* Publish sdist alongside wheels to PyPI by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/1924
* build(deps): bump python from 3.13-windowsservercore to 3.15.0a7-windowsservercore in /presidio-anonymizer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1927
* Swedish Recognizer for Organisationsnummer by @goveebee in https://github.com/data-privacy-stack/presidio/pull/1918
* Fix conf files handling in Docker + Stanza model accessibility issues by @TheSabari07 in https://github.com/data-privacy-stack/presidio/pull/1930
* fix: revert presidio-analyzer Dockerfiles to Python 3.12 and configure dependabot to allow only patch and digest updates by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1928
* build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1935
* build(deps): bump python from `f50f56f` to `f1927c7` in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1936
* Add Canadian SIN recognizer by @kennionblack in https://github.com/data-privacy-stack/presidio/pull/1934
* build(deps): bump python from `fb83750` to `5e59aae` in /presidio-anonymizer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1937
* build(deps): bump python from `f3fa41d` to `5072b08` in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1938
* Update IP recognizer regexes  by @kennionblack in https://github.com/data-privacy-stack/presidio/pull/1941
* Slim NLP Engine by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/1916
* chore: harden supply-chain security — dependabot.yml controls and pyproject.toml defensive version ranges by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/1965
* build(deps): bump python from `5072b08` to `804ddf3` in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1968
* build(deps): bump python from 3.13-slim to 3.13.13-slim in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1967
* build(deps): bump python from `5e59aae` to `bc389f7` in /presidio-anonymizer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1966
* Updated copilot instructions by @omri374 in https://github.com/data-privacy-stack/presidio/pull/1866
* feat: Add UK driving licence number recognizer by @tee-jagz in https://github.com/data-privacy-stack/presidio/pull/1857
* feat: add merge_entities_with_whitespace param to anonymize() by @harishkernel in https://github.com/data-privacy-stack/presidio/pull/1932
* build(deps-dev): update azure-identity requirement from <2.0.0,>=1.23.0 to >=1.25.3,<2.0.0 in /presidio-anonymizer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1983
* build(deps-dev): update stanza requirement from <2.0.0,>=1.10.1 to >=1.11.1,<2.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1982
* build(deps-dev): update gliner requirement from <1.0.0,>=0.2.13 to >=0.2.26,<1.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1981
* build(deps): update opencv-python requirement from <5.0.0,>=4.0.0 to >=4.13.0.92,<5.0.0 in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1980
* build(deps-dev): update spacy-huggingface-pipelines requirement from <1.0.0,>=0.0.1 to >=0.0.4,<1.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1979
* build(deps-dev): update gunicorn requirement from <26.0.0,>=20.0.0 to >=25.3.0,<26.0.0 in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1978
* build(deps): update pytesseract requirement from <0.4,>=0.3.7 to >=0.3.13,<0.4 in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1977
* build(deps): bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1976
* build(deps): bump github/codeql-action from 4.35.1 to 4.35.2 by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1975
* Add dependency groups for Docker and actions by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/1984
* build(deps): update pydantic requirement from <3.0.0,>=2.0.0 to >=2.12.5,<3.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1989
* build(deps): update pyyaml requirement from <7.0.0,>=6.0.0 to >=6.0.3,<7.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1988
* build(deps-dev): update azure-ai-textanalytics requirement from <6.0.0,>=5.3.0 to >=5.4.0,<6.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1987
* build(deps): update azure-ai-formrecognizer requirement from <4.0.0,>=3.3.0 to >=3.3.3,<4.0.0 in /presidio-image-redactor by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1986
* build(deps): bump actions/github-script from 8.0.0 to 9.0.0 in the actions-deps group by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1985
* test(ip-recognizer): add ::1 loopback and mixed :: / ::1 test cases by @extrasmall0 in https://github.com/data-privacy-stack/presidio/pull/1940
* Fix dependabot coverage for all pyproject.toml package manifests by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/1929
* build(deps): bump py-cov-action/python-coverage-comment-action from 3.40 to 3.41 in the actions-deps group by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1991
* build(deps): update phonenumbers requirement from <10.0.0,>=8.12 to >=9.0.28,<10.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1994
* build(deps): update tldextract requirement from <6.0.0,>=3.0.0 to >=5.3.1,<6.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1992
* build(deps-dev): update azure-core requirement from <2.0.0,>=1.20.0 to >=1.39.0,<2.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1993
* build(deps): bump python-dotenv from 1.0.0 to 1.2.2 in /docs/samples/deployments/openai-anonymaztion-and-deanonymaztion-best-practices/src/client_app in the pip group across 1 directory by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/1996
* feat: add Turkish National ID (TR_NATIONAL_ID) recognizer by @mrcuren in https://github.com/data-privacy-stack/presidio/pull/1995
* refactor(de-recognizers): complete Prüfziffer validation per primary sources (fixes #1972, supersedes #1974) by @MvdB in https://github.com/data-privacy-stack/presidio/pull/1990
* build(deps-dev): update azure-identity requirement from <2.0.0,>=1.23.0 to >=1.25.3,<2.0.0 in /presidio-analyzer by @dependabot[bot] in https://github.com/data-privacy-stack/presidio/pull/2001
* Consolidate Dependabot updates into a single PR via multi-ecosystem grouping by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2005
* feat: add Turkish license plate (TR_LICENSE_PLATE) recognizer by @mrcuren in https://github.com/data-privacy-stack/presidio/pull/1999
* Fix incorrect PESEL checksum validation in PlPeselRecognizer by @sienioApius in https://github.com/data-privacy-stack/presidio/pull/1998
* Fix PhoneRecognizer default regions typo: "FE" → "FR" by @omri374 with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2009
* Fix anonymization typos in OpenAI deployment sample by @ynachiket in https://github.com/data-privacy-stack/presidio/pull/2017
* Feature/es passport recognizer by @asensionacher in https://github.com/data-privacy-stack/presidio/pull/2011
* Phonenumber configurable entity by @max-tarlov-infinitusai in https://github.com/data-privacy-stack/presidio/pull/2014
* fix: Preserve GLiNER config fields through Pydantic validation by @yuriihavrylko in https://github.com/data-privacy-stack/presidio/pull/2007
* feat(analyzer): add optional country filter to load_predefined_recogn… by @ynachiket in https://github.com/data-privacy-stack/presidio/pull/2000
* docs: clarify Fabric sample dependency versions by @ynachiket in https://github.com/data-privacy-stack/presidio/pull/2027
* fix: Custom operator validate() must not invoke the lambda by @HammadSiddiqui in https://github.com/data-privacy-stack/presidio/pull/2025
* feat: add Turkish phone number (TR_PHONE_NUMBER) recognizer by @mrcuren in https://github.com/data-privacy-stack/presidio/pull/2006
* docs: remove duplicate zip code pattern in recognizer registry example by @BelizSertcan in https://github.com/data-privacy-stack/presidio/pull/2034
* feat: add Philippine mobile number (PH_MOBILE_NUMBER) recognizer by @Surya-5555 in https://github.com/data-privacy-stack/presidio/pull/2038
* Add explicit click dependencies for Presidio packages by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2058
* fix(image-redactor): return rendered image when no text is detected in verify by @AlexanderSanin in https://github.com/data-privacy-stack/presidio/pull/2040
* test(ip-recognizer): add regression tests for IPv6 double-colon bugs (#1476) by @AlexanderSanin in https://github.com/data-privacy-stack/presidio/pull/2062
* fix(analyzer): cap url recognizer host to stop quadratic backtracking by @uwezkhan in https://github.com/data-privacy-stack/presidio/pull/2063
* fix(analyzer): ignore empty allow_list terms in regex match by @uwezkhan in https://github.com/data-privacy-stack/presidio/pull/2061
* feat(analyzer): add South African ID number recognizer (ZA_ID_NUMBER) by @thatomokoena in https://github.com/data-privacy-stack/presidio/pull/2064
* feat: add Philippines TIN (PH_TIN) recognizer by @aaronaco in https://github.com/data-privacy-stack/presidio/pull/2016
* Support Azure credentials for DocumentIntelligenceOCR by @mturac in https://github.com/data-privacy-stack/presidio/pull/2085
* fix(image-redactor): fix duplicate entity sorting discard in DICOM verification engine by @ArjunPakhan in https://github.com/data-privacy-stack/presidio/pull/2084
* fix(image-redactor): remove double bbox formatting in eval_dicom_instance by @AlexanderSanin in https://github.com/data-privacy-stack/presidio/pull/2079
* fix: pin numpy<2.5.0 to resolve Python 3.12 CI failure by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2090
* Fix SG UEN detection missing Format C UENs with the 'R' prefix by @jichaowang02-lang in https://github.com/data-privacy-stack/presidio/pull/2088
* Fix numpy IndentationError in Test Analyzer (Python 3.12) CI job by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2091
* Fix AU ACN checksum rejecting valid ACNs whose check digit is 0 by @jichaowang02-lang in https://github.com/data-privacy-stack/presidio/pull/2087
* fix(analyzer): preserve recognizer-specific config dumps by @ultramancode in https://github.com/data-privacy-stack/presidio/pull/2081
* docs(image-redactor): fix undefined di_ocr variable in Document Intelligence example by @Dashtid in https://github.com/data-privacy-stack/presidio/pull/2089
* Fix analyzer CI numpy resolver flake by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2092
* fix(iban): add EG/IQ/LY/LC/SC/UA registry formats so valid IBANs are detected by @AUTHENSOR in https://github.com/data-privacy-stack/presidio/pull/2078
* fix(email): match punycode/IDN domains so internationalized emails are detected by @AUTHENSOR in https://github.com/data-privacy-stack/presidio/pull/2077
* Migration notification message by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2097
* Add project transition update link to README by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2098
* docs: rebrand site to Data Privacy Stack  by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2100
* Add Python 3.14 support for presidio-analyzer by @michaelgiraldo in https://github.com/data-privacy-stack/presidio/pull/2105
* Docs/dps migration phase1 by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2104
* dps migration phase2 - code by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2117
* docs: Material for MkDocs migration to Zensical by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2102
* Migrate to ghcr packages by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2103
* revert: undo accidental direct-to-main docs pushes (fix duplicate copyright) by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2118
* docs: add Google Search Console site-verification meta tag by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2119
* docs: publish docs with git CLI by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2120
* Final removal of Microsoft reference by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2121
* Revert to Microsoft as copyright owner by @omri374 in https://github.com/data-privacy-stack/presidio/pull/2122
* fix(ci): restore id-token:write for provenance attestations in build-platform-images by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2123
* Prefer repository GITHUB_TOKEN for GHCR publishing in CI by @SharonHart with @Copilot in https://github.com/data-privacy-stack/presidio/pull/2124
* Fix URL test bounds for DPS domain by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2125
* Release 2.2.363 / 0.0.59 by @SharonHart in https://github.com/data-privacy-stack/presidio/pull/2126

## New Contributors
* @MvdB made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1909
* @goveebee made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1912
* @TheSabari07 made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1930
* @kennionblack made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1934
* @harishkernel made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1932
* @extrasmall0 made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1940
* @mrcuren made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1995
* @sienioApius made their first contribution in https://github.com/data-privacy-stack/presidio/pull/1998
* @ynachiket made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2017
* @asensionacher made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2011
* @max-tarlov-infinitusai made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2014
* @yuriihavrylko made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2007
* @HammadSiddiqui made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2025
* @BelizSertcan made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2034
* @Surya-5555 made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2038
* @AlexanderSanin made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2040
* @uwezkhan made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2063
* @thatomokoena made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2064
* @aaronaco made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2016
* @mturac made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2085
* @ArjunPakhan made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2084
* @jichaowang02-lang made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2088
* @Dashtid made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2089
* @AUTHENSOR made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2078
* @michaelgiraldo made their first contribution in https://github.com/data-privacy-stack/presidio/pull/2105

**Full Changelog**: https://github.com/data-privacy-stack/presidio/compare/2.2.362...2.2.363