扫描件不该只停留在 OCR:用 scan-to-vector 让 AI Agent 重建可校对的 PDF
OCR 能让扫描件里的文字变得可搜索,却不一定保住原来的版面、表格和图形。开源项目 scan-to-vector 把任务交给 AI Agent:逐页读取扫描图,重建文字与矢量图形,输出重新排版的 PDF,并要求对照原图校对。它不是“一键 OCR”,而是一套可检查、可修订、可续跑的文档重建工作流。
OCR 与重建,解决的不是同一个问题
普通 OCR 的目标通常是识别文字;scan-to-vector 面向的是整页还原。项目说明,其流程会先处理照片倾斜、光照不均等问题,再对文字进行识别和定位,并把线条、箭头、图表等转为矢量形状。最终产物不只是隐藏文字层,而是重新排版、可搜索和复制的 PDF。
这对旧书、纸质讲义、表格、流程图和手机拍摄的文档尤其有用:前者要保留结构,后者常有透视、阴影或页面歪斜。若只需要抽取一段文字,传统 OCR 更轻便;如果目标是得到适合阅读、打印或归档的文档,页面级重建才有意义。
项目 README 展示了一个值得注意的基准:在两份此前未见过的 9 页扫描文档上,作者报告 Haiku 5.5 的页面评分从 0.841 升至 0.997,Sonnet 5.5 的处理时间由每份 25.7 分钟降至 16.2 分钟。该结果来自项目自己的测试集和评估方式,不应直接外推为所有文档、模型或设备上的保证;它更适合作为“明确流程与检查步骤可能改善 Agent 输出”的案例。
安装:先把技能交给 Agent
仓库提供适用于 Claude Code 与 Codex 的安装脚本,也可手动复制技能目录。使用脚本前先读内容,确认来源和行为符合自己的环境;下面是 README 给出的快捷方式:
curl -fsSL https://raw.githubusercontent.com/3351666087/scan-to-vector-skill/main/install.sh | bash
脚本会为它检测到的 Agent 安装技能。若要指定目标,可将参数传给脚本,例如 --claude、--codex 或 --dir DIR。项目建议 Python 3.10 及以上,并列出 PyMuPDF、Pillow、NumPy、SciPy,以及系统级 Tesseract OCR 依赖。具体安装方式随操作系统而异,建议以仓库当前说明为准。
需要注意:这是 Agent 工作流,不是独立的桌面转换器。安装技能后,仍要由支持读取该技能的 Agent 执行任务,并为脚本准备依赖。批量处理前,先用少量页面验证环境、输出质量与耗时。
用小样本跑通“生成—检查—修订”
仓库示例将脚本放在技能目录的 scripts 下。可以先对少量页面生成草稿及报告:
S=skills/scan-to-vector/scripts python "$S/draft.py" page1.jpg page2.jpg --out work --pdf out/rebuilt.pdf python "$S/pdf_tool.py" audit out/rebuilt.pdf --out work/audit.json
这里的路径是仓库示例结构;若通过 Agent 的技能目录安装,应将 S 改成实际脚本路径。draft.py 支持 --rebuild work --pdf out/rebuilt.pdf 在修正后重新生成;zoom.py 可针对页面区域放大检查。不要把审计通过当作内容正确的证明:自动比较能提示遗漏或损坏,却无法保证每个字、数字和图形都识别无误。
实用的审核顺序是:先抽查页面边缘、页码与标题,再逐页核对正文;随后重点检查表格数值、公式、图例、箭头方向和相似字符。对于识别错误,按项目工作流在 fixes.json 中记录修正,再重新构建并复查。长文档的页面台账和检查点可帮助续跑,但仍应保留原始扫描作为最终依据。
适用边界与最佳实践
scan-to-vector 适合把“扫描图像”转成“可检索、可阅读、可核验”的重建文档,不能代替人工确认法律、医疗或财务材料中的关键数字。处理敏感文件时,也要评估所用模型和 Agent 的数据路径;本地生成 PDF 不代表整个处理过程必然离线。
开始前确认输入文件可读、输出位置明确,并保留原件。先处理几页、检查质量和成本,再决定是否扩展到整本书。若结果会对外发布或用于正式记录,安排熟悉原文的人逐页复核;尤其不要因 PDF 可搜索、审计文件无报错,就省略事实校对。
它的价值不在“AI 识字更神奇”,而在把图像预处理、版面重建、错误修订和质量检查组织成一个可重复流程。对于有大量纸本资料、又愿意接受逐页质检的开发者和研究者,这种 Agent Skill 值得作为 OCR 之外的另一种选择。