网友作品 #000099 · 提交于 2026/08/11
发票批量识别工具:自动写入WPS多维表格
★★★★★零基础办公智能体国内其他模型WPSdbsheet

作品简介
这是一套“发票批量识别 → 写入 WPS 多维表格”的工具:浏览器页面负责选择图片/PDF 发票并识别,识别结果经本地 Python 代理(保管 token)提交到部署在多维表格里的 WPS AirScript 脚本,最终自动建表写入。首次写入自动创建“发票识别”表并建好字段,之后按发票号码去重,不重复录入。
核心亮点
- 批量识别:支持 JPG/PNG/BMP/WEBP/PDF,可选文件夹或多个文件导入
- 双引擎识别:ZXing 二维码引擎优先,扫不出时 OCR 兜底(Tesseract.js,需联网)
- 八类字段自动落表:发票类型、代码、号码、金额、开票日期、校验码、识别来源、文件名一一映射
- 自动去重:按发票号码去重,重复发票直接跳过;无号码的识别结果不写入
- 链路安全:token 由本地代理保管,不暴露在前端页面
- 省心开关:可勾选“识别后自动写入”,识别与写入一步完成
技术与工具
- 链路架构:浏览器页面 fetch → 本地 Python 代理(wps_proxy.py,127.0.0.1:8770)→ WPS AirScript WebHook → 多维表格
- 识别能力:jsQR / ZXing 二维码识别 + Tesseract.js OCR 兜底
- 开发方式:办公智能体工具搭配国内免费模型,基于 WPSdbsheet skill 完成对接
开发过程
作者起初未使用对应 skill 自行摸索,进度很慢且一直打不通 WPS 多维表格;改用 WPSdbsheet skill 后仅修复 2 次就顺利打通,前后对比非常明显。
适用场景
- 企业财务报销:批量识别员工提交的报销发票自动归集,减少手动录入、防范重复报销
- 中小商家票据管理:进货、经营发票批量识别入表,方便做账、报税与经营数据分析
原始提交内容(点开查看,可复制全文去问 AI)
发票识别结果写入 WPS 多维表格
本目录自带的「发票二维码批量识别工具」可把识别出的发票信息直接写入 WPS 多维表格 cc3kbdx8i845。 写入链路完全独立,与「费用报销单」程序无关:
浏览器(invoice-qr-scanner/index.html)
fetch http://127.0.0.1:8770/api/write_invoices
本目录 wps_proxy.py(本地代理,保管 token)
POST + 头 AirScript-Token
WPS AirScript(airscript_write.js,部署在 cc3kbdx8i845)
多维表格的「发票识别」表(自动建表 + 按发票号码去重)
一次性配置(只需做一次)
-
部署写入脚本
- 打开 WPS 多维表格
cc3kbdx8i845顶部「效率」/「工具箱」「高级开发」/「AirScript 脚本」。 - 新建脚本,把本目录
airscript_write.js的全部内容粘进去。 - 点击「运行」/「调试」确认无报错(可临时在
Context.argv放一条测试数据)。 - 点击「发布」/「部署为 WebHook」,复制生成的 Webhook 地址 和 Token。
- 打开 WPS 多维表格
-
填配置
- 打开本目录
wps_config.json,把上一步的地址/令牌填到airscript_write段:webhook_url:部署后真实的https://www.kdocs.cn/api/v3/ide/file/cc3kbdx8i845/script/V2-.../sync_tasktoken:部署后真实的 token(参考「费用报销单」程序的 config.json 里 token 字段格式;若写入报鉴权错误,说明该 token 是只读脚本的,需换成 airscript_write.js 自己的 token)
- 保存。
- 打开本目录
每次使用
- 启动代理:双击本目录
start_wps_proxy.bat(或命令行python wps_proxy.py)。 看到监听 http://127.0.0.1:8770即成功。保持窗口开着。 - 浏览器打开
index.html,选图片/PDF 发票 识别。 - 点「 写入WPS多维表格」(或在设置里勾选「识别后自动写入」)。
- 首次写入会自动在
cc3kbdx8i845里新建「发票识别」表并建好字段;之后按发票号码去重,不重复写。
字段映射
| 多维表字段 | 来源 | 类型 |
|---|---|---|
| 发票类型 | f.invoiceType | 文本 |
| 发票代码 | f.invoiceCode | 文本 |
| 发票号码 | f.invoiceNumber(去重主键) | 文本 |
| 金额 | f.amount(数值) | 数字 |
| 开票日期 | f.invoiceDate(转 yyyy/mm/dd) | 日期 |
| 校验码 | f.checkCode | 文本 |
| 识别来源 | jsQR / ZXing / OCR | 文本 |
| 文件名 | 原文件名 | 文本 |
无发票号码的识别结果不会写入(无法去重)。
排错
- 代理连不上:确认
start_wps_proxy.bat已运行、端口 8770 未被占用(代理启动会自动杀掉占用该端口的旧进程)。 - 未配置:把
airscript_write的webhook_url/token填好。 - 鉴权错误:token 与脚本不匹配——换用 airscript_write.js 部署后生成的 token。
- 写入 0 条:该批发票号码在表里都已存在(去重跳过),属正常。