2.8 KiB
2.8 KiB
last_reviewed
| last_reviewed |
|---|
| 2026-06-11 |
src/doc — 文档处理模块
负责发票信息提取、基于 LLM 的支付截图信息识别、差旅/普通报销信息提取、以及将数据填入 Word 出库单模板。
模块清单
| 文件 | 作用 |
|---|---|
extractor.py |
编排入口:串联 PDF 读取 → LLM 提取 → 支付截图匹配 → 分类 |
pdf.py |
PDF 图片渲染(PyMuPDF) |
llm_extractor.py |
基于 LLM 的信息提取(发票文本 + 支付截图多模态 + 差旅/普通报销信息综合提取) |
matcher.py |
发票与支付截图按金额匹配,回填刷卡信息至发票记录 |
invoice.py |
发票类型常量、分类逻辑、CSV 读写工具 |
fill_consumable_doc.py |
将 CSV 数据填入易耗品出库单 Word 模板(pywin32 COM) |
prompt.py |
LLM 提示词模板加载 |
prompts/ |
提示词模板文件(invoice_system.md、travel_info_system.md、normal_info_system.md) |
数据流
PDF 发票 → pdf.py → llm_extractor.py → [发票列表]
支付截图 → llm_extractor.py → [刷卡记录]
↓
matcher.py(按金额贪心匹配,相对容差 3%)
↓
invoice.py 分类 → CSV(已回填刷卡日期/卡号/金额)
↓
fill_consumable_doc → 易耗品出库单.doc
[发票列表 + 匹配结果] → llm_extractor.py
↓
差旅发票 → extract_travel_info() → travel_info.json
普通发票 → extract_normal_info() → normal_info.json
依赖说明
- PyMuPDF (pymupdf) — PDF 图片渲染
- pywin32 — Word COM 自动化(仅 Windows)
- llama-index — LLM 信息提取
注意事项
fill_consumable_doc.py依赖 Microsoft Word + COM,仅 Windows 可用- LLM 提取不会覆盖 CSV 中已有非空字段
- 提示词模板位于
prompts/目录,由prompt.py加载 - LLM 提取失败时直接报错,无正则回退
变更说明(2026-06-11)
llm_extractor.py新增extract_normal_info():综合普通发票、支付记录和匹配结果,提取报销说明、发票总数、总金额、支付方式、附件清单,缓存为normal_info.jsonllm_extractor.py的load_cache()扩展支持加载normal_info.jsonprompt.py新增build_normal_info_system_prompt():加载normal_info_system.mdprompts/新增normal_info_system.md:普通发票信息提取的系统提示词