Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Optical Character Recognition (OCR)

光学字符识别 (OCR) 可将扫描件和照片中的文本转换为机器可读的字符。了解检测和识别阶段及相关代码。

光学字符识别 (OCR) 是将图像中的文字(例如扫描页面、照片、屏幕截图和视频帧中的文字)转换为机器可读字符的过程,使软件能够搜索、编辑和分析这些内容。早期系统会将每个字符与已存储的字体模板进行匹配。现代 OCR 使用深度学习来查找图像任意位置的文字,并一次性读取完整的词语和行,因此能够处理多种字体、低分辨率、透视变形和杂乱背景。OCR 既能识别文档文字(例如发票和书籍),也能识别场景文字(例如标志、产品标签和车牌)。

OCR 如何工作#

大多数 OCR 系统会依次运行两个模型:

  1. 文本检测:检测器会找到图像中包含文字的区域,并为每个词语或文本行输出一个框或多边形。EAST、CRAFT 和 DBNet 等场景文字检测器会逐像素预测文本区域,因此也能处理弯曲和旋转的文字。
  2. 文本识别:每个区域会先被裁剪、拉直并调整到固定高度,然后由识别器读取其中的字符。CRNN设计会先将裁剪区域输入 CNN,再通过双向 LSTM从左到右读取生成的特征列,最后使用连接主义时序分类 (CTC) 将逐列预测解码为字符串,无需标注每个字符的起始位置。Microsoft 的 TrOCR等 Transformer 识别器则会改用文本解码器生成字符。

在较差的扫描件上,预处理(例如二值化和倾斜校正)仍然有所帮助;后处理则会根据词典、预期格式或语言模型检查输出。EasyOCR整合了这两个阶段:CRAFT 检测器和 CRNN 识别器,可处理 80 多种语言:

import easyocr

# Load EasyOCR's CRAFT text detector and English CRNN text recognizer
reader = easyocr.Reader(["en"])

# Detect every text region in the photo, then read the characters inside it
results = reader.readtext("https://ultralytics.com/images/bus.jpg")

# Each result holds a 4-corner box, the recognized string, and a confidence score
for box, text, confidence in results:
    if confidence > 0.5:
        print(f"{text}: {confidence:.2f}")

它会打印 cero: 0.95 和 emisiones: 0.99,也就是画在公交车侧面的文字。检测器还会找到公交车上的点阵目的地标牌和车窗上的小字,但识别器对这些内容返回了置信度低于 0.5 的乱码字符串,因此阈值会将它们丢弃。

文档识别会在识别之前增加版面分析步骤。版面模型会将页面拆分为多个区块,针对不同区块类型采用各自的处理方式,然后按阅读顺序重新组合结果,因此双栏文章会按列逐一读取:

准确率通过字符错误率 (CER)和词错误率 (WER)衡量。字符错误率是将输出改为正确文本所需的字符插入、删除和替换数量除以正确文本长度;词错误率则以词为单位用相同方式计算。

OCR 引擎和模型#

开源 Tesseract 引擎于 20 世纪 80 年代在 Hewlett-Packard 启动,2005 年作为开源软件发布,并在 2006 至 2018 年间由 Google 赞助开发;4 版增加了基于 LSTM 网络的识别引擎。Google Cloud Vision和 Amazon Textract等云服务还提供版面、表格和表单信息提取功能。视觉语言模型也越来越多地用于端到端读取文档:Allen Institute for AI 推出的 olmOCR使用微调后的视觉语言模型将 PDF 页面转换为整洁文本;而无需 OCR 的文档模型可以直接回答有关页面的问题,无需先单独生成转录文本。

  • 手写识别:也称为手写文本识别(HTR)或智能字符识别(ICR),用于读取手写内容。与印刷体相比,手写字母的形状变化大得多,而且字符经常连在一起。
  • 目标检测:检测器可以将停止标志识别为一个对象,而 OCR 则读取标志上印着的 S-T-O-P 字母。OCR 自身的检测阶段只定位文字,不负责读取文字。
  • 图像分类:为整张图像分配一个标签,例如“发票”;OCR 则会提取图像中的字符序列。
  • 智能文档处理:在 OCR 的基础上增加版面分析和命名实体识别 (NER),以提取发票日期、供应商和总金额等特定字段,并将其导入业务系统。

实际应用#

  • 车牌识别:收费、停车和交通执法系统会先检测每个车牌,再读取车牌内容。使用车牌框训练的 YOLO26模型负责检测阶段;其有向边界框变体能够为倾斜的车牌拟合旋转框,以便在识别前拉直每个裁剪区域。
  • 文档数字化:银行、保险公司和政府会将表格、收据和档案转换为可搜索文本,图书馆也会大规模数字化印刷书籍。
  • 无障碍访问与翻译:屏幕阅读器和相机翻译应用会朗读标志、菜单和标签,或在实时图像上叠加译文。
  • 制造与物流:摄像头会读取生产线上的批次代码、有效期和序列号。运输集装箱代码遵循 ISO 6346 标准,其 11 个字符中最后一位是校验位,由前 10 位计算得出,因此读取器可以自动拒绝大多数误读代码。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来