当前位置: 首页 > article >正文

opencv保姆级讲解——光学学符识别(OCR)(4)

光学字符识别

(Optical Character Recognition, OCR)是指对文本材料的图像文件进行分析识别处理,以获取文字和版本信息的过程。也就是说将图象中的文字进行识别,并返回文本形式的内容

以下是比较流行的开源的ORC识别库

  1. Tesseract OCR Tesseract 是 Google 赞助的一个开源 OCR 引擎,支持多种语言,包括中文。它是最流行和最成熟的 OCR
  2. PaddleOCR PaddleOCR 是基于 PaddlePaddle 的 OCR 工具,集成了文本检测和识别模型,支持多种语言,包括中文。
  3. EasyOCR EasyOCR 是一个轻量级的 OCR 库,支持多种语言,包括中文。它使用 PyTorch 作为后端

PaddleHub 介绍

PaddleHub现已开源OCR文字识别的预训练模型

移动端的超轻量模型:仅有8.6M,chinese_ocr_db_crnn_mobile。

服务器端的精度更高模型:识别精度更高,chinese_ocr_db_crnn_server。

该 Module 用于识别图片当中的汉字、数字、字母。如果仅需要检测,也可单独使用chinese_text_detection_db_server或者chinese_text_detection_db_mobile得到检测结果的文本框

开发者可以基于PaddleHub提供的OCR中文识别Module,实现一键文字识别,适用于常见的OCR应用场景中。

OCR的应用场景

​ 根据OCR的应用场景而言,我们可以大致分成识别特定场景下的专用OCR以及识别多种场景下的通用OCR。就前者而言,证件识别以及车牌识别就是专用OCR的典型案例。针对特定场景进行设计、优化以达到最好的特定场景下的效果展示。那通用的OCR就是使用在更多、更复杂的场景下,拥有比较好的泛性。在这个过程中由于场景的不确定性,比如:图片背景极其丰富、亮度不均衡、光照不均衡、残缺遮挡、文字扭曲、字体多样等等问题,会带来极大的挑战。现PaddleHub为大家提供的是超轻量级中文OCR模型,聚焦特定的场景,支持中英文数字组合式别、竖排文字识别、长文本识别场景

应用案例

下面是完整案例

import paddlehub as hub
import cv2
#识别图片的文字
def get_text():
    img = cv2.imread("../images/chepiao.png")
    #加载模型
    ocr = hub.Module(name="chinese_ocr_db_crnn_server")
	#识别文本
    results = ocr.recognize_text(images=[img])for result in results:
        data = result['data']
        for x in data:
            print('文本: ', x['text'], '识别文本结果置信度: ', x['confidence'], '文本框在原图中的像素坐标: ',
                  x['text_box_position'])

if __name__ =="__main__":
    get_text()

代码解释

1 加载模型,“chinese_ocr_db_crnn_server”是 服务器端的精度更高模型

移动端的超轻量模型:仅有8.6M,chinese_ocr_db_crnn_mobile。

服务器端的精度更高模型:识别精度更高,chinese_ocr_db_crnn_server。

 ocr = hub.Module(name="chinese_ocr_db_crnn_server")

2 识别图片文本

     results = ocr.recognize_text(images=[img])

3 打印结果信息

for result in results:
    data = result['data']
    for x in data:
        print('文本: ', x['text'], '识别文本结果置信度: ', x['confidence'], '文本框在原图中的像素坐标: ',
              x['text_box_position'])

测试

import paddlehub as hub
import cv2
#识别图片的文字
def get_text(img):
    ocr = hub.Module(name="chinese_ocr_db_crnn_server")
    rs = ocr.recognize_text(images=[img])
    return rs

if __name__ =="__main__":
    img = cv2.imread("../images/car2.png")
    rs = get_text(img)
    print(rs)

http://www.kler.cn/a/391382.html

相关文章:

  • 【uni-app】2025最新uni-app一键登录保姆级教程(包含前后端获取手机号方法)(超强避坑指南)
  • 京东大数据治理探索与实践 | 京东零售技术实践
  • Linux的VIM基本操作
  • pm面试题
  • Android学习(五)-Kotlin编程语言-面向对象中的 继承-构造函数-接口三模块学习
  • PostgreSQL表达式的类型
  • Docker部署Nginx服务器并实现HTTPS自动重定向
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-成绩排序
  • 【ECMAScript标准规范】
  • 「QT」基础数据类 之 QVariant 通用数据类
  • PHY6235超低功耗蓝牙和专有2.4G应用的SOC芯片内置MCU
  • Git 中的 patch 功能
  • 生成式模型的热点新闻和进展
  • 第8章利用CSS制作导航菜单
  • 鸿蒙ZRouter动态路由框架—生命周期管理能力
  • 论云游戏的性能与性价比,ToDesk、青椒云、顺网云游戏等具体实操看这篇就够了
  • SAP ABAP开发学习——function alv复选框设置
  • [论文阅读]Enhanced Membership Inference Attacks against Machine Learning Models
  • jmeter基础05_第1个http请求
  • Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
  • 22. 记录架构
  • 【热门主题】000041 网络安全:守护数字世界的坚固防线
  • Javascript笔记(一):闭包函数
  • 状态空间方程离散化(Matlab符号函数)卡尔曼
  • 看不见的力量——超声技术在工业中的应用
  • Spring Boot编程训练系统:深入设计与实现