深度学习(六):paddleOCR理解及识别手写体,手写公式,表格

1.介绍

1.1 什么是OCR?

光学字符识别(Optical Character Recognition, OCR),ORC是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术,检测图像中的文本资料,并且识别出文本的内容。

那么有哪些应用场景呢?

其实我们日常生活中处处都有ocr的影子,比如在疫情期间身份证识别录入信息、车辆车牌号识别、自动驾驶等。我们的生活中,机器学习已经越来越多的扮演着重要角色,也不再是神秘的东西。

OCR的技术路线是什么呢?

ocr的运行方式:输入->图像预处理->文字检测->文本识别->输出
在这里插入图片描述

1.2paddleOCR

PaddleOCR是一个基于深度学习的中文OCR(光学字符识别)工具,由清华大学KEG实验室和智谱AI公司开发。它是一个开源的OCR引擎,可以识别中文、英文、数字等多种字体,支持表格、PDF、图片等多种格式。PaddleOCR具有高精度、高召回率、高效率等优点,已经被广泛应用于金融、医疗、电商等多个领域。

以下是PaddleOCR的一些主要功能和特点:

  1. 中文识别:PaddleOCR支持中文识别,可以识别多种字体和格式,如表格、PDF、图片等。
  2. 英文识别:PaddleOCR也支持英文识别,可以识别英文格式。
  3. 数字识别:PaddleOCR可以识别数字格式,包括整数和小数。
  4. 表格识别:PaddleOCR可以识别表格格式,可以提取表格中的数据。
  5. PDF识别:PaddleOCR可以识别PDF格式,可以提取PDF中的文本和图片。
  6. 图片识别:PaddleOCR可以识别图片格式,可以提取图片中的文本和图片。
  7. 高精度:PaddleOCR具有高精度,可以识别高复杂度文本和格式。
  8. 高召回率:PaddleOCR具有高召回率,可以识别漏掉的文本和格式。
  9. 高效率:PaddleOCR具有高效率,可以快速识别文本和格式。

总之,PaddleOCR是一个强大的OCR引擎,可以识别多种格式和字体,具有高精度、高召回率和高效率等特点,已经被广泛应用于多个领域。

1.3使用方法

1. ocr(image, use_angle_cls=False, use_distance_cls=False, rotate_mode=’ clockwise’, language=‘eng’, force_cpu=False, return_
RESULT=False):该方法是 PaddleOCR
的核心方法,用于实现图像文本检测和识别。它接受一张图像作为输入,并返回一个包含文本检测结果和识别的结果的字典。
2. rotate_image(image, angle):该方法用于对图像进行旋转,支持顺时针和逆时针两种旋转方式。
3. rescale_image(image, scale):该方法用于对图像进行缩放,支持按比例和不按比例两种缩放方式。
4. preprocess_image(image):该方法用于对图像进行预处理,包括归一化、去噪、二值化等操作。
5. postprocess_prediction(boxes, probs, class_labels):该方法用于对文本检测结果进行后处理,包括过滤噪声、去除重复框、修正文本框等操作。
6. draw_detections(image, boxes, probs, class_labels, min_conf=0.5):该方法用于在图像上绘制文本检测结果,包括文本框、类别标签和概率等信息。
7. batch_ocr(images, use_angle_cls=False, use_distance_cls=False, rotate_mode=‘clockwise’, language=‘eng’, force_cpu=False,
return_RESULT=False):该方法用于实现批处理文本检测和识别,支持同时处理多张图像。
8. create_predictor(model_path, use_angle_cls=False, use_distance_cls=False, rotate_mode=‘clockwise’,
language=‘eng’):该方法用于创建文本检测和识别的预测器,支持加载预训练模型和自定义模型。
9. save_checkpoint(model_path, epoch, save_optimizer=False):该方法用于保存模型的检查点文件,支持保存当前训练的模型和优化器。
10. draw_text(image, text, position, font, color, thickness):该方法用于在图像上绘制文本,支持设置文本的位置、字体、颜色和粗细等参数。
该方法用于在图像上绘制文本,可以设置文本的位置、字体、颜色和粗细等参数。它是 PaddleOCR
中一个非常实用的方法,可以用于生成文本标签、添加说明等操作。
11. restore_checkpoint(model_path):该方法用于恢复模型的检查点文件,支持加载之前训练的模型。
12. accuracy(predictions, ground_truth):该方法用于计算文本检测和识别的准确率,支持同时计算多个类别的准确率。
13. evaluate(predictions, ground_truth, iou_threshold=0.5):该方法用于评估文本检测和识别的结果,支持同时计算多个类别的召回率、精确率、F1 值等指标。
14. confusion_matrix(predictions, ground_truth):该方法用于生成混淆矩阵,用于分析文本检测和识别的结果。
15. classification_report(predictions, ground_truth):该方法用于生成分类报告,用于分析文本检测和识别的结果。

