Skip to main content

Pure-Python text extraction for classic Microsoft Word .doc files.

Project description

legacy-doc

Downloads

legacy-doc is a small, dependency-free Python library for extracting readable text from classic Microsoft Word .doc files.

It is intentionally narrow:

  • supports OLE Compound File Word 97-2003 .doc files
  • extracts normalized text from the Word piece table
  • rejects encrypted, malformed, non-OLE, or unsafe files clearly
  • does not execute macros, embedded objects, links, scripts, or external references
  • does not use native binaries, LibreOffice, antiword, or third-party parsers

Install

pip install legacy-doc

Usage

from legacy_doc import extract_text

with open("document.doc", "rb") as file:
    result = extract_text(file.read())

print(result.text)
print(result.metadata)

API

extract_text(document_bytes: bytes, *, options: ExtractionOptions | None = None) -> DocExtractionResult

DocExtractionResult contains:

  • text: normalized extracted text
  • parser: parser name
  • version: parser version
  • metadata: lightweight extraction metadata
  • warnings: non-fatal parser warnings

Limitations

This is not a full Microsoft Word renderer. It aims to recover readable text safely from common legacy .doc files. Formatting fidelity, OCR, images, macros, tracked changes, and embedded object extraction are out of scope.

Development

python -m pip install -e ".[dev]"
python -m pytest
python -m build
python -m twine check dist/*

The test suite includes small generated OLE WordDocument fixtures and malformed corpus cases for parser limits, encryption markers, missing piece tables, and cyclic FAT chains.

Security

legacy-doc treats input files as untrusted binary data. It performs bounded parsing, rejects encrypted documents, and never executes macros or embedded content. Report security issues privately before opening a public issue.

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

legacy_doc-0.1.2.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

legacy_doc-0.1.2-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file legacy_doc-0.1.2.tar.gz.

File metadata

  • Download URL: legacy_doc-0.1.2.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for legacy_doc-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6e27bb2dd076d30f845a15f2ad5538733979e10d6370dbc892c7e4e5f1167e90
MD5 678f1dd0a9ab58eb744d063d4f6a3027
BLAKE2b-256 48abeec84c52d58d62ff97c81c95663be8508f227f21869723921ddde9d694ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for legacy_doc-0.1.2.tar.gz:

Publisher: publish.yml on lcorrigan704/legacy-doc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file legacy_doc-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: legacy_doc-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for legacy_doc-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2e86dae754c9e0b42d1662620c5068e6431af93a119df68e41602d6f8c2edf0f
MD5 e9a1a3bee5e562d7f7ad5c3ea1183dca
BLAKE2b-256 cad8e8e6319e8ca9bff470e64e16e27d8e2a5ab8dbf032d1cbc4f70f729a87d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for legacy_doc-0.1.2-py3-none-any.whl:

Publisher: publish.yml on lcorrigan704/legacy-doc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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