💡阅读指南

上一节我们配置了视觉模型,让 Hermes 能看懂图片。但很多时候,我们只是想识别图片里的文字,不需要理解图片内容。这时候用 OCR 就够了,不需要浪费 token 走视觉模型。这一节介绍怎么用 Tesseract 在本地完成文字识别。

12.1 视觉模型和 OCR 的区别

视觉模型和 OCR 都能处理图片,但做的事情完全不同。

视觉模型理解图片内容。你给它一张截图,它能告诉你"这是一张错误日志,显示数据库连接失败"。它看懂了图片表达的意思,能推理、能分析、能回答问题。

OCR只做一件事:把图片里的文字提取出来。你给它一张截图,它返回"数据库连接失败:无法连接到 127.0.0.1:3306"。它不告诉你这句话意味着什么,只是把文字从图片里抠出来。

两者的成本和速度差别很大。视觉模型需要调用 API,每次识别都要消耗 token,一张截图可能花掉几千 token。OCR 可以本地运行,不消耗 token,识别速度也快得多。

12.2 什么时候该用 OCR

如果你的需求是下面这些,用 OCR 就够了:

  • 从截图里提取错误日志
  • 把扫描件里的文字转成可编辑文本
  • 识别图片里的表格数据
  • 批量提取多张图片里的文字

如果你的需求是下面这些,必须用视觉模型:

  • 理解图片内容并回答问题
  • 分析图表趋势
  • 判断图片里的物体或场景
  • 根据图片内容做推理

简单说:要理解,用视觉模型;要提取,用 OCR。

12.3 安装 Tesseract (已过时)

我自己实测Tesseract 在图片比较模糊时,识别效率非常低。群里的同学昨天讨论了一个叫做Rapid OCR 的,实测效果非常棒。

Tesseract 是一个开源的 OCR 引擎,Google 在 2006 年接手并开源,现在 5.x 版本用 LSTM 神经网络做识别,精度比早期版本高很多。

它的优势是免费、开源、可离线运行。劣势是对复杂排版和手写体的识别不如商业方案。

macOS 安装

Bash
brew install tesseract
brew install tesseract-lang    # 安装中文语言包

Ubuntu / Debian 安装

Bash
sudo apt install tesseract-ocr
sudo apt install tesseract-ocr-chi-sim    # 中文简体包

Windows 安装

去 https://github.com/UB-Mannheim/tesseract/wiki 下载安装包,按提示安装即可。

建议都丢给 Hermes 来决定安装方案。无需自己手动安装。

12.4 Rapid OCR (推荐)

Rapid OCR 是目前群里实测效果最好的开源 OCR 方案。它基于 PaddleOCR 深度学习模型,中文识别准确率比 Tesseract 高很多,尤其是对模糊图片、小字体、复杂排版的场景。

和 Tesseract 相比,Rapid OCR 的优势非常明显: - 中文识别准确率高:专门针对中文场景训练,手写体、艺术字体也能认 - 开箱即用:不需要额外装语言包,pip 安装就自带中文模型 - 速度快:用 ONNXRuntime 推理,普通笔记本一秒钟就能出结果 - 输出格式好:自动保留换行和段落结构,不会把多行文字混成一团

让 Hermes 帮你安装

你不需要输入任何命令。 直接告诉 Hermes:

帮我安装 RapidOCR 到 Python 环境里,以后提取图片文字就用这个。

Hermes 会自己检测你的 Python 环境,选合适的方式安装(pip install rapidocr-onnxruntime),装完还会自动测试一下能不能用。

告诉 Hermes 可以用 RapidOCR

安装完后,跟 Hermes 说一句:

我装了 RapidOCR,以后只要是提取图片里的文字,优先用这个本地 OCR,不要调用视觉模型。

就这么简单。下次你丢一张截图给 Hermes,说"提取这里面的文字",它会自动用 RapidOCR 在本地完成识别,不消耗任何 token。

12.5 案例:提取错误日志(待修改)

你在终端看到一条错误信息,截图保存到桌面。想让 Hermes 帮你分析这个错误,但又不想浪费视觉模型的 token。

code
帮我使用 本地 OCR 提取桌面错误截图里的文字,然后分析这个错误怎么解决

Hermes 会先用 Tesseract 提取文字,得到错误日志,然后再用主模型分析错误原因。整个过程只消耗了分析逻辑的 token,识别部分没花钱。

12.6 ■ 学点英语

中文 English 音标 说明
光学字符识别 Optical Character Recognition /ˈɑːptɪkl ˈkærəktər ˌrekəɡˈnɪʃən/ 从图片中识别文字内容的技术
文本提取 Text Extraction /tekst ɪkˈstrækʃən/ 从图片、网页或文档中抽取可处理文本的过程
识别准确率 Recognition Accuracy /ˌrekəɡˈnɪʃən ˈækjərəsi/ OCR 或模型识别结果正确的比例
扫描图像 Scanned Image /skænd ˈɪmɪdʒ/ 由扫描或截图得到、需要识别处理的图片