docx2python
Extract content from docx files
What it is and what it does
docx2python reads Microsoft Word .docx files (which are ZIP archives containing XML) and exposes their content as Python objects. It extracts text, images, headers, footers, footnotes, endnotes, document properties, comments, and paragraph metadata—including styles (e.g., Heading 1, Subtitle), formatting runs (bold, italic, underline, color, size), and position within nested lists. Tables are normalized to n×m grids and can be identified without guessing. The package optionally converts formatting to HTML tags and can write extracted images to disk.
The library uses lxml to parse the underlying XML and exposes a DocxContent object with separate attributes for header, footer, body, footnotes, endnotes, and document-level properties. Paragraphs are flattened to a consistent depth and enriched with metadata (style, lineage, list position, runs with formatting). It supports both strict and superset Open Office XML namespaces and works with Python 3.10+.
Use it for:
- Extract text and structure from Word documents for indexing, search, or content migration to other formats
- Automate document processing pipelines that need to read .docx files and convert them to markdown, HTML, or database records
- Parse Word documents to identify and extract headings, lists, and formatted text for document analysis or summarization
- Batch extract images embedded in .docx files and save them to a directory for asset management
- Build tools that read Word document properties (creator, modification date, etc.) for metadata extraction or audit trails
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Extracts text, images, headers, footers, footnotes, endnotes, comments, properties, and document structure from Microsoft Word .docx files into Python objects.
Yes. The package is actively maintained, has low install friction, carries no known vulnerabilities, uses a permissive MIT license, and solves a common problem (reading .docx files) with a well-structured API. It is suitable for production use in both open-source and commercial contexts. Install if you need to programmatically extract content from Word documents.
Install
docx2python on PyPI
pip
pip install docx2pythonuv
uv add docx2pythonpoetry
poetry add docx2pythonInstalling docx2python
Before you install
Low install friction with a pure-Python wheel. Actively maintained with a release 8 days ago. Requires Python 3.10 or later and three runtime dependencies (lxml, paragraphs, typing-extensions), all common and lightweight.
License in practice
MIT license permits use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
from docx2python import docx2python
with docx2python('path/to/file.docx') as docx_content:
print(docx_content.text)
print(docx_content.properties)
print(docx_content.images)
Requires Python 3.10 or later; the .docx file must be a valid ZIP-based Office Open XML document.
Verify before relying
- Whether the package handles corrupted or malformed .docx files gracefully
- Performance characteristics on very large documents or batch processing scenarios
- Extent of support for Word's advanced formatting features beyond those listed
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — lxml, paragraphs, typing-extensions |
| Maintenance | actively maintained — 8 days since the last release |
| First released | |
| Downloads | 334,965/month — #7,483 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: docx2python-3.7.1-py3-none-any.whl
Tags
More Text Processing packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyparsingpyparsing provides a library for building text…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
RapidFuzzRapidFuzz provides fast fuzzy string matching…
permissive · top 1,000 on PyPI
tinycss2tinycss2 parses CSS strings into token and…
permissive · top 1,000 on PyPI
llama-parseLlamaParse parses complex documents (PDFs,…
permissive · top 1,000 on PyPI
docx2txtExtracts text, headers, footers, hyperlinks,…
unclear · top 5,000 on PyPI
office-word-mcp-serverA Model Context Protocol server that exposes…
permissive · top 15,000 on PyPI
docxCreates, reads, and writes Microsoft Office…
unclear · top 15,000 on PyPI
html-for-docxConverts HTML content to Word documents…
permissive · top 15,000 on PyPI
python-docxpython-docx reads, creates, and modifies…
permissive · top 1,000 on PyPI
html2docxConverts valid HTML to Microsoft Word (.docx)…
permissive · top 15,000 on PyPI
htmldocxConverts HTML content into Microsoft Word…
permissive · top 5,000 on PyPI
docx-mailmerge2Performs mail merge operations on docx files by…
permissive · top 15,000 on PyPI
docxtplGenerates Word documents (.docx) from templates…
copyleft · top 5,000 on PyPI
wordcloudGenerates word cloud visualizations from text…
permissive · top 5,000 on PyPI