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

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

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.jsonimagePath = 'temp/' + json['fileName']# imagePath = 'D:/work_project/useDeviceCloud/temp/' + json['fileName']return idCardOcr(imagePath)

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

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

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

http://www.lryc.cn/news/447942.html

相关文章:

  • 828华为云征文|部署去中心化网络的 AI 照片管理应用 PhotoPrism
  • 【PAM】Linux登录认证限制
  • Go语言Mutex的优化与TryLock机制解析
  • 基于TSN的实时通信网络延迟评估技术
  • 初识ZYNQ——FPGA学习笔记15
  • 理论-链表的头结点
  • oracle 分表代码示例
  • 【MySQL】regexp_replace在MySQL以及regexp extract all在MySQL的用法
  • 详解 FFmpeg 中的 -map 选项
  • 学习threejs,绘制二维线
  • 跑lvs出现soft connect怎么处理?
  • 实验1 Python语言基础一
  • 多线程相关内容
  • mybatis-puls快速入门
  • Pool 和 PG 架构(二)
  • 客户服务升级指南:如何以细节赢得客户忠诚
  • 闲盒支持的组网方式和注意事项
  • 828华为云征文|华为云Flexus云服务器X实例之openEuler系统下搭建MaxKB开源知识库问答系统
  • [Linux]:信号(上)
  • 浙大数据结构:05-树9 Huffman Codes
  • scrapy爬虫基础
  • 利用H5无插件播放RTSP流的实现方案
  • CSS文本格式化
  • python的 __name__和__doc__属性
  • Go语言中的Mutex实现探讨
  • 第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
  • 【machine learning-13-线性回归的向量化】
  • 【CSS|第2期】探索HTML与CSS中的文档流:从自然流到高级布局技巧
  • MATLAB绘图基础9:多变量图形绘制
  • JBOSS中间件漏洞复现