别急着让 AI 读图,先 OCR 能省一大笔 Token
我拍下了很多会议 PPT,真正需要时却找不到。把图片交给知识库之前,我先在本地跑通了 OCR。

照片保存在相册里,不代表它已经进入了我的知识库。
我拍下了很多,真正需要时却找不到

每次出去参加分享会,我都有一个很熟练的动作:掏出手机,对着大屏幕拍照。
这页讲得不错,先拍下来。那张图以后可能用得上,也先存着。遇到来不及记笔记的地方,我甚至会连着拍好几张,生怕漏掉什么。
网络会议也一样。老师切到一张重要的图,我会立刻截图,然后很安心地告诉自己:没关系,我已经保存了。
那一刻,我是真的觉得自己把知识带回来了。
可活动结束以后,它们只是安静地躺进了手机相册和电脑文件夹。
但真正要用的时候,我还是只能一张张往回翻。
我可能记得“有位老师讲过一个方法”,却记不起是哪场活动、哪一页 PPT,更不记得当时的完整上下文。
更麻烦的是,我能看懂这些图片,电脑里的搜索框看不懂,我的知识库也搜不到。
有时候翻了半天没找到,我甚至会怀疑:那一页真的是我拍过,还是我只是记得自己拍过?
这些资料明明存在,却跟没有进入系统差不多。
我保存下来的不是知识,只是一堆以后还要靠自己重新辨认的照片。
AI 不是看不懂图片,而是还搜不到它

现在很多多模态 AI 都能读取图片。但我的知识库在检索时,主要搜索的还是文字。
一张 PPT 照片放进文件夹,系统最先看到的可能只有文件名:
IMG_XXXX.jpg
至于图片里写了什么、讲了什么,它并不会自动变成可搜索的内容。
所以在清洗、切片、向量化和 RAG 之前,我还需要补一个看起来很基础、却绕不过去的动作:
先把图片里的字,重新变成文字。
这就是 OCR。
说得简单一点,它负责“认字”。图片还是原来的图片,但里面的标题、段落和数字,会多出一份可以保存、搜索和处理的文字版本。
OCR 之后,那些原来只能靠我一张张翻的 PPT,才第一次有机会被搜索、被引用,也被我以后重新找到。
我没有把所有图片都交给大模型
最直接的做法,是把图片一张张发给视觉大模型,让它识别和整理。
少量图片当然可以这样做。但当文件开始变多,我更希望把“认字”这件事先放在本地完成。
原因并不复杂:
- 图片不用先上传到外部服务;
- 可以在电脑里批量处理;
- 同一批资料重新扫描时,不需要再次调用大模型;
- 单纯的文字识别,不一定需要大模型参与推理。
于是,我把这件事交给了 AI。
不是把所有图片直接发给它,让它替我看一遍;而是让它像一个坐在我旁边的技术搭子,在我的电脑里寻找、安装和测试开源 OCR 工具。
我负责告诉它“我想得到什么”,它负责一个方案不行,就继续排查下一个。
我原本以为,找一个支持中文的项目装上,就可以开始跑了。
事实证明,事情没有我想得那么顺利。
为了让电脑认字,我换了四次方案

第一轮尝试的是 Tesseract。
看到安装成功的时候,我以为第一步已经过了。结果中文语言包没有顺利准备好。只有英文识别时,中文 PPT 的效果基本没法用。
第二轮换成 EasyOCR。
安装完成了,模型文件却没有完整下载下来。屏幕上又是一串报错,任务还是没跑起来。
第三轮是 PaddleOCR。
这一次连模型都下载好了,我又觉得:应该总算可以了吧。
结果运行时遇到底层兼容问题,图片依然没有成功处理。
那种感觉很像门已经打开了一条缝,走近以后才发现,里面还有一扇门。
最后,AI 又帮我换成了 RapidOCR。
它把 PaddleOCR 的模型转换成更容易跨平台部署的格式,可以通过 ONNX Runtime 在本地运行。
当第一张图片终于输出一段可以复制、可以搜索的文字时,我盯着屏幕看了一会儿。
那不是什么惊天动地的结果。只是原本困在图片里的几行字,终于从照片里走了出来。
对我来说,最重要的不是它的技术名字,而是:它终于在我的电脑上跑通了。
线下拍摄的 PPT、网络会议截图和扫描图片,被批量识别成文字,再按照原始图片顺序保存下来。
前面失败的三次并没有白费。至少它们让我知道,工具介绍页上的“支持”,和真正落到自己的电脑上,中间还有一段路。
这段过程也让我重新理解了一件事:
开源项目写着“支持中文”,不等于它一定能在你的电脑上顺利运行。真正适合自己的工具,是那个能稳定完成任务的工具。
本地 OCR,真的不消耗 Token 吗?

