Offline OCR — 离线图像文字提取
基于 RapidOCR + PP-OCRv6 的本地图像文字提取能力,完全离线运行,支持中文和英文。无需联网、无需注册 API、无需 GPU。
何时使用
- 用户提供图像文件(截图、照片、票据、扫描件、文档图片、验证码等),要求读取图中文字
- 需要从图像中提取文本内容,如复制票据信息、识别截图中的代码/文字、提取表格里的文本
- 当前模型不具备多模态能力时,作为"看图识字"的替代方案
- 可配合 DeepSeek-V4 等无多模态能力的大模型使用:当模型的对话接口本身"看不了图"时,由本 skill 先从图像中提取文字,再交由模型理解、回答、处理
首次安装(只需一次)
运行脚本需要独立的 Python 虚拟环境。首次使用本 skill 时,先确认环境是否已就绪:
# 若 <SKILL_DIR>/.venv 不存在或无法 import rapidocr,运行:
python <SKILL_DIR>/scripts/setup.py
# Intel CPU 用户想要更高性能(约 1.8x),可额外安装 OpenVINO:
python <SKILL_DIR>/scripts/setup.py --with-openvino
命令跨平台一致(Windows/macOS/Linux 均可用,无需 bash)。若提示找不到
python,Linux/macOS 可改用python3代替。
setup.py 是幂等的,可重复运行;已安装会跳过。它会:
- 检测 Python 版本是否 >= 3.9(不足则给出各平台安装指引)
- 创建
<SKILL_DIR>/.venv并安装rapidocr+onnxruntime(默认)或 +openvino(可选) - 若检测到 Intel CPU 且未装 OpenVINO,会提示可选的 1.8x 加速安装方式(不自动安装)
<SKILL_DIR>指本 skill 所在目录。模型随 rapidocr 包内置(PP-OCRv6 三档 det/rec),无需额外下载。
首次运行到可用的完整流程:python <SKILL_DIR>/scripts/setup.py → 等待自动安装(约 1-3 分钟)→ 即可用下方命令识别图片。
使用方法
# 单张图片
python <SKILL_DIR>/scripts/ocr.py <图像路径>
# 多张图片
python <SKILL_DIR>/scripts/ocr.py <图像1> <图像2> ...
# 常用参数
--model tiny|small|medium 模型档位(默认 small)
--engine onnxruntime|openvino 推理引擎(默认 onnxruntime)
--use_cls 启用文本行方向分类(对旋转/竖排文本有用,略慢)
--save_vis 保存可视化结果到 output/
示例:
python <SKILL_DIR>/scripts/ocr.py /path/to/screenshot.png
python <SKILL_DIR>/scripts/ocr.py --model tiny --save_vis /path/to/invoice.jpg
python <SKILL_DIR>/scripts/ocr.py --engine openvino /path/to/photo.png
说明:
ocr.py会自动使用.venv中的依赖运行(Windows 下为.venv\Scripts\python.exe),无需关心解释器路径。
输出格式
脚本在 stdout 输出识别结果,格式如下:
===== 文件名.png =====
共识别 N 个文本框:
[1] 识别到的第一行文本 (置信度: 0.98)
[2] 识别到的第二行文本 (置信度: 0.95)
识别结束后,将 [序号] 后的纯文本内容整理后回传给用户,并附上置信度低的提醒(如 <0.6 的识别可能不准)。
推理引擎选择
| 引擎 | 体积 | 特点 |
|---|---|---|
onnxruntime(默认) | 小 (~52M) | 跨平台一致、安装干净,普适推荐 |
openvino | 大 (~+123M) | 仅 Intel CPU 更快 (约 1.8x);AMD/Apple Silicon 无优势 |
模型档位选择
| 档位 | det/rec 模型大小 | 速度 | 精度 | 适用场景 |
|---|---|---|---|---|
tiny | 1.8M / 4.5M | 最快 | 较低 | 简单场景、快速预览 |
small(默认) | 9.9M / 21M | 均衡 | 良好 | 一般场景 |
medium | 62M / 77M | 最慢 | 最高 | 复杂、模糊、密集文本 |
图片清晰、文字规整时优先用 small;遇到识别不准再升级到 medium。
注意事项
- 图片越清晰、文字越规整,识别效果越好;斜体、艺术字、背景复杂会降低准确率
- 对于方向颠倒或竖排的文本,可加
--use_cls参数 - 单张图片耗时约 0.1~1s(CPU),视图片大小、档位和引擎而定
- 仅需 Python 3.9+;无 Python 环境时 setup.py 会给出各平台安装指引