OCR识别系统 YOLOv8 +Paddle 方案落地

news2024/11/18 21:49:07

YOLOv8 + PaddleOCR 技术方案落地

  • Yolov8相关文档
    • Step 1 证件模型的训练
    • Step 2 Yolov8进行图片推理
    • Step 3 PaddleOCR进行识别
    • Step 4 整合Yolov8 + PaddleOCR 进行OCR

Yolov8相关文档

《yolov8 官方网站》
《Yolov8 保姆级别安装》

Ultralytics YOLOv8 是一款尖端的、最先进的 (SOTA) 模型,它以之前 YOLO 版本的成功为基础,并引入了新功能和改进,以进一步提高性能和灵活性。YOLOv8 旨在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿势估计任务的绝佳选择

目前市面的OCR功能都已经比较完善了,Paddle也很出众,不过OCR出来后相关字段都是错乱,你通过正则表达式获取也不能满足特殊场景,那么就需要特别的位置检测。yolov家族就是做这个事情的!!,通过图片相关位置截取图片在进行OCR

Step 1 证件模型的训练

1、选取身份证标注 (300张样本,200张测试样本)
2、使用标注软件进行处理数据集(这里我用的是 makesense)
3、yolov8 进行训练模型 (这里可以参考《Yolov8 保姆级别安装》文章 )

yolo detect train model=yolov8n.pt data=idCard.yaml epochs=10 imgsz=640

样图:
在这里插入图片描述

在这里插入图片描述

Step 2 Yolov8进行图片推理

yolo predict model=best.pt  source=image_test imgsz=640 

检测后效果:
在这里插入图片描述

Step 3 PaddleOCR进行识别

paddleocr --image_dir ./imges/test.jpg --use_angle_cls true --use_gpu false 

[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], (‘姓名 xxxxxxx’, 0.9658738374710083)]

到这里相关操作都能正常运行,那么你的虚拟环境就好了。

Step 4 整合Yolov8 + PaddleOCR 进行OCR

1、通过Flask整合,通过http接口进行交互识别

"""
三大核心包
"""
from flask import Flask, request
from ultralytics import YOLO
from paddleocr import PaddleOCR

//yolov 推理
model_idCard = YOLO('best_idCard.pt')
results = model_idCard.predict(img, device='cpu', stream=True)
....

//获取yolov推理后的切片图进行ocr
ocr = PaddleOCR(lang='ch', use_angle_cls=True, enable_mkldnn=True, cpu_threads=8, ocr_version='PP-OCRv4')
result = ocr.ocr(img, cls=True)



@app.route('/idCardOcr', methods=['POST'])
def idCardOcrRequest():
# f = request.files['file']
 json = request.json
 imagePath = 'temp/' + json['fileName']
 # imagePath = 'D:/work_project/useDeviceCloud/temp/' + json['fileName']
 return idCardOcr(imagePath)

yolov8推理出来的切图
在这里插入图片描述
效果:
在这里插入图片描述

效果还是比较可以的,不过低配置的机器可能有点限制。paddle要求比较高后续看看在接入其他的ocr通用版本来替换,让更多的机器能跑起来

看↓↓↓方格或搜索: 码猿趣事,回复关键字:yolov8+OCR持续更新中~。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NASA数据集:ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高,第 3 版

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height V003 简介 ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高,第 3 版 ATL14 和 ATL15 将 ATLAS/ICESat-2 L3B 年度陆地冰…

5 分钟快速入门 Github Action

Github Action 是一种自动化构建工具。 ‍ 介绍 什么是 GitHub Action?来看看阮一峰大佬的介绍: GitHub Actions 是 GitHub 的持续集成服务,于 2018 年 10 月推出。 大家知道,持续集成由很多操作组成,比如抓取代码、…

深度学习(入门)03:监督学习

1、监督学习简介 监督学习(Supervised Learning)是一种重要的机器学习方法,它的目标是通过“已知输入特征”来预测对应的标签。在监督学习中,每一个“特征-标签”对被称为样本(example),这些样…

视觉分析在垃圾检测中的应用

随着城市化进程的加快,垃圾管理成为现代城市面临的重大挑战。有效的垃圾识别和分类不仅能提升环境保护的效率,还能减少资源浪费。基于视觉分析的垃圾识别算法应运而生,为解决这一问题提供了技术支持。 垃圾识别算法的技术实现主要依赖于深度学…

FreeRTOS-队列

FreeRTOS-消息队列 一、队列简介二、队列相关函数2.1 队列结构体2.2 队列相关API函数 三、队列操作实验 一、队列简介 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递)使用队列的情况下如图,在写、读队列时,会进入临界区&#x…

前端使用vue点击上传文件,传送给后端,后端进行文件接收

一、效果图 前端页面&#xff1a; 在java这边后端的target文件就可以接收到前端发送的文件&#xff0c;文件可以打开 接下来看具体代码是怎么实现的&#xff01; 二、代码部分 Vue代码 <template> <el-upload ref"upload" class"upload-demo&q…

