README.md

August 4, 2026 · View on GitHub

中文 · 中文文档 · English

python-office

python-office

🚀 Office automation, one line of code at a time
73 ready-to-use Skills covering PDF, Word, Excel, PPT, Email, WeChat, Images, Video and more

PyPI Total Downloads GitHub stars Gitee stars Python Windows WeChat


⚡ TL;DR

python-office is the most popular Python office-automation library in the Chinese-speaking world. One library covers 90% of office scenarios: PDF / Word / Excel / PPT conversion, image processing, video & audio, WeChat bot, email, file management, OCR, AI tools... Zero Python knowledge required — every feature is one line of code.

pip install python-office
import office  # one import, all features available

✨ Key Features

Feature
🎯 One-line code90% of features need only office.module.method() — zero learning curve
🧩 73 SkillsEvery feature independently importable, install only what you need
🤖 AI-friendlyEach Skill ships SKILL.md + YAML, recognizable by Codex / Claude / Cursor
🌏 Beginner-friendlyFull tutorials, video guides, and an active WeChat community
🪶 Lightweightpip install popdf / poimage / poword for sub-libraries — no bloat
🔄 Continuously updatedActively maintained, with 73+ features still evolving
📦 One importimport office brings everything; or import individually
🛡️ StableUsed by thousands of projects, MIT licensed

📸 Demo

🚧 Showcase area — replace these with your own screenshots or GIFs

Image ProcessingPDF ProcessingWeChat Bot
Watermark / Word cloud / SketchConvert / Merge / EncryptBroadcast / Smart chat
demo-imagedemo-pdfdemo-wechat
Excel ProcessingPPT ProcessingVideo / Audio
Mock data / Merge / SplitConvert / SnapshotExtract audio / Subtitle
demo-exceldemo-pptdemo-video

🧭 Quick Navigation

What do you want to do?Jump to
First time here📦 Installation
See 5 examples🚀 Quick Start
Find a specific feature🛠️ Components or skills/README.md
Understand the Skills system✨ Skills system
Ask the community💬 Contact
Contribute code🤝 Contributing

🧩 Skills system (73 ready-to-use Skills)

python-office ships with a built-in Skill system: the library's 73 methods are wrapped as 73 independently importable Skills, each with its own SKILL.md documentation.

💡 Why Skills? Skills let Codex, Claude, Cursor and other AI tools automatically recognize your request and call the right function.

# Option 1: Import a specific Skill
from skills.image import compress_image
compress_image(input_file='photo.jpg', output_file='photo_small.jpg', quality=30)

# Option 2: Import by category
from skills.pdf import pdf2docx
pdf2docx(input_file='report.pdf', output_file='report.docx')

# Option 3: Original office style (still works)
import office
office.image.compress_image(input_file='photo.jpg', output_file='photo_small.jpg', quality=30)

📋 13 Categories at a Glance

CategorySkillsTypical Skills
📊 Excel7fake2excel / merge2excel / excel2pdf
📁 File9replace4filename / get_files
💰 Finance1t0 (stock T+0 return calculator)
🖼️ Image9compress_image / add_watermark / txt2wordcloud
📝 Markdown1excel2markdown
🔍 OCR1VatInvoiceOCR2Excel (VAT invoice recognition)
📕 PDF13pdf2docx / pdf2imgs / merge2pdf / encrypt4pdf
🎬 PPT3ppt2pdf / ppt2img / merge4ppt
🛠️ Tools10transtools / qrcodetools / passwordtools
🎥 Video4video2mp3 / audio2txt / txt2mp3
💬 WeChat7send_message / chat_robot / receive_message
📄 Word5docx2pdf / merge4docx / docx4imgs
🏷️ Ruiming3screen_unmarked_image / change_label_in_xml

👉 Full index: skills/README.md


📦 Installation

# Install everything (recommended)
pip install -i https://mirrors.aliyun.com/pypi/simple/ python-office -U

# Install only what you need (lighter)
pip install popdf      # PDF processing only
pip install poimage    # Image processing only
pip install poword     # Word processing only
pip install poexcel    # Excel processing only

Python version: Python 3.7+ Install issues? 📝 Troubleshooting


🚀 Quick Start

# 1. PDF → Word
from skills.pdf import pdf2docx
pdf2docx(input_file='report.pdf', output_file='report.docx')

# 2. Compress an image
from skills.image import compress_image
compress_image(input_file='big.jpg', output_file='small.jpg', quality=30)

# 3. Add a watermark to an image
from skills.image import add_watermark
add_watermark(file='photo.jpg', mark='@python-office')

# 4. Generate a word cloud
from skills.image import txt2wordcloud
txt2wordcloud(filename='article.txt', result_file='wordcloud.png')

# 5. Generate a QR code
from skills.tools import qrcodetools
qrcodetools(url='https://www.python-office.com', output='qrcode.png')

🎬 Video tutorials: https://www.python-office.com/video/video.html


