← 返回文章
·约 8 分钟阅读·AI 用进真实工作

别急着让 AI 读图,先 OCR 能省一大笔 Token

我拍下了很多会议 PPT,真正需要时却找不到。把图片交给知识库之前,我先在本地跑通了 OCR。

别急着让 AI 读图,先 OCR 能省一大笔 Token

哈喽,我是阿梦。这个公众号,我会持续记录自己怎么把 AI 用进真实的工作,成功的、失败的、返工的,都是我的来时路~

去微信公众号「是哆啦 AI 梦」看看 →

照片保存在相册里,不代表它已经进入了我的知识库。

我拍下了很多,真正需要时却找不到

拍了很多会议 PPT,真正需要时却用不起来

每次出去参加分享会,我都有一个很熟练的动作:掏出手机,对着大屏幕拍照。

这页讲得不错,先拍下来。那张图以后可能用得上,也先存着。遇到来不及记笔记的地方,我甚至会连着拍好几张,生怕漏掉什么。

网络会议也一样。老师切到一张重要的图,我会立刻截图,然后很安心地告诉自己:没关系,我已经保存了。

那一刻,我是真的觉得自己把知识带回来了。

可活动结束以后,它们只是安静地躺进了手机相册和电脑文件夹。

但真正要用的时候,我还是只能一张张往回翻。

我可能记得“有位老师讲过一个方法”,却记不起是哪场活动、哪一页 PPT,更不记得当时的完整上下文。

更麻烦的是,我能看懂这些图片,电脑里的搜索框看不懂,我的知识库也搜不到。

有时候翻了半天没找到,我甚至会怀疑:那一页真的是我拍过,还是我只是记得自己拍过?

这些资料明明存在,却跟没有进入系统差不多。

我保存下来的不是知识,只是一堆以后还要靠自己重新辨认的照片。

AI 不是看不懂图片,而是还搜不到它

图片经过本地 OCR 变成可搜索文字,再进入知识库

现在很多多模态 AI 都能读取图片。但我的知识库在检索时,主要搜索的还是文字。

一张 PPT 照片放进文件夹,系统最先看到的可能只有文件名:

IMG_XXXX.jpg

至于图片里写了什么、讲了什么,它并不会自动变成可搜索的内容。

所以在清洗、切片、向量化和 RAG 之前,我还需要补一个看起来很基础、却绕不过去的动作:

先把图片里的字,重新变成文字。

这就是 OCR。

说得简单一点,它负责“认字”。图片还是原来的图片,但里面的标题、段落和数字,会多出一份可以保存、搜索和处理的文字版本。

OCR 之后,那些原来只能靠我一张张翻的 PPT,才第一次有机会被搜索、被引用,也被我以后重新找到。

我没有把所有图片都交给大模型

最直接的做法,是把图片一张张发给视觉大模型,让它识别和整理。

少量图片当然可以这样做。但当文件开始变多,我更希望把“认字”这件事先放在本地完成。

原因并不复杂:

  • 图片不用先上传到外部服务;
  • 可以在电脑里批量处理;
  • 同一批资料重新扫描时,不需要再次调用大模型;
  • 单纯的文字识别,不一定需要大模型参与推理。

于是,我把这件事交给了 AI。

不是把所有图片直接发给它,让它替我看一遍;而是让它像一个坐在我旁边的技术搭子,在我的电脑里寻找、安装和测试开源 OCR 工具。

我负责告诉它“我想得到什么”,它负责一个方案不行,就继续排查下一个。

我原本以为,找一个支持中文的项目装上,就可以开始跑了。

事实证明,事情没有我想得那么顺利。

为了让电脑认字,我换了四次方案

四次 OCR 工具尝试,前三次失败后终于在本地跑通

第一轮尝试的是 Tesseract。

看到安装成功的时候,我以为第一步已经过了。结果中文语言包没有顺利准备好。只有英文识别时,中文 PPT 的效果基本没法用。

第二轮换成 EasyOCR。

安装完成了,模型文件却没有完整下载下来。屏幕上又是一串报错,任务还是没跑起来。

第三轮是 PaddleOCR。

这一次连模型都下载好了,我又觉得:应该总算可以了吧。

结果运行时遇到底层兼容问题,图片依然没有成功处理。

那种感觉很像门已经打开了一条缝,走近以后才发现,里面还有一扇门。

最后,AI 又帮我换成了 RapidOCR。

它把 PaddleOCR 的模型转换成更容易跨平台部署的格式,可以通过 ONNX Runtime 在本地运行。

当第一张图片终于输出一段可以复制、可以搜索的文字时,我盯着屏幕看了一会儿。

那不是什么惊天动地的结果。只是原本困在图片里的几行字,终于从照片里走了出来。

对我来说,最重要的不是它的技术名字,而是:它终于在我的电脑上跑通了。

线下拍摄的 PPT、网络会议截图和扫描图片,被批量识别成文字,再按照原始图片顺序保存下来。

前面失败的三次并没有白费。至少它们让我知道,工具介绍页上的“支持”,和真正落到自己的电脑上,中间还有一段路。

这段过程也让我重新理解了一件事:

开源项目写着“支持中文”,不等于它一定能在你的电脑上顺利运行。真正适合自己的工具,是那个能稳定完成任务的工具。

本地 OCR,真的不消耗 Token 吗?

本地识别与调用大模型时的 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 之后还需要继续清洗和去重

OCR 跑通以后,那些照片对我来说终于不再只是“参加过一场活动”的相册记录。

我开始可以搜索这些会议 PPT 了。

以前要靠记忆翻相册,现在至少可以从一个关键词找到对应文字,再回到原始图片核对。

那些我当时觉得“以后可能有用”的内容,终于真的有机会在以后被找到。

但它并没有让资料立刻变得完美。

拍歪的页面、复杂的表格、模糊的数字,依然需要复核。不同场次里重复出现的内容、旧版本与新版本互相冲突的问题,也还没有解决。

这一步没有让我的知识库突然变得很聪明。

它只是先帮我把散落在照片里的内容,一点点捡了回来。

OCR 解决的是“看不见”。

下一步要解决的,是“看见了太多重复和噪声”。

下一篇,我再讲资料变成文字以后,为什么还要清洗和去重。

如果你也想试试看

最后,把这次真正帮我跑通的工具留在这里。

它不一定适合每一台电脑,但如果你也有一批躺在相册里、一直没法搜索的图片,可以先从 RapidOCR 开始了解。

去看看 RapidOCR 的 GitHub 项目