Skip to main content

Document layer update (0.2)

The document and OCR layers now use native readers, versioned artifacts and Hugpy-managed OCR. They no longer depend on abstract_ocr or abstract_pdfs. See DOCUMENTS.md for current APIs, limits and migration details. The remaining facade layers retain the architecture documented below.

media_intelligence — Abstract Intelligence Platform

A unified, layered facade that turns raw media — PDFs, images, and video — into structured, searchable, SEO-ready data. It does not reimplement any engine: it selects the best function of each sibling package and exposes it behind one clean, lazy API, plus an orchestrated pipeline.

Raw Media (PDF / Image / Video / URL)
   │
   ▼
ingest  → extract → structure → enrich → persist → publish
(webtools) (ocr/    (typed     (hugpy)  (FS / DB) (react/
            pdfs/    metadata)                      nginx)
            videos)

Layers → canonical owners

Layer Owner package What it does
ingest abstract_webtools scrape pages, download video (yt-dlp/ffmpeg)
ocr Hugpy HTTP adapter managed vision transcription
documents document_engine native structure, artifacts, page retrieval
video abstract_videos registry pipeline: download/frames/transcribe
transcribe hugpy (→ abstract_ocr fallback) Whisper speech-to-text
enrich hugpy summaries, keywords, vision captioning, SEO
persist filesystem (DB-pluggable) typed JSON/JSONB manifests
publish abstract_react + abstract_nginx SEO/OG metadata + static HTML

Overlapping capabilities are resolved to one owner (Whisper → hugpy; video download → webtools; summarize/keywords → hugpy).

Install

media_intelligence is just this src/ facade — it contains none of the engines. Each layer's owner is its own PyPI package, declared as an optional extra, so you install only what you use:

pip install media_intelligence              # zero third-party deps — facade only
pip install "media_intelligence[ocr,enrich]"  # just those layers
pip install "media_intelligence[all]"       # the full platform

The package has no required third-party dependencies: importing it is cheap (~20 ms) and pulls none of the backing packages. Each sibling is imported lazily, only when its layer is actually called; a missing one raises a clear MissingDependency naming the extra to install.

Check what's usable in the current environment without importing anything:

import media_intelligence as mi
mi.available()            # {'ingest': True, 'ocr': True, 'publish': False, ...}
mi.available("enrich")    # True / False

Usage

Direct namespace access

import media_intelligence as mi

text = mi.ocr.image_to_text("page.png")
kw   = mi.enrich.keywords(text)
mi.documents.process_pdf("doc.pdf")
mi.ingest.download_video("https://site.com/v.mp4", download_directory="/data")

Orchestrated pipeline (idempotent + resumable)

from media_intelligence import MediaPipeline

pipe = MediaPipeline("https://site.com/video.mp4", out_root="/data")
pipe.ingest().extract().structure().enrich().persist().publish()
print(pipe.report.summary)
#   ... or simply:
pipe.run()

The pipeline autodetects media kind, dispatches each stage accordingly, skips stages already satisfied (idempotent), and rehydrates from a prior manifest on re-run (resumable). Results land in out_root/<media_id>/manifest.json.

Persistence (DB-pluggable, two records)

Each item is persisted as two records so indexing stays cheap while aggregation stays simple:

  • manifest.json — lean index: ids, counts, text_chars, summary, keywords, SEO, asset pointers. (The JSONB metadata row.)
  • document.json — canonical content: full text, pages/segments, transcript. The single source of truth for search / aggregation / LLM datasets — one read per item, no re-stitching of per-owner on-disk files.
store = mi.persist.FileStore("/data")
store.save_manifest(item.media_id, manifest)   # lean index
store.save_document(item.media_id, document)   # full body
doc = store.load_document(item.media_id)        # aggregation reads this

# later, identical interface, JSONB backend:
# store = mi.persist.PgStore(dsn=...)   # planned (abstract_database)
#   -> metadata in JSONB, body text in a full-text-indexed column

MediaPipeline.persist() writes both. On re-run, the body is rehydrated from document.json, so extract/enrich skip (no re-OCR / re-transcribe).

Metadata

Release files for media-intelligence 0.1.3

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

Source distribution (sdist)

Source distribution for media-intelligence 0.1.3
File Size Uploaded Provenance
media_intelligence-0.1.3.tar.gz 46.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for media-intelligence 0.1.3
File Interpreter ABI Platform
media_intelligence-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 94.3 kB

Release files / media_intelligence-0.1.3.tar.gz

Download URL media_intelligence-0.1.3.tar.gz
Size 46.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a2916297ead947772fa5dda7590d9db8c89477c5658624c893e07c8042b0c629
BLAKE2b-256 checksum
How to use checksums
1566706ea9b28e62a0b5bf113f4bc98026d724743fa94bb29eacc06137766830
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / media_intelligence-0.1.3-py3-none-any.whl

Download URL media_intelligence-0.1.3-py3-none-any.whl
Size 47.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8c8557bedbf8e75b3bc9c057df6058fd58700465adac31f9c4e5e85343bd875
BLAKE2b-256 checksum
How to use checksums
8293f6655b7ac42357910abb2c75f926c8a891f0bfe5160373f20232ed2b4794
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for media-intelligence 0.1.3

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.

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