1. OCR 是什么
这是什么:OCR(Optical Character Recognition,光学字符识别) = 把图片里的文字变成电脑能读懂的字符串的技术。
为什么用:截图里的字复制不出来,扫描件存进去也搜不到,内容全被锁在图片里。OCR 就是那把钥匙,让「只能看」的图片变成「能复制、能搜索」的文本。
如何用:本章先看懂它的两步原理:文本检测负责找到字在哪,文字识别负责认出这是什么字。
1.1 一眼看清两步原理
现代 OCR(深度学习时代)基本是「两步走」:
原图 → ① 文本检测(找到文字在哪)
→ ② 文字识别(认出每个框里写的是啥)
→ 输出「文本 + 位置 + 置信度」
- 检测(Detection):用计算机视觉模型框出文字区域,像画框框
- 识别(Recognition):把每个框送进序列模型读出字符(CRNN 系经典架构)
你手里的库(EasyOCR、PaddleOCR)这两步都内置好了,一行 API 出全套结果——理解两步的概念,是为了看懂输出里的坐标和置信度,而不是自己造轮子。
1.2 输出长什么样
result = reader.readtext('screenshot.png')
你会看到(示例):
[[[12, 18], [231, 18], [231, 45], [12, 45]], '青蛙编程网', 0.953]
一图多行文字就是多个三元组:位置框 + 文本 + 可信程度。置信度(0~1)低的那行,多半是图糊了,或者字体太艺术。
| 输出内容 | 用途 |
|---|---|
| 文本 | 直接进数据库 / 搜索 / 翻译 |
| 坐标 | 排版还原、表格还原、水印定位 |
| 置信度 | 低分送人工复核(工程必备技巧) |
1.3 到处都在用它
| 场景 | 例子 |
|---|---|
| 办公自动化 | 扫描合同、发票批量录入 |
| 学习助手 | 截图生词、字幕提取、纸质书全文检索 |
| 写代码 | 把截图里的报错信息一键变成可复制的文本 |
| 通行世界 | 车牌识别、快递单号、身份证 / 银行卡 |
1.4 为什么现在「人人可做」
- 没有训练成本:各式预训练模型开箱即用,下一章装好就能跑
- 中文不愁:PaddleOCR 在中文场景常年第一梯队
- CPU 也能跑:几张图的小任务无需显卡(GPU 只是提速)
记忆口诀:检测先圈出文字在哪,识别再读出写了什么;文本、坐标、置信度,三样一起交到手。
1.5 OCR 会被多模态大模型取代吗
不会,而且短期内不会。多模态大模型确实能「看图说话」,但和专用 OCR 相比有三处硬伤:
| 对比项 | 专用 OCR | 多模态大模型 |
|---|---|---|
| 成本 | 本地跑,一分钱不花 | 每张图都要调 API、按量付费 |
| 速度 | 小图毫秒级 | 秒级起步 |
| 精确度 | 逐字输出 + 坐标 + 置信度 | 擅长「总结」,逐字转录反而容易出错、改写 |
大模型擅长理解(这段文字在讲什么),OCR 擅长转录(一个字都不差)。工程上常常是 OCR 转录、再喂给大模型理解,各干各的活。
1.6 OCR 也有搞不定的时候
- 手写体、潦草字:通用模型识别率会明显下降
- 文字严重变形:弯曲招牌、艺术字、印章叠印
- 低质量翻拍:手抖、反光、阴影压住文字
碰到这些别硬扛——先做预处理(第 5 章),不行就换更强的模型或走人工复核流程。
1.7 动手改
- 找一张含文字的截图(最好中英文都有),存成
test.png备用 - 想一想:识别出「文字」之后,你打算拿它做什么?存数据库、做搜索,还是直接喂给 AI?
1.8 小结
- OCR = 检测(文字在哪)+ 识别(写了什么),输出文本 / 坐标 / 置信度
- 场景遍地,预训练模型开箱即用,CPU 就能跑
- 下一章就把你的截图「读」出来
下一章:环境搭建与第一次识别 🐸