跑通以后,我很快又冒出了一个现实问题:这么多图片批量处理,会不会一直消耗 Token?
答案是,如果 RapidOCR 在本地识别图片,它不需要调用大语言模型 API。
它主要消耗的是电脑本身的资源:CPU 或 GPU、内存、运行时间和硬盘空间。
这些动作不消耗大模型 Token:
- 检测图片里的文字区域;
- 识别中文和英文;
- 批量处理本地图片;
- 把结果保存成 TXT 或 Markdown;
- 将 OCR 文字和原图一起留在本地。
但这不代表整套知识库都不消耗 Token。
当我继续让大模型做下面这些事情时,才会真正用到 Token:
- 修正和整理 OCR 文字;
- 恢复标题、段落和列表结构;
- 总结一场分享的核心观点;
- 提取方法、案例和行动清单;
- 对不同来源进行比较和推断;
- 在知识库问答时,阅读检索结果并生成回答;
- 如果使用外部 Embedding API,向量化也可能按输入 Token 计费。
这也是我越来越喜欢“本地先处理”这件事的原因。
能在电脑里安静完成的重复工作,就先留在电脑里完成。真的需要理解、比较和判断时,再请大模型进来。
所以,我现在更愿意这样理解:
本地 OCR 负责认字,大模型负责理解和判断。先让电脑做确定性的重复工作,再把 Token 花在真正需要思考的地方。
识别正确,不代表内容可信

图片变成文字以后,我一开始其实很开心。终于能搜了,好像这批资料已经被救活了。
但很快我发现,还有一个更容易被忽略的问题:OCR 识别出来的内容,能不能直接相信?
不能。至少不能不看原图就直接相信。
这里其实有两层完全不同的检查。
第一层:检查字有没有认错
OCR 最容易出问题的,往往不是普通段落,而是:
- 数字和百分比;
- 人名、品牌名和英文缩写;
- 表格的行列关系;
- 图表里的单位;
- 被反光、裁切或遮挡的文字;
- 网络会议截图里较小、较模糊的内容。
我不希望知识库把一个识别错误的数字,整理成一句语气笃定的结论。
所以我会保留原始图片,并让 OCR 文字始终可以回到对应的那一页。
遇到数字、仪表盘和复杂表格时,还需要人工抽查;无法确认的内容宁可标记为模糊,也不把它修成一个看起来很合理的数字。
第二层:检查这个观点是否可靠
即使 OCR 一个字都没有认错,也只能证明:
这张 PPT 上确实写了这句话。
它不能证明这句话一定正确。
因此,资料进入知识库时,我还会尽量保留活动时间、分享者、原始文件和页面位置。有逐字稿时,用逐字稿补足 PPT 没有写出的前提;涉及平台规则时,再去找官方资料;遇到重要判断时,再看有没有独立来源支持。
同一张 PPT 被保存成图片、OCR 文本和 Markdown,仍然只算一个来源。它只是换了三件衣服,并没有获得三次独立证明。
如果只有一位分享者提过,我会把它标成“单一来源观点”;如果不同来源互相冲突,知识库也不应该替我假装它们已经达成一致。
图片变成文字,只是刚刚开始

OCR 跑通以后,那些照片对我来说终于不再只是“参加过一场活动”的相册记录。
我开始可以搜索这些会议 PPT 了。
以前要靠记忆翻相册,现在至少可以从一个关键词找到对应文字,再回到原始图片核对。
那些我当时觉得“以后可能有用”的内容,终于真的有机会在以后被找到。
但它并没有让资料立刻变得完美。
拍歪的页面、复杂的表格、模糊的数字,依然需要复核。不同场次里重复出现的内容、旧版本与新版本互相冲突的问题,也还没有解决。
这一步没有让我的知识库突然变得很聪明。
它只是先帮我把散落在照片里的内容,一点点捡了回来。
OCR 解决的是“看不见”。
下一步要解决的,是“看见了太多重复和噪声”。
下一篇,我再讲资料变成文字以后,为什么还要清洗和去重。
如果你也想试试看
最后,把这次真正帮我跑通的工具留在这里。
它不一定适合每一台电脑,但如果你也有一批躺在相册里、一直没法搜索的图片,可以先从 RapidOCR 开始了解。