发票-记账凭证识别生成Excel
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-5ott9gs6--invoice-formats.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-5ott9gs6/invoice-formats。发票识别与导出,支持增值税发票、数电票、区块链发票、医疗电子票据及记账凭证的 OCR 识别、校验与 Excel 导出
阅读全文 (展开查看完整说明)
概述
发票识别与导出
功能描述
本技能对发票图像或文档进行识别,提取结构化信息并完成校验,最终导出单一工作表的 Excel 文件。完全本地运行,免费使用。
- 核心能力:
- 发票图像 OCR 识别与信息提取
- 票据类型自动分类与识别
- 字段清洗、格式校验与逻辑校验
- 发票/凭证结果导出为 Excel
- 触发条件:
- 用户上传发票图片或文档,需要提取信息或导出 Excel
- 用户提供了发票/凭证结构化数据,需要导出 Excel
前置准备
首次使用时运行环境自检脚本,会自动安装缺失的 Python 依赖(pdf2image / Pillow / openpyxl / ofd2pdf)并尝试安装系统依赖 poppler:
python scripts/check_env.py- 脚本检查通过(exit 0)即可正常使用
- poppler 自动安装失败时,按脚本输出的提示手动安装:
- Windows:下载 poppler for Windows,将
bin目录加入系统PATH - macOS:
brew install poppler - Linux(Ubuntu/Debian):
sudo apt-get install poppler-utils - Linux(CentOS/RHEL):
sudo yum install poppler-utils
- Windows:下载 poppler for Windows,将
也可以手动安装全部依赖:
pip install -r requirements.txt工作流程
1. 文件接收与预处理
- 图片格式(JPG/PNG/BMP)→ 直接进入识别流程
- PDF/OFD 格式 → 调用
scripts/pdf_to_image.py转换为图片:
python scripts/pdf_to_image.py invoice.pdf invoice.png多页文档输出 invoice_001.png、invoice_002.png 等。
2. OCR 识别与字段提取
使用智能体原生图像识别能力提取关键字段:发票代码、发票号码、开票日期、购买方/销售方信息、商品明细、金额、税率税额、校验码等。
3. 字段清洗与校验
字段清洗(规则见 [references/invoice-formats.md](references/invoice-formats.md)):
- 发票代码/号码:去除
No.、№、第、号、空格,只保留数字 - 开票日期:统一转为
YYYY-MM-DD - 税号:去除空格,统一大写
- 金额:去除
¥、千分位逗号等符号 - 重点复核 OCR 易混淆字符:
0/O/6/8、1/I/l/7、5/S/6、8/6/0、9/4、B/8
类型分类(规则见 [references/invoice-types.md](references/invoice-types.md))与格式/逻辑校验:
- 发票代码:10 位或 12 位数字(数电票无发票代码)
- 发票号码:8 位数字(数电票为 20 位)
- 税号:统一社会信用代码 18 位,或旧版纳税人识别号 15 位
- 价税合计 = 不含税金额 + 税额;税率合规(13%、9%、6%、3% 等);明细汇总 = 总金额
4. 生成结构化 JSON
按下方「附录:JSON 结构示例」组织识别结果,保存为 result.json。
5. 导出 Excel
python scripts/export_to_excel.py result.json invoice_result.xlsx- 发票数据:工作表名「发票信息」
- 凭证数据:工作表名「凭证分录」
- 多张发票:JSON 中用
{ "invoices": [...] },自动合并为单一工作表
6. 交付
将 Excel 文件交付给用户,并提示人工复核校验异常项。
附录:JSON 结构示例
发票模式(invoice_data):
{
"invoice_type": "增值税专用发票",
"invoice_code": "4400122135",
"invoice_number": "12345678",
"invoice_date": "2024-01-15",
"buyer": { "name": "某某科技有限公司", "tax_number": "91440300XXXXXXXXXX" },
"seller": { "name": "某某信息技术有限公司", "tax_number": "91110101YYYYYYYYYY" },
"remark": "发票备注信息",
"line_items": [
{
"description": "软件服务",
"quantity": 1,
"unit_price": 1000.00,
"amount": 1000.00,
"tax_rate": 0.06,
"tax_amount": 60.00,
"remark": "明细备注"
}
],
"subtotal": 1000.00,
"tax_amount": 60.00,
"total_amount": 1060.00,
"validation": {
"format_valid": true,
"logic_valid": true,
"errors": []
}
}以上名称、税号、发票号码均为虚构示例。
多张发票合并模式(invoices):
{
"invoices": [
{ "invoice_type": "增值税专用发票", "invoice_code": "...", "invoice_number": "12345678", "invoice_date": "2024-01-15", "buyer": { "name": "购买方A", "tax_number": "..." }, "seller": { "name": "销售方A", "tax_number": "..." }, "line_items": [], "subtotal": 100.00, "tax_amount": 13.00, "total_amount": 113.00 },
{ "invoice_type": "增值税普通发票", "invoice_code": "...", "invoice_number": "87654321", "invoice_date": "2024-01-16", "buyer": { "name": "购买方B", "tax_number": "..." }, "seller": { "name": "销售方B", "tax_number": "..." }, "line_items": [], "subtotal": 200.00, "tax_amount": 26.00, "total_amount": 226.00 }
]
}凭证模式(voucher_entries):
{
"voucher_entries": [
{
"date": "2010-01-31",
"voucher_no": "1",
"summary": "支存款",
"subject_code": "1001",
"subject_name": "现金",
"aux_item": "",
"currency": "人民币",
"debit_foreign": 5774000.00,
"debit_local": 5774000.00,
"credit_foreign": 0,
"credit_local": 0
},
{
"date": "2010-01-31",
"voucher_no": "1",
"summary": "支存款",
"subject_code": "1002",
"subject_name": "银行存款",
"aux_item": "",
"currency": "人民币",
"debit_foreign": 0,
"debit_local": 0,
"credit_foreign": 5774000.00,
"credit_local": 5774000.00
}
]
}输出格式说明
- 发票:工作表名「发票信息」,列为发票类型、发票代码、发票号码、开票日期、购买方名称/税号、销售方名称/税号、序号、项目名称、规格型号、单位、数量、单价、金额、税率、税额、价税合计、备注、格式校验、逻辑校验、异常提示。每个明细一行,末尾附合计行。
- 凭证:工作表名「凭证分录」,列为日期、凭证号、摘要、科目编码、科目名称、辅助项、币种、借方原币/本币、贷方原币/本币。
资源索引
- 环境自检脚本:见 [scripts/check_env.py](scripts/check_env.py)
- 用法:
python scripts/check_env.py - 用途:检查关键脚本、Python 依赖、poppler、ofd2pdf,缺失时自动安装(poppler 按平台尽力自动安装,失败时输出手动安装指引)
- 用法:
- 格式规范:见 [references/invoice-formats.md](references/invoice-formats.md)
- 何时读取:进行字段清洗或格式校验时
- 票据分类:见 [references/invoice-types.md](references/invoice-types.md)
- 何时读取:需要识别票据类型或分类规则时
- PDF/OFD 转图片脚本:见 [scripts/pdf_to_image.py](scripts/pdf_to_image.py)
- 用法:
python scripts/pdf_to_image.py invoice.pdf invoice.png(多页输出invoice_001.png等)
- 用法:
- Excel 导出脚本:见 [scripts/export_to_excel.py](scripts/export_to_excel.py)
- 用法:
python scripts/export_to_excel.py result.json invoice_result.xlsx - 参数:
input_json_path(JSON 文件路径或-表示标准输入)、output_xlsx_path(输出 Excel 路径)
- 用法:
注意事项
- 图像质量:上传发票图片时,建议确保图片清晰、光照均匀、无遮挡
- 校验复核:校验失败的信息需要人工复核确认
- 隐私保护:处理发票时注意保护敏感信息,识别完成后可提示用户是否需要删除原文件
- OFD 文件处理:需额外安装
pip install ofd2pdf