2.理解

相比于PP-OCR,PP-OCRv2 在骨干网络、数据增广、损失函数这三个方面进行进一步优化,解决端侧预测效
率较差、背景复杂和相似字符误识等问题,同时引入了知识蒸馏训练策略,进一步提升模型精度。具体地:
• 检测模型优化: (1) 采用 CML 协同互学习知识蒸馏策略;(2) CopyPaste 数据增广策略;
• 识别模型优化: (1) PP-LCNet 轻量级骨干网络;(2) U-DML 改进知识蒸馏策略;(3) Enhanced CTC loss 损
失函数改进。
从效果上看,主要有三个方面提升:
• 在模型效果上,相对于 PP-OCR mobile 版本提升超7%;
• 在速度上,相对于 PP-OCR server 版本提升超过220%;
• 在模型大小上,11.6M 的总大小,服务器端和移动端都可以轻松部署。
在这里插入图片描述

3.实现

3.1手写体

安装导入

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paddlepaddle
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paddleocr
from paddleocr import PaddleOCR
import re
ocr = PaddleOCR(lang="ch")  # 使用中文识别
result = ocr.ocr("tp.png")for line in result:print(line)  # 输出识别结果 

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

3.2手写公式

ocr = PaddleOCR(lang="ch",model_path="path/to/数学符号识别模型")
# 使用数学符号识别模型进行公式识别
result = ocr.ocr("gs.png")
for line in result:# 输入文本equation_text = lineprint(equation_text)

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

3.3表格识别

import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_restable_engine = PPStructure(show_log=True)save_folder = './output'
img_path = 'BG.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])for line in result:line.pop('img')print(line)from PIL import Imagefont_path = 'doc/fonts/simfang.ttf' # PaddleOCR下提供字体包
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg') 

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

一键删除TXT文本符号,高效批量处理,轻松提升工作效率!

你是否经常处理大量的TXT文本文件,但其中充满了各种符号和不需要的字符?这不仅影响文本的阅读体验,还可能对后续的数据处理和分析造成困扰。现在,我们为你带来一款全新的TXT文本处理工具,一键删除符号,高效…

【数据结构—栈的实现(数组栈)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、栈 1.1栈的概念及结构 二、栈的实现 2.1头文件的实现—Stack.h 2.2源文件的实现—Stack.c 2.3源文件的测试—test.c 三、栈的实际测试数据展示 3.1正常的出…

【图像分类】【深度学习】【Pytorch版本】 DenseNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】 DenseNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 DenseNet模型算法详解前言DenseNet讲解Dense Block(稠密块)Dense Layer(稠密层)Transition Layer 过渡层DenseNet模型结构 DenseNet Pytorch代码完整代码附加…

鱼fish数据集VOC+yolo-1400张(labelImg标注)

鱼类,是最古老的脊椎动物。易蓄积重金属。 部分不同染色体数目的杂交的后代依然有生育能力。它们几乎栖居于地球上所有的水生环境,从淡水的湖泊、河流到咸水的大海和大洋。 今天要介绍鱼的数据集。 数据集名称:鱼 fish 数据集格式&#xf…

五分钟快速掌握Maven的核心概念

前两天在一个技术群,有人还在问maven中groupId、artifactId、version这些关键字的含义是什么,于是,我觉得还是很有必要来聊聊Maven中的这些核心概念。 成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。 …

一次持续 15 年的网络安全“攻防之战”