黑马头条day5- 延迟任务精准发布文章

这个过程主要是流程负责 但是我没有仔细的过所有的流程 需要多刷几遍 今天只是照着md文档执行了一下 运行起来没差错 主要实现文章定时发布 通过schedule模块作为延迟队列的任务 通过redis实现的延迟任务 具体 实现还要在多走几遍流程 逻辑一点不清楚 没看网课 这节要多看几遍…

【最大公约数】

题目 思路 g c d ( x , y ) p x , y ∈ [ 1 , N ] gcd(x, y) p\;\;x,y\in[1,N] gcd(x,y)px,y∈[1,N] 转换为 g c d ( x p , y p ) 1 x p , y p ∈ [ 1 , N p ] gcd(\frac{x}{p}, \frac{y}{p}) 1\;\;\frac{x}{p},\frac{y}{p}\in[1,\frac{N}{p}] gcd(px​,py​)1px​,py​∈…

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰&#xff5c;阿里云智能集团资深技术专家 范 振&#xff5c;阿里云智能集团高级技术专家 李劲松&#xff5c;阿里云…

Vulnhub靶机:DerpNStink: 1

0x01 项目地址 DerpNStink: 1 0x02 靶机描述 Your goal is to remotely attack the VM and find all 4 flags eventually leading you to full root access. Dont forget to #tryharder 您的目标是远程攻击虚拟机并找到所有 4 个 flag &#xff0c;最终让您获得完全 root 访…

Updates were rejected because the tip of your current branch is behind 的解决方法

1. 问题描述 当我们使用 git push 推送代码出现以下问题时&#xff1a; 2. 原因分析 这个错误提示表明当前本地分支落后于远程分支&#xff0c;因此需要先拉取远程的更改。 3. 解决方法 1、拉取远程更改 在终端中执行以下命令&#xff0c;拉取远程分支的更新并合并到本地…

SpringBoot学习笔记(1)

1.Web技术基础 BS:(Browser/Server,浏览器/服务器架构模式)。C/S架构主要特点是交互性强&#xff0c;具有安全访问模式&#xff0c;网络流量低&#xff0c;响应速度快&#xff0c;因为客户端负责大多数业务逻辑和UI演示&#xff0c;所以也被称为胖客户端&#xff0c;C/S结构的软…

【含文档】基于Springboot+微信小程序 的中心医院用户移动端(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

学习之什么是生成器

什么是生成器&#xff08;Generator&#xff09; 1、是一种数据类型能源源不断地生成数据 2、"惰性"特点:一次生成一个值&#xff0c;而不是生成一个序列 3、生成器一定是迭代器比迭代器更简洁使用生成器表达式创建生成器 from typing import Generator, Iterator,…

【hot100-java】【柱状图中最大的矩形】

R9-栈篇 面积最大矩形的高度一定是 heights 中的元素 简单解释&#xff0c;就是说&#xff0c;最大高度必然是heights中的一个元素&#xff0c;我们假设是h&#xff0c;然后我们基于h&#xff0c;左右拓展&#xff0c;尽量拓展到h越来越高&#xff08;符合单调栈&#xff09;&a…

7.6透视变换

基本概念 在计算机视觉和图像处理领域中&#xff0c;透视变换&#xff08;Perspective Transformation&#xff09;是一种重要的几何变换&#xff0c;用于模拟从一个视角到另一个视角的变换&#xff0c;比如从鸟瞰视角到正面视角的变换。透视变换通常用于图像配准、增强现实、…

ubuntu报错you don‘t have enough free space in /var/cache/apt/archivers.

使用df -h命令查看&#xff1b; 扩充前&#xff0c;dev/sda2的大小&#xff1a; 使用gparted工具对dev/sda2进行扩容

Steam黑神话悟空禁止更新进入游戏的解决方案

首先打开该网站&#xff1a;https://steamdb.info/app/2358720/ 2358720即为游戏ID 网页下翻&#xff0c;找到更新历史&#xff1a;https://steamdb.info/app/2358720/history/ 然后在Steam的steamapps下&#xff0c;找到后缀为2358720的文件&#xff0c;右击记事本打开 将St…

老照片修复工具有哪些?怎么让老照片焕发新光彩?

在那些泛黄的相框中&#xff0c;珍藏着我们最珍贵的记忆。 岁月流转&#xff0c;照片上的影像逐渐模糊&#xff0c;但那份情感却愈发深刻。 如何让这些老照片恢复往日的光彩&#xff0c;让那些珍贵的瞬间再次清晰呈现&#xff1f; 本文将带你探索老照片修复高清的技巧&#…

SpringMVC源码-SpringMVC框架中Spring父容器和SpringMVC子容器加载的流程以及SpringMVC九大内置组件的初始

一、Spring父容器启动 SpringMVC 的项目结构如下: applicationContext.xml spring的配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.o…