Skip to main content

Compare two editions of a technical standard: changes, per-chapter summaries and a synopsis — deterministic, plus optional AI interpretation.

Project description

normpare

Find out what actually changed between two editions of a technical standard.

When a standard is revised, the publisher rarely tells you precisely what changed. You get a new PDF of several hundred pages and are left to compare it against the old one by hand. normpare does that comparison for you: it reads both editions, matches them chapter by chapter and paragraph by paragraph, and reports every change — new requirements, deleted ones, changed limit values, reworded passages, moved sections, edited tables.

The comparison itself is deterministic: same inputs, same output, every time, with no AI involved. On top of that you can optionally switch on an AI interpretation that explains each change in plain language and separates real substantive changes from mere editorial rewording. Every AI statement carries a verbatim quote from the source, and normpare checks that the quote really exists — so you can always trace a claim back to the text.

What you get

  • An annotated HTML version of the new edition: changes colour-coded in place, with a summary per chapter, cell-level table diffs and embedded figures.
  • Two Word synopses — a deterministic, tabular old ↔ new comparison, and (if AI is on) a final, readable one that bundles related changes into a single entry per topic.
  • A PowerPoint draft of the key changes, machine-readable JSON for every stage, tables as CSV, and figures as image assets.

Installation

Requires Python 3.13.

pip install normpare                      # deterministic comparison
pip install "normpare[anthropic]"         # + AI interpretation via Anthropic
pip install "normpare[embeddings]"        # + optional embedding-based alignment

Usage

Two files in, one directory out:

normpare compare --old standard_2019.pdf --new standard_2026.docx --out result/

PDF and DOCX are both supported, and mixing them is fine. Without an API key the run is purely deterministic; the AI prompts are exported so you can paste them into a chat instead.

From Python:

import normpare

result = normpare.compare(
    old="standard_2019.pdf",
    new="standard_2026.docx",
    out_dir="result/",
    use_llm=False,          # True + an API key => AI interpretation
    language="de",          # language the standard is written in
)
print(result.html, result.synopse_det, result.synopse_final)

Useful flags: --no-llm (deterministic only), --batch (send the interpretation as one Anthropic batch, about half the price), --model / --provider (choose the AI backend — Anthropic, OpenAI, a local Ollama server, and others).

Documentation

Full documentation, including how the pipeline works and how to pick an AI model: https://ce1ectric.github.io/normpare/

License

MIT © 2026 Christian Ehlert

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

normpare-0.1.0.tar.gz (74.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

normpare-0.1.0-py3-none-any.whl (89.7 kB view details)

Uploaded Python 3

File details

Details for the file normpare-0.1.0.tar.gz.

File metadata

  • Download URL: normpare-0.1.0.tar.gz
  • Upload date:
  • Size: 74.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Darwin/25.5.0

File hashes

Hashes for normpare-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c688a686dd745f40dbb89adbcea85399a47fb27d74c9a52c4e4d8e3c00f63ced
MD5 7172a4efecbae06e591f54c965a27f2c
BLAKE2b-256 93ee71594d8dc5b0f3165cb042f1467cbbd7e05ba3bc66f585ca5377cf23235a

See more details on using hashes here.

File details

Details for the file normpare-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: normpare-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 89.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Darwin/25.5.0

File hashes

Hashes for normpare-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b79c11f1b3382ce826e3832d5d1b7e751404c9a3b76d25b4a85eea981218bae
MD5 66c79ccd14c67f94be03c6f80f98a8e1
BLAKE2b-256 704e7e0d157291ca60f0424b8124d691fd3f0fd443113fcf1f618b2e741f9090

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page