🐸 青蛙编程网
首页 / AI / 文字识别 OCR / 2. 环境搭建与第一次识别

2. 环境搭建与第一次识别

这是什么:OCR 第一次实战 = 装好识别库、喂进一张图、拿回可复制的文字,走通这一条流程就算入门。

为什么用:上一章说清了 OCR 能干什么,可概念再美也得亲手跑一次才算会用。装库、传图、读输出,每一步都躲不过。

如何用:本章从装 EasyOCR、准备图片到读懂三元组输出一步步来,先跑通,再回头看懂每一行。

2.1 环境建议(温故 venv)

按 虚拟环境 venv 教程建环境(OCR 依赖不轻,隔离更稳):

mkdir ocr-lab && cd ocr-lab
python -m venv .venv
.venv\Scripts\Activate.ps1        # (macOS/Linux: source .venv/bin/activate)

版本说明:全站基线是 Python 3.15,但本教程两条路线都有上限——PyTorch 2.14.1 只出到 3.14 的 wheel,PaddlePaddle 3.3.1 只出到 3.13。建环境请选 Python 3.12 或 3.13,否则装不上。

三大路线速览(后几章各有主场):

库 特点 何时用
EasyOCR 开箱即用、80+ 语言 入门首选,快速出成果
PaddleOCR 中文场景天花板 生产级中文识别
Tesseract(pytesseract) 老牌 C++ 引擎 已有部署集成、批量轻量任务

选 EasyOCR 的理由很实在:它把「装模型」这件事也包了。Tesseract 要自己额外装二进制并配好多语言包,PaddleOCR 则要先装推理引擎(第 4 章)。

2.2 安装 EasyOCR

pip install easyocr

你会看到 pip 一口气装几十个包——因为它拖来了 PyTorch(几百 MB)和 OpenCV。第一次装请耐心等,别中途 Ctrl+C。

国内网络慢就换清华源:pip install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simple

2.3 第一次识别

准备一张含文字截图(如上一章的 test.png),同一目录建 first_ocr.py:

import easyocr

# 第一次运行会自动下载模型(英文 EA + 中文 GB 简体)
reader = easyocr.Reader(['ch_sim', 'en'])

result = reader.readtext('test.png')

for box, text, conf in result:
    print(f'{conf:.0%}  {text}')

运行:

python first_ocr.py

你会看到(示例):

95%  青蛙编程网
92%  frog blog v1.0
87%  部署成功!

第一次跑会比后续慢(要下载模型),之后每次识别也就数秒级。GPU 能加速但不是必需。

模型下载后会缓存在用户目录下的 ~/.EasyOCR/model/,换台电脑或删了虚拟环境才需要重下——所以第一次别急着重装。

2.4 读懂三元组输出

result 每行长这样:

(
  [[左上x, 左上y], [右上x, 右上y], [右下x, 右下y], [左下x, 左下y]],  # 文字框
  '识别出的文字',                                                     # 文本
  0.953                                                              # 置信度
)

三个字段各有用处:文本拿去用,坐标能还原排版,置信度帮你挑出可疑行。三步玩法:

texts = [t for _, t, _ in result]           # 只要文字
boxes = [b for b, _, _ in result]           # 只要位置
susp  = [r for r in result if r[2] < 0.8]   # 低置信度,待人工复核
print('\n'.join(texts))
print(susp)

2.5 把结果存下来

识别出来只是第一步,想让文字能反复用,就落盘成文件:

with open('result.txt', 'w', encoding='utf-8') as f:
    f.write('\n'.join(texts))

encoding='utf-8' 一定要写——不然 Windows 上中文会变成乱码,这是新手最常踩的坑之一。

2.6 常见翻车现场

报错 / 现象 原因 修法
下载模型超时 网络问题 重跑(已下载的会跳过)或挂代理
ModuleNotFoundError: torch pip 装到系统 Python 了 先激活 .venv 再装包
什么都识别不出 图里没有清晰文字 换高清一张先验证流程
中文全是乱码或漏识别 语言列表漏了 ch_sim Reader(['ch_sim', 'en']) 带上它
FileNotFoundError 路径写错 用 os.path.exists('test.png') 先检查

2.7 动手改

  1. 换 3 张不同风格的截图(清晰截图 / 手机拍屏幕 / 天气 App)分别跑一遍
  2. 用 2.4 的代码打印每段文字的坐标,对照原图看看框得准不准
  3. 故意把语言列表改成 ['en'] 再跑一次,观察中文是怎么「消失」的

2.8 小结

  • EasyOCR 是入门最佳:装完 → Reader(['ch_sim','en']) → readtext() 三连
  • 输出 = 坐标框 + 文本 + 置信度,三元组
  • 模型首跑要下载并缓存,之后很快
  • Python 版本选 3.12 / 3.13,别用 3.15

下一章:EasyOCR:多语言识别 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。