2003 年 7-8 月,冲击波病毒爆发,对网络安全造成严重影响,尤其是校园网。冲击波病毒不仅使得校园网变得卡顿,还会在学生电脑上强制弹出一个倒计时窗口,60 秒后自动关机,给学生正常使用电脑和网络造成了极大不…

Visual Studio Code (Vscode)配置LaTeX

Visual Studio Code (Vscode)配置LaTeX 实操记录 第一步高效检索,找到官方的、靠谱的安装教程,最好多找几个,英文、中文教程都需要 LaTeX WorkshopInstallation and basic settingsHow to install LaTeX (with previews & autocomplete…

Godot导出Android包报错:无效的包名称

问题描述 使用Godot为项目导出Android平台包时报错,提示:“无效的包名称:项目名称不符合包名格式的要求。请显式指定包名。” 解决办法 修改导出配置项“包->唯一名称”。 该项缺省值“org.godotengine.$genname”不能直接使用&#x…

Paper Reading: (ACRST) 基于自适应类再平衡自训练的半监督目标检测

目录 简介工作重点方法CropBankFBRAFFRTwo-stage Pseudo-label Filtering 实验与SOTA比较消融实验 简介 题目:《Semi-Supervised Object Detection with Adaptive Class-Rebalancing Self-Training》,AAAI’22, 基于自适应类再平衡自训练的半…

外汇天眼:心理素质决定交易成败!

在交易市场中,参与者非常多,成功的却极少。 成功的交易者几乎完全凭借个人的聪明才智,迎难而上,依靠顽强的毅力、坚韧不拔的性格以及冒险精神,战胜自己交易路上的一切挫折。 而这其中交易者的心理素质与其盈亏紧密相关…

【复现】vid2vid_zero

问题及解决方法总结。 code:GitHub - baaivision/vid2vid-zero: Zero-Shot Video Editing Using Off-The-Shelf Image Diffusion Models 1.AttributeError: UNet2DConditionModel object has no attribute encoder 据说是预训练模型结构不匹配,偷懒把a…

架构师进阶,微服务设计与治理的 16 条常用原则

今天将从存储的上一层「服务维度」学习架构师的第二项常用能力 —— 微服务设计与治理。 如何设计合理的微服务架构? 如何保持微服务健康运行? 这是我们对微服务进行架构设计过程中非常关注的两个问题。 本文对微服务的生命周期定义了七个阶段&#x…

安装apisix详细教程

安装: docker安装ApiSi 常见问题-提前查阅 1-端口被占用 确保所需的所有端口(默认的 9080/9091/9443/2379/9000)未被其他系统/进程使用 #查询端口占用情况 netstat -antp |grep 9443 如果端口冲突可尝试修改apisix的端口配置, …

Vue 双向绑定:让数据与视图互动的魔法!(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站

WordPress是使用PHP语言开发的博客平台,在支持PHP和MySQL数据库的服务器上,您可以用WordPress架设自己的网站,也可以用作内容管理系统(CMS)。本教程介绍如何在CentOS 7.x操作系统的ECS实例上搭建WordPress网站。 背景…

springboot listener、filter登录实战

转载自&#xff1a; www.javaman.cn 博客系统访问&#xff1a; http://175.24.198.63:9090/front/index 登录功能 1、前端页面 采用的是layui-admin框架&#xff0c;文中的验证码内容&#xff0c;请参考作者之前的验证码功能 <!DOCTYPE html> <html lang"zh…

Java连接数据库的各种细节错误(细节篇)

目录 前后端联调&#xff08;传输文件&#xff09; ClassNotFoundException: SQLException: SQL语法错误: 数据库连接问题: 驱动问题: 资源泄露: 并发问题: 超时问题: 其他库冲突: 配置问题: 网络问题: SSL/TLS问题: 数据库权限问题: 驱动不兼容: 其他未知错误…

Docker-compose单机容器编排

YML文件是什么&#xff1f; YAML文件是一种标记语言&#xff0c;以竖列的形式展示序列化的数据格式。可读性很高类似于json格式。语法简单。 YAML通过缩进来表示数据结构&#xff0c;连续的项目用-符号来表示。 YML文件使用的注意事项 1、 大小写敏感 2、 通过缩进表示层级…

JavaScript实现飘窗功能

实现飘窗功能很简单 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…