Skip to main content

AcquiVela

Document Acquisition Framework — Frozen Architecture v0.1

Note: AcquiVela v0.1.0 is a pre-1.0 release. Some internal orchestration APIs (Pipeline, Registry) are exposed for use but are not frozen public contracts and may change. See Governance below.

What is AcquiVela?

AcquiVela is a capability-oriented document acquisition framework that orchestrates specialized acquisition engines (Docling, MinerU) through frozen public contracts and a versioned Canonical Document Model (CDM).

Scope: Document acquisition only (PDF, DOCX, scanned images, and more). Non-goals: Embeddings, retrieval, vector DB, chunking, LLM reasoning, knowledge extraction.

Governed Public Contracts

The following are frozen per ADR-0001 through ADR-0006 and carry semantic-versioning compatibility guarantees:

Contract Module Description
AcquireRequest models.py Input request (file path, engine hint, capability)
AcquireResult public_result.py Public result wrapper (status, canonical document, error)
CanonicalDocument cdm.py CDM root — pages + title
Page cdm.py A document page — text blocks + page number
TextBlock cdm.py A text block — text + type classification
Plugin plugin.py Plugin SPI (ABC) — metadata(), acquire(), capabilities()
PluginHealth plugin.py Plugin health status
Capabilities capabilities.py Canonical capability vocabulary
Diagnostics public_result.py Per-execution diagnostic metadata

Internal Orchestration Infrastructure

The following components are internal and not frozen public contracts:

Component Module Status
Pipeline pipeline.py Internal — may change before stable API decision
Registry registry.py Internal — may change before stable API decision
PluginResult result.py Internal SPI — not exported at package root
ExecutionContext execution_context.py Internal

Plugins may NOT import Pipeline, Registry, or public_result — enforced via import-linter (ADR-0004 §3.2, ADR-0006 §3.3).

Installation

# Base installation (no acquisition engines)
pip install acquivela

# With Docling support (PDF, DOCX, images, and more)
pip install acquivela[docling]

# With MinerU support (high-accuracy PDF)
pip install acquivela[mineru]

# With both engines
pip install acquivela[docling,mineru]

System Dependencies

Some formats require additional system-level tools:

  • Legacy Office formats (.doc, .ppt, .xls): Requires LibreOffice installed and on PATH
  • OpenDocument formats (.odt, .ods, .odp): Requires odfdo Python package (included with docling extras)

Quick Start

# Recommended: use the M15 stable facade
from acquivela import AcquireRequest, acquire

result = acquire(
    AcquireRequest(file_path="document.pdf")
)

if result.status == "success":
    doc = result.canonical_document
    for page in doc.pages:
        for block in page.text_blocks:
            print(block.text)
from acquivela import AcquireRequest, acquire

result = acquire(
    AcquireRequest(file_path="document.pdf")
)

if result.status == "success":
    doc = result.canonical_document
    for page in doc.pages:
        for block in page.text_blocks:
            print(block.text)

Using Engine Hints

# Force a specific engine
request = AcquireRequest(
    file_path="document.pdf",
    engine_hint="docling"
)

Using Capability Filtering

from acquivela.capabilities import Capabilities

# Require text extraction capability
request = AcquireRequest(
    file_path="document.pdf",
    required_capability=Capabilities.DOCUMENT_TEXT
)

Known Limitations

MinerU

MinerU has a known upstream issue (PPDocLayoutV2Config missing reading_order_config) that causes acquisition failures. AcquiVela correctly contains this failure — the pipeline returns status="failure" without exceptions escaping. The MinerU plugin reports healthy at the health-check level because it is importable, but actual acquisition will fail until the upstream issue is resolved.

Legacy Office Formats

.doc, .ppt, and .xls files require LibreOffice to be installed and available on PATH. Without LibreOffice, Docling cannot convert these legacy formats to modern equivalents.

OpenDocument Formats

.odt, .ods, and .odp files require the odfdo Python package. This is included when installing with pip install acquivela[docling].

XML and JSON

Generic XML files are not supported. Docling supports specific XML dialects only (USPTO, JATS, XBRL, DOCLANG). Similarly, only json_docling format is supported for JSON input.

CDM v0.2 Exclusions

The Canonical Document Model (CDM) v0.2 captures text content only. Tables, images, equations, bounding boxes, and rich provenance are intentionally excluded from the current model.

Architecture

Package Structure

acquivela/
├── __init__.py          # Public exports + internal orchestration (see Governance)
├── cdm.py               # CanonicalDocument, Page, TextBlock (PUBLIC/STABLE)
├── models.py            # AcquireRequest (PUBLIC/STABLE)
├── plugin.py            # Plugin SPI, PluginHealth (PUBLIC/STABLE)
├── result.py            # PluginResult (INTERNAL - not exported at root)
├── public_result.py     # AcquireResult, Diagnostics (PUBLIC/STABLE)
├── capabilities.py      # Capabilities (PUBLIC/STABLE)
├── registry.py          # Registry (INTERNAL - may change)
├── pipeline.py          # Pipeline (INTERNAL - may change)
├── execution_context.py # ExecutionContext (INTERNAL)
└── plugins/             # Plugin implementations (one class per module)

Status

  • Charter: FROZEN
  • ADR-0001 Project Boundaries: FROZEN
  • ADR-0002 Execution Model: FROZEN
  • ADR-0003 Core Data Contracts: FROZEN
  • ADR-0004 Plugin & Execution Strategy: FROZEN
  • ADR-0005 Observability & Diagnostics: FROZEN
  • ADR-0006 Registry & Plugin Discovery: FROZEN

Development

# Install with dev dependencies
pip install -e .[dev]

# Run contract tests
pytest tests/test_contracts.py

# Run import-linter validation
pytest tests/test_import_linter.py

# Or run import-linter directly
importlinter lint

License

MIT License. See LICENSE for details.

Metadata

Release files for acquivela 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for acquivela 0.2.0
File Size Uploaded Provenance
acquivela-0.2.0.tar.gz 49.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for acquivela 0.2.0
File Interpreter ABI Platform
acquivela-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.7 kB

Release files / acquivela-0.2.0.tar.gz

Download URL acquivela-0.2.0.tar.gz
Size 49.0 kB
Tags Source
SHA-256 checksum
How to use checksums
79c548d681edbb0509df56c1098689dda615328c8fcd71aea18a8a18fdc58038
BLAKE2b-256 checksum
How to use checksums
57a1a541cfa144c1b7527c285f236ffae114d8f62bf032f684f7252e2bc69a94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release files / acquivela-0.2.0-py3-none-any.whl

Download URL acquivela-0.2.0-py3-none-any.whl
Size 24.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87992310fe89dd1f89d2243658d9804f48af336b8d163260ec9b770a56e50b19
BLAKE2b-256 checksum
How to use checksums
36e8bcfc8994a6110036f0becbd1c61ab5388b483593dcdbc590efaa344e81df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Security for acquivela 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page