跳到内容
当前位置:首页>电子书资讯>OCR 电子书之我见

OCR 电子书之我见

  • 2026-11-13 19:39:24
OCR 电子书之我见

QUOTE

「跨页衔接是个问题,校对起来还是很繁琐,而这些事情理应全自动执行。」

在《光学字符识别?也学点新的》[1]一文中,我提到了使用 Gemini CLI 自动化处理 OCR 任务的方法。那时候还有 Gemini CLI(现在我用 Antigravity),那时候还没有 Skill(我把工作流写在系统提示词里)。虽然处理结果不尽如人意,但也是一番心意。

之后,我在小红书评论区的指引下走了 PaddleOCR 之类专业的弯路。效果令人满意,但跨页衔接是个问题,校对起来还是很繁琐,而这些事情理应全自动执行。

最近 Gemini 接连推出了好几个 Flash 模型,可以重启这个全自动 OCR 项目了,直接写成一个 Skill:pdf-book-ocr[2]。

文中使用模型均为 Gemini 3.8 Flash,使用 Agent 均为 Antigravity。

01

PIPELINE

PDF → EPUB

输入是原始 PDF,输出是规范排版的 EPUB。

和之前的翻译器 TransLit[3] 一样,

「我需要一个好的成品,但完全不需要保持最初的排版。」

工作流很自然,重要的几步大致是这样:

1

切分 PDF;

2

子 Agent 分批并行 OCR;

3

合并内容;

4

Markdown 转 EPUB。

还有一些处理细节,可能不太值得详细写,比如:

数字版 vs 扫描版

数字版 PDF 不同于扫描版 PDF 的处理流程;

标题层级控制

在分派子 Agent 前限定大标题,在转 EPUB 之前检查全部标题层级;

过滤冗余页面

删除版权信息等页面——反正 PDF 主要是盗版。

附上 Agent 绘制的流程图,以供参考:

...workflow

[原始 PDF 图书]

    │

    ▼ (Step 1: 预处理、切片规划与全局目录提取)

digitize_book.py ──> 提取封面与物理切片

    │ 主 Agent 审视卷首切片提炼《全书大章白名单》

    ▼

[Gate 1 门禁] ──────> 确认清单条目有效 + 大章白名单已提取

    │

    ▼ (Step 2: Subagent 批次滚动转写)

invoke_subagent ───> 注入【全书大章白名单】,防局部视界导致的小节升格

    │ 逐片落盘 raw_md/*.md

    ▼

[Gate 2 门禁] ──────> 确认切片 100% 完整落盘且 > 100B

    │

    ▼ (Step 3: 汇编与目录审查门禁)

digitize_book.py --preview-toc (可选快速预检)

digitize_book.py --assemble

    ├── seam_auditor: 跨切片接缝平滑焊接 (12 MERGE / 11 SPLIT)

    ├── toc_manifest: 导出章节拟案,高亮微短章与英文单词孤岛

    │ └── [Gate 3 门禁]: 主 Agent 对照大章白名单,核验无碎片短章后再放行

    ├── chapter_assembler: 依真实大章聚合,隔离脚注命名空间

    └── epub_builder: Pandoc 编译 EPUB 3 + 注入双向弹框注释

    │

    ▼ (Step 4: 出厂验收)

《书名》.epub + 《书名》.md + images/ (生成至输出工作目录)

02

FIGURE EXTRACTION

插图的处理方式

之前在 Google AI Studio 窗口做 OCR,自是只能处理小说之类的“字书”。Paddle OCR 等工具倒是可以理解排版,保存截图到合适的位置。

用上 Agent 之后,就有了更好的处理思路。

在子 Agent 做 OCR 的同时,遇到插图就会记录类似于这样的标记:

...markdown

<!-- FIGURE: page=3 bbox=[150, 80, 520, 920] -->

![马孔多全景手绘图](images/part_01_fig_01.png)

其中包括插图的页码、位置(上下左右坐标)、图题以及占位用的文件名。

当全部子 Agent 转写完毕之后,调用脚本在 PDF 中相应位置截图并保存。

ALGORITHM

这个脚本还有一点数字图像处理的思路,AI 说这叫 投影轮廓吸附(Projection Profile Snapping)——先在大模型给出的坐标基础上外扩一圈,防止图像不全;之后做边缘检测(为了不把图题截下来,还会检测图题和图像中的空白缝隙),删去白边。

∞

EPILOGUE

结语

如果效果不满意,可以在任务完成之后和 Agent 交流改进。

有快要过期的余量的话,这个 Skill 值得一试。

END

参考链接:

[1] 光学字符识别?也学点新的:https://fengyukongzhou.github.io/2025/09/07/OCR-Gemini/

[2] pdf-book-ocr 仓库:https://github.com/fengyukongzhou/pdf-book-ocr

[3] TransLit 翻译应用:https://ai.studio/apps/b184f80d-4fa5-4fce-a431-029da0140dce

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。

微信咨询 微信客服二维码微信扫一扫 · 添加人工客服 QQ QQ咨询 QQ咨询二维码QQ扫一扫 · 添加人工客服 帮助手册