FlyOCR:用果蝇全神经连接组做 PDF 文字识别 · 干货攻略

  • 链接: https://x.com/jerryjliu0/status/2099168936059437206
  • 分类: x-tips
  • 来源: X @jerryjliu0
  • 作者: Jay
  • 更新: 2026-09-25
  • 仓库: jerryjliu/fly_ocr

这是什么

FlyOCR(jerryjliu/fly_ocr)是 LlamaIndex 联合创始人 Jerry Liu 在 2026 年 9 月发布的一个探索性项目:将成年雄性果蝇(Drosophila melanogaster)全中枢神经系统(CNS)连接组 MaleCNS v1.0 的固定神经回路,用来做印刷体文字识别。

核心原理一句话:把 PDF 页面切成单个字符图片,将像素映射为果蝇视神经的受体激活信号,让 166,700 个神经元组成的固定电路计算 100ms,从下游神经放电计数中训练一个小型 MLP 解码器读出文字类别。 整个回路内部权重完全冻结,不做任何梯度更新,也不用 LLM 或传统 OCR 模型。

关键数字(均来自 GitHub 官方 README 及 MODEL_CARD):

任务 指标
68 类字符(含字母/数字/标点)识别率 87.6%(1,429 / 1,632 glyphs)
纯字母子集识别率 85.0%(1,061 / 1,248)
数字类(线性读出,10 类) 89.0%(445 / 500)
数值类(16 类,单独 checkpoint) 93.9%(751 / 800)
PDF 文本行字符错误率(CER) 5.7%(8 行 / 176 参考字符)
表格数值单元格精确匹配 21/21 和 44/45(两次选取裁块)
完整 PDF 行完全正确率 仅 1/8 行完全正确

解码器规模:4,096 → 64 → 68 MLP,266,628 可训练参数;从 1,024 个下游神经元的 4 个时间窗口(每窗口 25ms)读取特征。电路在 Apple M2 Pro 本地运行。


为什么值得关注

MaleCNS v1.0:2026 年最大神经科学里程碑

MaleCNS v1.0 是 Google Research 与 HHMI Janelia 合作项目,于 2026 年 6 月 8 日 发布完整连接组数据(2026-09-03 论文正式发表于 Cell)。这是已知最大规模的完整神经连接图谱:

  • 166,700 个神经元
  • 约 1.25 亿个突触连接(25,582,938 条保留在 FlyOCR 使用子集)
  • 覆盖大脑、视叶和腹神经索(VNC)
  • 由 AI 辅助重建,CC-BY 许可证

该项目是果蝇连接组热潮的最新里程碑。2026 年已有多个团队将 MaleCNS 用于不同任务(如 ChessFly 用果蝇下棋),Jerry Liu 的 FlyOCR 则首次将其用于文档解析。

连接组 × AI 的跨域创新

FlyOCR 的意义不在于超越 SOTA OCR,而在于验证了一条全新的技术路径:

  • 固定回路 + 小型学习读出:与当前"大模型 + 大数据"范式完全相反——回路规模(166k 神经元)极大,但可训练参数(266k)极小。
  • 零梯度更新的神经形态计算:整个生物回路作为冻结特征提取器,仅在输出层训练。
  • 为 OCR 的神经网络起源提供实证:说明经过数亿年进化优化的生物视觉通路,在字符识别任务上确实保留了某种通用感知能力。

Jerry Liu 本人也坦言这是"玩乐性计算实验",不代表生物学意义的"阅读",但验证了连接组图谱作为计算资源的可行性。

与 ChessFly 的区别

已有攻略(x-tip-20260919-chessfly-fruit-fly-brain)覆盖了 Maxime Labonne 的 ChessFly 项目(将果蝇连接组用于下棋)。两者核心区别:

维度 ChessFly FlyOCR
目的 下棋(决策) 文字识别(感知)
数据集 FlyWire 果蝇脑 MaleCNS v1.0(全 CNS)
神经元范围 138,639(脑部) 166,700(脑+视叶+VNC)
输入 棋盘状态 PDF 像素
组织 mlabonne/chessfly jerryjliu/fly_ocr

核验过程

