轻量桌面应用,专为批量打印电子发票设计。支持 PDF、OFD、图片等多格式导入,智能排版,一键打印或导出。
提供 轻量版 和 OCR 版(含 PP-OCRv5 智能识别),单文件 exe 即开即用。
OFD(开放版式文档)是国家标准电子发票格式,本工具提供原生完整支持 — 矢量渲染、发票信息直提、印章保真,拖入即用,无需 OCR。
⚠️ 不同厂商/转换工具生成的 OFD 发票格式存在差异(如税务原版 OFD、iloveofd 转换、dzcp 公共服务平台等),如遇解析渲染问题请及时反馈,我们会持续适配。
<EInvoice> 格式,提取发票号码/日期/金额/买卖方信息,汇总表、CSV 导出、批量重命名全兼容;纯数据格式不参与排版打印Windows.Data.Pdf),自动 fallback PDFium(Chromium 内核),兼容企业精简版/LTSC 系统Ctrl+O 添加 · Ctrl+P 打印 · Ctrl++/- 缩放 · Ctrl+0 自适应 · ←→ 翻页| ☀️ 浅色模式 | 🌙 深色模式 |
![]() |
![]() |
从 Releases 下载最新版本:
| 文件 | 说明 |
|---|---|
发票酱_x64-setup.exe |
轻量版安装包 |
发票酱_x64_绿色版.exe |
轻量版便携(单文件 exe,无需安装) |
发票酱_x64_OCR版-setup.exe |
OCR 版安装包(含 PP-OCRv5) |
发票酱_x64_OCR绿色版.zip |
OCR 版便携(exe + models/) |
💡 文字型 PDF / OFD 发票选轻量版即可自动提取金额和销售方信息;图片型 PDF 和图片需 OCR 版。
系统要求:仅支持 Windows 10 1803 及以上版本 或 Windows 11。
⚠️ 不支持 Windows 7/8:依赖的 WebView2 和系统 PDF 组件已停止支持,无法正常运行。
💡 如遇「找不到 WebView2」报错,说明系统未安装或已被卸载。请从 微软官网 下载 Evergreen 引导程序(约 2MB),安装后重启应用即可。
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | 原生 HTML/CSS/JS | 模块化(app / ocr / layout / print),零依赖框架 |
| 后端 | Tauri 2.x (Rust) | 轻量桌面框架,Rust 条件编译管理功能开关 |
| PDF 渲染 | WinRT + PDFium 双引擎 | WinRT 原生渲染优先,自动 fallback PDFium(Chromium 内核) |
| PDF 生成 | printpdf 0.9 + lopdf 0.39 | JPEG 直通零质量损失、PDF 页面 Form XObject 全布局直通 |
| OFD/XML 解析 | Rust 独立 crate (invoice-engine/) |
矢量 SVG 渲染 + 发票 XML/数电票字段直提 + 红章 Appearance 偏移叠加 + DrawParam 继承链 + ImageMask 遮罩合成 |
| OCR | ocr-rs 2.2 (PP-OCRv5 + MNN) | 文本优先 + 坐标回退,对比度增强,Lanczos3 锐化(OCR 版可选) |
| 图像处理 | image 0.25 (Rust) | 原生 WebP/TIFF 支持,kamadak-exif 方向自动修正 |
| 打印 | Print Spooler API + PDFium + SumatraPDF + ShellExecuteW (Win32) | 静默打印(PDFium 直打 DC / SumatraPDF CLI)/ 弹窗确认 / PDF 阅读器 |
ticketchan/
├── src/ # 前端
│ ├── index.html / styles.css
│ ├── app.js # 主入口、状态、文件加载
│ ├── ocr.js # OCR 提取(文本优先 + 坐标回退)
│ ├── layout.js # calculateLayout() + 预览渲染
│ └── print.js # 打印 / 导出 PDF
├── src-tauri/ # Tauri / Rust 后端
│ ├── src/
│ │ ├── main.rs # 入口
│ │ ├── lib.rs # 命令、拖放、进程管理、OFD 解析
│ │ ├── pdf_engine.rs # PDF 生成(JPEG 直通 / 全布局直通)、WinRT 渲染、OCR
│ │ └── pdfium_print.rs # PDFium 矢量打印(直打打印机 DC)
│ ├── invoice-engine/ # 发票引擎独立 crate(OFD SVG 渲染 + XML 数电票解析)
│ │ ├── Cargo.toml # 通过 path 依赖引入主项目
│ │ └── src/lib.rs # parse_ofd → OfdResult { svg, invoice_info } / parse_xml_invoice
│ ├── models/ # PP-OCRv5 MNN 模型(OCR 版打包用)
│ ├── Cargo.toml # ocr feature flag + lopdf 0.39
│ ├── tauri.conf.json # 轻量版配置
│ └── tauri.ocr.conf.json # OCR 版配置(含 models)
├── scripts/
│ ├── build-all.js # 一键全量构建(4 产物)
│ └── bump-version.js # 版本号同步
└── package.json
环境要求:Node.js 18+、Rust 1.77+、Windows 10/11
npm install
# 开发
npm run dev # 轻量版
npm run dev:ocr # OCR 版
# 构建
npm run build # 轻量版
npm run build:ocr # OCR 版
npm run build:all # 一键全量构建(4 产物)
# 版本号
npm run bump 1.9.8 # 同步 package.json → Cargo.toml → tauri.conf.json
<EInvoice> 格式解析(v2.0.7)本项目由 AI 辅助生成,历经 175+ 轮迭代。主要攻克:Tauri 2.x 对话框死锁、WebView2 拖放失效、WinRT COM 接口适配、ocr-rs 条件编译集成、OFD 矢量渲染(DrawParam 继承链 / 文字排版 / 印章偏移 / 自闭合标签陷阱 / ImageMask 遮罩合成)、PDF 引擎 JPEG 直通与 lopdf Form XObject 全布局直通、PDFium 矢量打印(DLL 生命周期管理 / 直打打印机 DC / SEH 原生崩溃保护 / DEVMODE 完整缓冲区)、PDF 文字层坐标提取(批量 rayon 并行 / 按文件分组回退)、预览 DPI/JPEG 加速、设置持久化、打印流程解耦、金额校验可视化、排版份数批量设置、单票独立调整增强(九宫格快速对齐 / 滚轮缩放 / 拖拽约束动态化 / 调整记忆持久化)、PDF 印章烘焙、发票汇总表导出、批量文件重命名、XML 数电票解析、文件列表记忆、打印状态追踪等。
$ claude mcp add fapiao-print \
-- python -m otcore.mcp_server <graph>