Office Document Assistant
Read, extract, summarize, and compare common office documents:
- Word (
.docx,.doc) - Excel (
.xlsx,.xls) - PowerPoint (
.pptx,.ppt)
Use this skill when the user wants the contents of a document explained, summarized, searched, or extracted into a simpler structure.
When to Use
Use this skill when the user:
- uploads a
.pdf/.doc/.docx/.xls/.xlsx/.ppt/.pptx - asks to summarize a document
- asks to extract dates, amounts, contacts, conclusions, specifications, risks, or action items
- asks for page-by-page / slide-by-slide structure
- asks what a spreadsheet or slide deck is saying
- asks to compare two or more documents after extracting their text
When Not to Use
Do not position this skill as a high-fidelity layout or visual analysis system.
It is not ideal for:
- precise preservation of original layout, formatting, or pagination
- detailed chart / diagram / image interpretation
- password-protected or encrypted files
- OCR-heavy image understanding beyond basic text recovery
- advanced spreadsheet analytics or formula auditing
- tracked-changes / redline reconstruction in Office documents
Core Workflow
- Confirm the document path.
- Run the bundled script:
- python3 {skill_dir}/scripts/extract_office_text.py <file> --json
- Inspect the JSON fields:
- type - extraction - warning - truncated - text
- Separate clearly in your response:
- directly extracted content - your summary / inference based on that content
- If extraction is empty or weak:
- for PDF, check OCR availability first - for legacy Office formats, check conversion tools
- If the user asks for a summary, default to:
- one-sentence overview - 3–8 key points - extra sections only when clearly present (dates, people, risks, data, conclusions, contacts)
- If the user asks for extraction, prefer structured fields over long prose.
Supported Formats and Strategy
- First extract embedded text with
pypdf. - If extracted text is too short, fall back to OCR.
- OCR prefers
chi_sim+eng, thenchi_sim, theneng. - OCR pipeline requires both
pdftoppmandtesseract. - If an official first-class PDF tool is exposed in the environment and the task is high-value or multi-PDF, you may prefer that tool; otherwise use this skill's script.
Word
.docx: extract paragraphs and tables directly..doc: tryantiword, thencatdoc, then LibreOffice conversion to.docx.
Excel
- Extract sheet names and the first rows of each sheet.
- Best for quickly understanding workbook structure and core fields.
- When explaining, focus on what each sheet represents, key columns, important figures, and obvious anomalies.
PowerPoint
- Extract slide text from shapes.
- Extract speaker notes when present.
- Summaries should usually be slide-by-slide or theme-based, not a giant raw dump.
Tools and Dependencies
Document clearly what is required versus optional.
Required runtime
python3
Required Python packages
pypdf— embedded text extraction from PDFspython-docx—.docxextractionopenpyxl—.xlsxextractionpython-pptx—.pptxextraction
Optional but strongly recommended system tools
poppler-utils— providespdftoppmfor PDF → image conversion before OCRtesseract-ocr— OCR enginetesseract-ocr-chi-sim— Simplified Chinese OCR language packlibreoffice— conversion fallback for legacy.doc,.xls,.pptantiword— direct.docextraction fallbackcatdoc— additional.docextraction fallback
What each tool is used for
pypdf: try text-layer extraction from PDFs firstpdftoppm: rasterize PDF pages when OCR is neededtesseract: recover text from scanned/image PDFspython-docx: read paragraphs and tables from.docxopenpyxl: read sheets and rows from.xlsxpython-pptx: read slide text and notes from.pptxlibreoffice: convert older Office formats into newer parseable formatsantiword/catdoc: lightweight extraction options for.doc
Minimum useful setup
If only modern documents matter, the minimum practical setup is:
python3- Python packages:
pypdf,python-docx,openpyxl,python-pptx
Recommended full setup
For the most robust behavior across real-world files, install:
python3- Python packages:
pypdf,python-docx,openpyxl,python-pptx - system tools:
poppler-utils,tesseract-ocr,tesseract-ocr-chi-sim,libreoffice,antiword,catdoc
Dependency check
Use the bundled checker to quickly see what is missing in the current environment:
python3 {skill_dir}/scripts/check_deps.pyCommon Commands
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.pdf" --json
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.docx" --json
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.xlsx" --json
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.pptx" --jsonUseful flags:
# limit PDF pages scanned/extracted
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.pdf" --page-limit 10 --json
# limit rows per sheet when probing spreadsheets
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.xlsx" --row-limit 30 --json
# cap output text size
python3 {skill_dir}/scripts/extract_office_text.py "/path/to/file.pdf" --max-chars 30000 --jsonOutput Style
Default to a compact answer:
- one-sentence summary
- 3–8 key points
- then expand only if the user asks for:
- detailed summary - page-by-page / slide-by-slide notes - field extraction - document comparison
Failure Handling
- If PDF text is empty, suspect scanned pages or missing OCR tools.
- If Chinese OCR is weak, check whether
tesseract-ocr-chi-simis installed. - If
.doc/.xls/.pptextraction fails, checklibreoffice,antiword, andcatdoc. - If tables look messy, explain that this is text-first extraction rather than full layout reconstruction.
- If a file is encrypted or unreadable, say so plainly and stop guessing.
References
Read these only when needed:
references/capabilities.md— capability boundaries and what each format can/can't do wellreferences/troubleshooting.md— dependency checks and common failure modes