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.1.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.1-py3-none-any.whl (89.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: normpare-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 bfbe4e731aa1ea970d484df1716d21242444a03aa63c6b60907968881742582a
MD5 b0f80ebf8581b7fe65e7c1c557f2eae5
BLAKE2b-256 594fc9d994eeec663b0101095595462a1905ae4d615d1faef8d5768bda457a88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: normpare-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3ed662c70f4692fb2ba94db0ccf684b5f260aeb044a8035e41a15612c98404d
MD5 7b3d2ed67cfe5addec57ce0b880fb8d0
BLAKE2b-256 32dfa67b9f304b0d5f5282817fd388eb3cdc1d3b50b21df7626e10c29d5b0bd3

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