官方来源(已读): - GitHub jerryjliu/fly_ocr README:完整架构描述、benchmark 数字、pipeline 各阶段说明 - MODEL_CARD.md:四个 checkpoint 的详细指标、decoder 架构、数据集划分 - docs/research-report.md(研究长报告):方法、方程、输入诊断、模型对比、错误分析、复现步骤

交叉验证结论: - MaleCNS v1.0 数据(166,700 神经元 / 约 125M 突触连接)通过三个独立来源确认:Google Research 官方博客(2026-09-03 Cell 论文同步发布)、HHMI Janelia 官网、Baidu Baike 词条,数字一致。 - FlyOCR README 中"87.6% / 68-class / 1,632 glyphs"与 MODEL_CARD.md 表格数据完全一致。 - 报告所述 MaleCNS v1.0 发布时间(2026-06-08)与 MaleCNS 官网 News 时间线一致。

原帖与官方一致,无冲突。


上手步骤

环境要求

  • Node.js 22.13+(纯前端 React/Vite viewer)
  • macOS(Apple M2 Pro 实测;其他平台未测试)
  • 无需 Python、无需云账号、不发送任何文档数据到外部

安装运行(官方 README)

# 1. 克隆仓库
git clone https://github.com/jerryjliu/fly_ocr.git
cd fly_ocr/viewer

# 2. 安装依赖
npm ci

# 3. 启动本地 viewer
npm run dev

打开本地 URL,选择一个 example,可以回放字符扫描、查看神经活动和原始预测结果。默认展示两行字母示例(calibrated two-line letter example)。

复现完整 benchmark(研究报告中提供)

# 文字识别 benchmark
python -m fly_ocr --task letters-v2

# 数值识别 benchmark
python -m fly_ocr --task numeric

注意:完整的神经元电路模拟数据为预录制文件(artifacts/ 目录),实际推理在 viewer 目录做可视化回放,而非实时模拟。如需重新运行电路模拟,需自行配置 MaleCNS v1.0 数据管道(数据量约 6.8 GB)。

核心 pipeline 各阶段(来自 research-report.md)

Document Input
  ↓ PDF 指定区域渲染 300dpi,或接受 raster 裁块
Segmentation
  ↓ 阈值 160 分离墨迹 → 投影法切分行/字
Normalization
  ↓ 48×48 canvas,保留 cap-height/baseline/ascender/descender
Circuit Simulation
  ↓ 采样 3,335 R1-R6 感觉输入 → 固定刺激模型 → 100ms LIF 模拟
  ↓ 统计 1,024 下游神经元 × 4×25ms 时间窗口
Readout (MLP Decoder)
  → 平方根 → 标准化 → 4096→64→68 MLP → 68 类概率
Reconstruction
  → 几何方法拼字成行/表(不属于神经网络)

坑与适用边界

当前硬性限制

  1. 仅支持英文印刷体:字母集为 0123456789,.-()$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,无中文、无手写体。
  2. 3° 倾斜即破坏切分:PDF 版面稍有旋转,切分阶段即失败。
  3. 版面理解依赖外部几何:单词拼写和表格行列结构由几何方法推断,非神经网络输出。
  4. 完整 PDF 行正确率极低:仅 1/8 行完全正确(多字连错);单字识别率高但累积错误大。
  5. 标点/空格处理粗糙:空格由图像间隙推断,不输出标点类别置信度。

非功能性限制

  • MaleCNS v1.0 数据获取和电路模拟需要大量存储和计算资源。
  • 报告仅在 8 行精选年报文本上测量 CER,不代表通用文档性能。
  • 这本质上是"探索性演示"(exploratory demonstration),不是生产级 OCR。

适用场景

  • 研究连接组约束神经网络的 OCR 能力上限
  • 作为对比基准(生物回路 vs 人工神经网络)
  • 神经科学/计算神经科学方向的科普和教学
  • 不适用:生产环境文档解析、中文 OCR、通用 PDF 文字提取

一句话结论

FlyOCR 验证了用固定果蝇全神经连接组(166,700 神经元 / 25M 连接)做字符识别的可行性——87.6% 的 68 类印刷体准确率证明了进化优化的生物视觉通路保留了通用感知能力,但 5.7% 的行级字符错误率和 3° 倾斜即崩溃的限制也清晰划定了这条路线当前与生产级 OCR 的差距。它是连接组 AI 应用的一个有价值的里程碑,而非 OCR 的新 SOTA。