read-docs
Reading .doc/.docx files via python-docx.
SKILL.mdskills/documents/parts/read-docs/SKILL.md
GitHubSkill: read-docs
Reading .doc/.docx files via python-docx.
Installed
- python-docx 1.2.0 — primary library
- Ready scripts in
scripts/check_docx.pyandscripts/extract_docx.py
Quick start
Simple text extraction
from docx import Document
doc = Document("path/to/file.docx")
for p in doc.paragraphs:
if p.text.strip():
print(p.text)
Document structure (styles, headings)
from docx import Document
doc = Document("file.docx")
# Style statistics
styles = {}
for p in doc.paragraphs:
s = p.style.name
styles[s] = styles.get(s, 0) + 1
print("Styles:", styles)
# Headings only
for p in doc.paragraphs:
if p.style.name.startswith("Heading"):
print(f"[{p.style.name}] {p.text}")
Tables
doc = Document("file.docx")
for table in doc.tables:
for row in table.rows:
cells = [cell.text.strip() for cell in row.cells]
print(" | ".join(cells))
Formatting info
doc = Document("file.docx")
for p in doc.paragraphs[:10]: # first 10 paragraphs
align = str(p.alignment) if p.alignment else "None"
fonts = set()
for run in p.runs:
if run.font.name:
fonts.add(run.font.name)
print(f"align={align} fonts={fonts} | {p.text[:80]}")
Text extraction with page breaks
doc = Document("file.docx")
for i, p in enumerate(doc.paragraphs):
if p.paragraph_format.page_break_before:
print(f"\n--- PAGE BREAK ---\n")
print(p.text)
Ready scripts
scripts/extract_docx.py
Extracts clean text from .docx to stdout.
python scripts/extract_docx.py
Note: Pass the .docx path as an argument: python scripts/extract_docx.py file.docx — for other files, change the path in the code.
scripts/check_docx.py
Analyzes document structure: paragraphs, styles, headings, fonts, page breaks.
python scripts/check_docx.py
Also accepts a path argument: python scripts/check_docx.py file.docx.
When to use what
| Task | Tool |
|---|---|
| Quick text extraction | extract_docx.py (or one-liner: python -c "from docx import Document; d=Document('file.docx'); [print(p.text) for p in d.paragraphs if p.text.strip()]") |
| Study document structure | check_docx.py (styles, headings, fonts) |
| Tables, complex formatting | Custom python-docx script |
| Embed in another agent | Import docx.Document directly in code |
Important notes
- Encoding:
python-docxworks with UTF-8, but if output goes to Windows cmd, set:import sys, io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') - Images:
python-docxdoes NOT extract images from .docx. Only text, tables, formatting. - Large files: Reading the entire document into memory — for files >50MB may be slow.
- .doc (old format):
python-docxdoes NOT read old .doc files (Word 97—2003). Usepython-docx2txtor convert via LibreOffice. - Lists: Numbered and bulleted lists are read as regular paragraphs (without nesting info).
- Headers/footers: Read via
doc.sections[0].header.paragraphsand.footer.paragraphs.
Installation (if needed on another machine)
pip install python-docx
Created: 2026-06-19.