模型 / 数据集
katanaml/sparrow avatar
katanaml/sparrow

Sparrow:把文档变成 JSON 的本地化抽取平台,但 GPL 和 GPU 门槛要先想清楚

Structured data extraction, instruction calling and agentic workflows with ML, LLM and Vision LLM

5,220 个 Star519 个 ForkPythonGPL-3.0

秒懂

它是什么?
Sparrow 是一个 API 优先的文档智能平台,用 Vision LLM 和文本 LLM 把发票、表格、表单转成经过校验的 JSON。它强调本地部署、无外部 API 依赖,但 GPL-3.0 许可证和 GPU 显存要求决定了它并非所有团队的直接答案。
适合谁用?
Sparrow 适合那些已经具备 GPU 资源、需要把发票或表格转成结构化 JSON、并且能够接受 GPL-3.0 许可证约束的团队。它不适合追求零代码快速试用、没有本地 GPU、或者希望将抽取功能嵌入闭源商业产品的开发者。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是文档到数据的最后一公里

很多团队卡在同一个地方:PDF 和图片里的表格、发票、银行对账单,人工录入太慢,传统 OCR 只给文本不给结构。Sparrow 的定位很直接,它把文档变成经过 schema 校验的 JSON,而不是给你一堆识别出来的字符串。README 里的示例是债券表格,输入一张 PNG,输出一个数组,每个元素包含 instrument_name 和 valuation,并且带一个 valid 字段表示校验结果。这个平台面向的是需要把文档处理嵌入后端流水线的工程师,不是给业务人员做临时转换的小工具。它的卖点之一是没有外部 API 调用,所有模型都跑在你自己的基础设施上,这对数据敏感的企业有吸引力。但代价是你要自己管理 GPU、模型权重和推理服务。

三条管线可插拔,但组合方式需要自己摸索

Sparrow 不是单一程序,它拆成 Sparrow Parse、Sparrow Instructor、Sparrow Agents、Sparrow OCR 和 Sparrow UI 几个部分。Parse 负责用 Vision LLM 从图像或 PDF 抽取 JSON,Instructor 处理文本指令、验证和决策,Agents 编排多步骤工作流,OCR 做预处理,UI 提供可视化界面。这些组件通过 REST API 暴露,你可以按任务混用。比如只做发票抽取就只跑 Parse,需要先 OCR 再抽取就串起来。README 中没有给出完整的组合示例,只说「可插拔」,实际编排逻辑需要阅读源码或自行实验。这种模块化设计比单体应用灵活,但初次上手时你得自己判断哪条管线适合哪个任务,文档没有给决策树。

安装的第一步就藏着平台分叉

快速开始的命令看起来简单,先装 pyenv 和 Python 3.12.10,克隆仓库,进入 sparrow/sparrow-ml/llm 目录,然后 pip install -r requirements_sparrow_parse.txt。但 README 特意提醒:macOS 用户要确保文件里引用的是 sparrow-parse[mlx],Linux 或 Windows 用户要用纯 sparrow-parse,否则会拉入 MLX 相关库。这个分叉意味着同一份 requirements 文件在不同平台需要手动编辑。之后启动 API 服务器只需 python api.py,但前提是你已经装好 poppler(macOS 用 brew install poppler)。整个流程假设你有 GPU 并且显存足够运行选定的 Vision LLM,比如 Qwen2.5-VL-72B-Instruct-4bit 这种量化模型。没有 GPU 的机器基本跑不动,README 没有提供纯 CPU 的降级方案。

多后端是亮点,但每个后端都有自己的脾气

Sparrow 支持 MLX(Apple Silicon)、vLLM(NVIDIA)、Ollama、Hugging Face 和 Mistral OCR,而且宣称同一套 API 表面。这听起来很美,实际上每个后端的依赖和启动方式不同。CLI 示例里用 --options mlx 和 --options mlx-community/Qwen2.5-VL-72B-Instruct-4bit 来指定后端和模型,说明模型名称和推理框架是作为参数传入的。如果你在 Linux 上用 vLLM,需要确保 CUDA 环境正确,而 MLX 只适用于 macOS。Mistral OCR 是云服务,这跟「无外部 API 调用」的定位有冲突,README 把它列为 Cloud OCR Backend,意味着如果你选择 Mistral OCR,数据会离开本地。所以「本地部署」并非绝对,取决于你选哪个后端。

schema 校验是亮点,但它的能力边界在文档里没写清

Sparrow 强调 JSON schema 验证,CLI 示例中第一个参数就是内联 schema,比如 [{"instrument_name":"str", "valuation":0}],这说明抽取结果会按这个 schema 自动校验,valid 字段标记是否通过。这是一个实用功能,能提前拦截模型输出的格式错误。但 README 没有说明 schema 支持哪些类型、嵌套结构怎么处理、校验失败时有没有重试机制。如果你需要复杂的嵌套 schema 或条件必填字段,文档没有给出例子,只能自己试。另一个限制是输入格式只提到 PNG、JPG 和多页 PDF,其他常见格式如 TIFF 或扫描版 Word 文档不在支持列表里。

GPL-3.0 是硬约束,商业使用要另谈许可

Sparrow 采用 GPL-3.0 许可证,README 明确写有「commercial licensing available」和「Enterprise Ready」字样,暗示项目方提供商业授权。这意味着如果你把 Sparrow 集成到自己的产品里,并且分发该产品,你的代码可能被迫开源。对于内部工具,GPL 影响较小,但如果你做的是 SaaS 或卖给客户的软件,就必须谨慎。README 没有给出商业许可的价格或条款,只提到「available」。另一个维护成本点是版本节奏,最近三个版本分别是 v0.4.4(2025-09)、v0.5.0(2026-05)、v0.6.0(2026-06),说明项目在快速迭代,但这也意味着 API 可能不稳定,升级时你需要重新测试现有流水线。

对比:Sparrow 与直接调用 Vision LLM 的差别

一个现实中的替代方案是跳过 Sparrow,直接使用 Qwen2.5-VL 或类似模型,自己写 prompt 和 JSON 解析逻辑。差别在于 Sparrow 把模型加载、推理服务、schema 校验和 API 封装都做好了,你只需要传文件和 schema。直接调用模型则给你完全的控制权,但你要自己处理模型量化、批量推理、错误重试和输出格式校验。另一个替代是传统 OCR 加正则表达式,比如 Tesseract 加 pandas 解析,这种方式对简单固定版式可能更快,但遇到复杂表格或手写内容就力不从心。Sparrow 的价值在于把 Vision LLM 的灵活性包装成企业可用的 REST 接口,代价是你被绑定到它的抽象和 GPL 条款。

编辑结论

Sparrow 适合那些已经具备 GPU 资源、需要把发票或表格转成结构化 JSON、并且能够接受 GPL-3.0 许可证约束的团队。它不适合追求零代码快速试用、没有本地 GPU、或者希望将抽取功能嵌入闭源商业产品的开发者。在采纳之前,先确认你的 Python 版本是 3.12.10 以上,检查 requirements_sparrow_parse.txt 中的 sparrow-parse 依赖是带 [mlx] 后缀还是纯库,并评估你的显存能否跑起所选 Vision LLM。如果你需要商业许可或更宽松的开源协议,应该直接联系项目方,而不是在 GPL 边界上试探。

官方来源

  1. katanaml/sparrow on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
社区笔记

社区笔记