email-invoice-processor
email-invoice-processor — 邮箱发票处理器
作者:43 COLLEGE 凯寓 (KAIYU) 出品 版本:v1.0
首次配置
如果运行报错找不到 config.json 或邮箱连接失败,读 SETUP.md 完成首次配置。
跨平台兼容
| 项目 | macOS / Linux | Windows |
|---|---|---|
| Python | python3 |
python |
| 脚本路径 | ${CLAUDE_SKILL_DIR}/scripts/process_invoices.py |
${CLAUDE_SKILL_DIR}\scripts\process_invoices.py |
| 默认输出 | ~/Desktop/发票-日期/ |
%USERPROFILE%\Desktop\发票-日期\ |
| pip 安装 | pip install ... 或 pip3 install ... |
python -m pip install ... |
使用方式
macOS / Linux:
# 整月处理
python3 ${CLAUDE_SKILL_DIR}/scripts/process_invoices.py 2026-03
# 指定日期范围
python3 ${CLAUDE_SKILL_DIR}/scripts/process_invoices.py 2026-03-01~2026-03-15
# 单日
python3 ${CLAUDE_SKILL_DIR}/scripts/process_invoices.py 2026-03-15
# 自定义输出目录
python3 ${CLAUDE_SKILL_DIR}/scripts/process_invoices.py 2026-03 -o ~/Desktop/三月发票
Windows:
python ${CLAUDE_SKILL_DIR}\scripts\process_invoices.py 2026-03
python ${CLAUDE_SKILL_DIR}\scripts\process_invoices.py 2026-03 -o %USERPROFILE%\Desktop\三月发票
处理流程
- 依赖预检 — 必需依赖缺失则退出,可选依赖缺失仅警告
- 连接邮箱 — 通过 IMAP SSL 连接(凭证从 config.json 读取)
- 服务端搜索 — 按关键词+日期在邮箱服务器筛选,避免全量拉取
- 关键词过滤 — 对邮件主题/发件人/正文做发票关键词匹配
- 三级附件下载:
- 直接附件(PDF 优先)
- 提取正文中的 HTTP 链接(自动处理 HTML 实体编码)
- Playwright 浏览器兜底(需安装可选依赖)
- 下载后校验:
- Magic bytes 文件类型检测(防止 HTML 页面被存为 PDF)
- 发票有效性校验(PDF 关键词 / 图片尺寸)
- 二维码自动处理(解码 → 浏览器访问 → 下载 PDF)
- 字段提取 — pdfplumber 表格提取 + 文本正则双策略
- 生成 Excel — 按购买方分 sheet,含合计行
- 处理日志 — 记录跳过/失败项
输出结构
~/Desktop/发票-2026-03/
├── 001-XX公司发票通知.pdf
├── 002-YY平台电子发票.pdf
├── 003-ZZ服务发票-qr.pdf ← 二维码发票自动解码下载的 PDF
├── 发票汇总.xlsx
└── 处理日志.txt
提取字段
发票号码、发票代码、开票日期、销售方、购买方、金额(不含税)、税额、价税合计
依赖
必需(缺少会退出):
pdfplumber— PDF 解析openpyxl— Excel 生成requests— HTTP 下载Pillow— 图片处理
可选(缺少仅部分功能受限):
playwright+ chromium — 需要 JS 渲染的发票链接下载pyzbar— 二维码图片自动解码(Windows 需额外安装 libzbar.dll)
安装必需依赖:
pip install pdfplumber openpyxl requests Pillow
邮箱兼容性
当前通过 IMAP 协议连接邮箱,config.json 中可配置任意支持 IMAP 的邮箱:
| 邮箱 | imap_server | 备注 |
|---|---|---|
| QQ 邮箱 | imap.qq.com | 需开启 IMAP 并生成授权码 |
| 163 邮箱 | imap.163.com | 需开启 IMAP 并设置客户端授权密码 |
| Gmail | imap.gmail.com | 需开启 IMAP 并生成 App Password |
| Outlook | outlook.office365.com | 需开启 IMAP |
默认配置为 QQ 邮箱。更换邮箱只需修改 config.json 中的 email、password、imap_server。
已知限制
- 部分 JS 重度平台(诺诺网等)headless Playwright 可能失败
- 非标准发票格式可能字段提取不完整
- OSS 签名链接有时效,过期需重新获取
- 发票字段提取针对中国增值税发票格式优化
More from 43college/43-agent-skills
follow-builders
AI 构建者日报 — 追踪 X 和 YouTube 播客上的顶尖 AI 构建者,将内容混编为易读摘要。当用户想了解 AI 行业动态、构建者近况或调用 /ai 时使用。无需 API 密钥或依赖 — 所有内容从中央 feed 获取。
12find-skills
帮助用户发现和安装 Claude Code 技能。当用户问"怎么做 X"、"找一个能做 X 的技能"、"有没有技能可以……"或想扩展 AI 能力时使用此技能。通过 skills.sh 生态搜索、验证质量、协助安装。
9chat-archiver
对话入库器。当用户说"入库"、"归档对话"、"把这次对话存下来"或"/chat-archiver"时触发。回顾当前对话,提取有价值的内容,分类后存入用户的知识库。支持 config 映射和自动发现两种模式。
9feishu-assistant
飞书助手:消息、文档、知识库、通讯录、日历、群聊、任务、多维表格(Base)、邮箱。当用户提到飞书相关操作(发消息、写文档、查知识库、看群聊、管理任务、操作多维表格、查邮件、发邮件、收件箱)时使用此技能。
8web-browser
浏览器联网工具。当需要真实浏览器环境时使用此 skill,包括:需要登录态的操作、反爬严格的平台(小红书、微信公众号等)、页面交互操作、动态渲染内容抓取等。简单搜索和公开页面抓取可直接使用内置的 WebSearch/WebFetch,无需加载此 skill。
8video-creator
用代码创建视频(Remotion)— 动画、字幕、3D、音频、过渡等 30+ 规则按需加载
8