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

server/2024/12/4 18:14:00/

光学字符识别

(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 rsif __name__ =="__main__":img = cv2.imread("../images/car2.png")rs = get_text(img)print(rs)

http://www.ppmy.cn/server/140524.html

相关文章

高考:心态、时间、知识,多维度攻略让你脱颖而出

高考,宛如一场无声的激战,承载着无数莘莘学子的梦想与热望。在这激烈的竞争中,充分且周全的准备显得尤为关键。那么,高考备考究竟应从哪些方面入手?又有哪些行之有效的备考策略能为我们保驾护航呢? 一、高考…

八、Spring Boot集成Spring Security之前后分离认证最佳实现测试

文章目录 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口前言一、正常流程测试1、登录接口测试2、业务接口测试3、登出接口测试 二、非正常流程测试1、输入错误用户名密码登录2、无请求头访问业务接口3、无效请求头访问业务接口4、登出时未携带有效请…

Vue 3 中Pinia状态管理库的使用方法总结

Pinia 是 Vue 3 的状态管理库,旨在替代 Vuex,提供更简洁和更灵活的 API。以下是如何在 Vue 3 项目中使用 Pinia 的详细步骤。 1. 安装 Pinia 首先,你需要在你的 Vue 3 项目中安装 Pinia。你可以使用 npm 或 yarn 进行安装: npm…

青少年编程与数学 02-003 Go语言网络编程 17课题、Go语言Cookie编程

青少年编程与数学 02-003 Go语言网络编程 17课题、Go语言Cookie编程 课题摘要:一、Cookie编程1. 发送Cookies2. 接收Cookies3. 删除Cookies4. Cookie的安全性5. 使用第三方库总结 二、应用场景1. 会话管理(Session Management)2. 个性化设置3. 追踪用户行…

如何评估焊机测试负载均衡性能

评估焊机测试负载均衡性能的方法有很多,以下是一些建议: 1. 确定测试目标:首先,需要明确评估焊机测试负载均衡性能的目标。这可能包括提高生产效率、降低能耗、减少设备故障率等。明确目标有助于选择合适的评估方法和指标。 2. …

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai:Oracle Data Redaction(20241104)1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…

vue3中利用路由信息渲染菜单栏

1. 创建路由时将路由信息对象进行抽离 将路由信息对象单独抽离到router/routes.ts文件 关键:利用路由元信息meta,定义3个属性 hidden:控制当前路由是否显示在菜单栏中title:菜单拦名称icon:对应菜单名称前面的图标 …

AJAX 全面教程:从基础到高级

AJAX 全面教程:从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX(Asynchronous JavaScript and XML…