Cuadre
开源本地收据转税务表格工具,使用Gemma视觉模型在本地转录巴拿马纸质小票,由代码完成金额计算、RUC校验、去重和汇总,数据不离开本机
时间轴 (近 90 天)
Cuadre 是一个开源项目,使用本地运行的 Gemma 模型自动从巴拿马小票照片中提取信息并生成税务表格(CSV、汇总 Markdown 和待复核清单)。
Cuadre 的核心设计原则是“模型转录,代码计算”:Gemma 仅负责照抄小票上的印刷内容,所有算术、校验和汇总由普通 Python 代码完成。
Cuadre 使用 Ollama 的 format 字段传入 JSON Schema,通过约束解码在采样阶段限制 Gemma 输出为合法 JSON,避免模型返回多余字段或编造类别。
Cuadre 在 informe.py 中使用 decimal.Decimal 进行求和,避免 Python float 的 IEEE 754 浮点舍入漂移,确保税务汇总与手工计算一致。
Cuadre 在一台 16GB 内存、没有 GPU 的笔记本上,处理一张小票耗时 6 到 27 秒。
Cuadre 以 temperature: 0 运行 Gemma 并关闭思考模式,以确保同一张照片得到一致的读取结果。
Cuadre 在演示中对六张虚构小票计算出的已付 ITBMS 总额为 B/. 10.98,与手工计算完全一致;系统识别出重复照片未重复计入,并对 RUC 截断、缺失税额行等问题标记待复核。
Cuadre 只检查巴拿马 RUC 的格式形状,不校验校验位,因为作者尚未验证税务局的算法。
Cuadre 整个系统运行时只依赖 Python 标准库,自带 42 个测试,并使用照片哈希做缓存,使重复运行只处理新照片。
使用 Ollama 运行 Gemma 时,Cuadre 唯一的网络连接是 localhost:11434,且代码不接受其他地址,确保小票数据不离开本机。
还有 3 条时间轴事件
全部知识事实 (13)
Cuadre 是一个开源项目,使用本地运行的 Gemma 模型自动从巴拿马小票照片中提取信息并生成税务表格(CSV、汇总 Markdown 和待复核清单)。
50%待验证Cuadre 的核心设计原则是“模型转录,代码计算”:Gemma 仅负责照抄小票上的印刷内容,所有算术、校验和汇总由普通 Python 代码完成。
50%待验证Cuadre 使用 Ollama 的 format 字段传入 JSON Schema,通过约束解码在采样阶段限制 Gemma 输出为合法 JSON,避免模型返回多余字段或编造类别。
50%待验证Cuadre 在 informe.py 中使用 decimal.Decimal 进行求和,避免 Python float 的 IEEE 754 浮点舍入漂移,确保税务汇总与手工计算一致。
50%待验证Cuadre 在一台 16GB 内存、没有 GPU 的笔记本上,处理一张小票耗时 6 到 27 秒。
50%待验证Cuadre 以 temperature: 0 运行 Gemma 并关闭思考模式,以确保同一张照片得到一致的读取结果。
50%待验证一个服务于 30 个客户、每客户约 100 张小票的会计师每月需读取约 3000 张小票;使用本地模型只需电费,没有按张计费或配额限制。
50%待验证Cuadre 目前仅在六张虚构小票上测试过,尚未在真实小票上运行;下一步计划在真实小票上测试、寻求会计师付费意愿并开源代码库。
50%待验证Cuadre 只检查巴拿马 RUC 的格式形状,不校验校验位,因为作者尚未验证税务局的算法。
50%待验证Cuadre 整个系统运行时只依赖 Python 标准库,自带 42 个测试,并使用照片哈希做缓存,使重复运行只处理新照片。
50%待验证使用 Ollama 运行 Gemma 时,Cuadre 唯一的网络连接是 localhost:11434,且代码不接受其他地址,确保小票数据不离开本机。
50%待验证Cuadre 在演示中对六张虚构小票计算出的已付 ITBMS 总额为 B/. 10.98,与手工计算完全一致;系统识别出重复照片未重复计入,并对 RUC 截断、缺失税额行等问题标记待复核。
50%待验证在测试中,Gemma 在全部六张小票上都把标签“ITBMS 7%”复制到 itbms 字段而非金额;修复方式是让 Gemma 返回完整印刷行,由代码提取最后一个金额。
50%