📊 Excel Processing (click to expand)
from skills.excel import fake2excel
fake2excel(columns=['name', 'phone'], rows=1000, path='test.xlsx')

from skills.excel import merge2excel
merge2excel(dir_path='./my_excels', output_file='all.xlsx')
📕 PDF Processing (click to expand)
from skills.pdf import pdf2docx       # PDF → Word
from skills.pdf import pdf2imgs        # PDF → images
from skills.pdf import merge2pdf       # Merge multiple PDFs
from skills.pdf import split4pdf       # Split a PDF
from skills.pdf import encrypt4pdf     # Encrypt a PDF
from skills.pdf import add_watermark_by_parameters  # PDF watermark
🖼️ Image Processing (click to expand)
from skills.image import compress_image       # Compress images
from skills.image import add_watermark        # Add watermark
from skills.image import del_watermark        # Remove watermark
from skills.image import txt2wordcloud        # Generate word cloud
from skills.image import pencil4img           # Pencil-sketch style
from skills.image import img2Cartoon          # Cartoon style
from skills.image import decode_qrcode        # Decode QR code
💬 WeChat Bot (click to expand)
from skills.wechat import send_message
send_message(who='File Transfer', message='Hello!')

from skills.wechat import send_message_by_time
send_message_by_time(who='File Transfer', message='Good morning', time='08:00:00')
🎬 Video Processing (click to expand)
from skills.video import video2mp3       # Video → MP3
from skills.video import audio2txt       # Audio → text
from skills.video import txt2mp3         # Text → speech
from skills.video import mark2video      # Video watermark

🌟 Use Cases

python-office fits the following roles and scenarios:

👤 Role🎯 Scenario
📊 Office workersBatch process PDF, Excel, Word, PPT — 10x efficiency
🎓 Students / TeachersPaper formatting, test grading, resource organization
👨‍💻 DevelopersAutomation scripts, crawler data processing, batch files
🤖 AI enthusiastsLet AI auto-call tools for complex office tasks
📷 Content creatorsBatch image processing, video-to-audio, QR generation
💼 Finance / HRInvoice OCR, Excel merging, file organization

🛠️ Components

Each feature is accessible via the traditional import office style, or directly from skills.xxx.

ModuleDescriptionSkills Path
PyOfficeRobotWeChat botskills/wechat/
poocrOCR (invoice, table, image)skills/ocr/
popdfPDF → Word / image / split / merge / encryptskills/pdf/
poemailAuto-send emailsoffice/api/email.py
porobotAI botoffice/api/tools.py
poimageImage compress / watermark / word cloud / filtersskills/image/
poaiAI utilitiesoffice/lib/
poexcelExcel merge / split / mock dataskills/excel/
powordWord → PDF / extract imagesskills/word/
pofileBatch file rename / organizeskills/file/
search4fileDocument searchskills/file/
popptPPT → PDF / imageskills/ppt/
wftoolsTranslation / QR code / password generator, etc.skills/tools/
pofinanceStock T+0 calculatorskills/finance/
pohanChinese programming-
povideoVideo → audio / speech recognitionskills/video/
potimeTime utilities-
poprogressProgress bar utilities-
pocodeCode management-

🗺️ Roadmap

  • v1.x: 73 Skills covering all office automation scenarios
  • Skills system: Every feature independently AI-callable
  • v2.0: Plugin architecture with custom Skill support
  • Web GUI: Visual operation interface
  • More AI capabilities: AI writing, AI data analysis
  • Enterprise edition: Private deployment + permission management

Feel free to submit requests in Issues!


📝 Documentation


🤝 Contributing

Contributions are welcome. Please submit your PR in a dedicated folder:

  • Create a folder with your GitHub username under contributors
  • Put all your code inside that folder
  • Do not modify any other folders
  • For questions about existing code, please open an issue

Code Style

  1. Comments: Document every parameter and return value of new functions
  2. Formatting: Format only your own code
  3. Tests: Unit tests are optional but strongly recommended
  4. Skills: When adding a new method, also add a Skill wrapper under skills/<category>/<method>/

Contributors ✨

Thanks to everyone who makes python-office better!


🐞 Bug Reports & Suggestions

Please only submit issues related to the python-office codebase itself. We don't answer general Python learning questions.


If python-office has saved you significant time, please consider supporting continued development:

  • Star this repo — the biggest support
  • 🗣️ Tell your friends — word of mouth
  • 💰 WeChat tip — see the QR code at the bottom of this README
  • 🐛 Contribute code — submit a PR or Issue

📜 License

This project is licensed under the MIT License.

MIT License

Copyright (c) 2026 CoderWanFeng

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

🙏 Acknowledgments

  • Thanks to all contributors and issue reporters
  • Thanks to the python4office community
  • Inspired by outstanding open-source projects like Requests, FastAPI, LangChain
  • Built with ❤️ in China

⭐ Star History

Stargazers over time


📌 Contact the Author

👉 Join the open-source community · WeChat the author 👈


If this project helps you, a ⭐ Star is the best encouragement!